[DUG] Open new email in default browser

Robert Martin rob at chreos.co.nz
Thu Jul 28 16:43:59 NZST 2016


I use Thunderbird and it works like a charm with that too !


On 28/07/2016 4:40 PM, Jolyon Direnko-Smith wrote:
> It's been years since I even looked at MAPI but I always thought it 
> was an MS/Outlook/Exchange technology.  O.o
>
> What happens these days to an app sending mail using MAPI if a user is 
> not using Outlook / Exchange ?
>
> On 28 July 2016 at 16:10, Robert Martin <rob at chreos.co.nz 
> <mailto:rob at chreos.co.nz>> wrote:
>
>     Hi Joylon
>
>     No problem !
>
>     I usually use Indy to send emails but in this case I wanted to use
>     the default email client.  I HAVE found some MAPI code that seems
>     to work!  I am working through it now.  Third time lucky :)
>
>     Code below for others (in its cut and paste format) ...
>
>     procedure ArtMAPISendMail(
>                 const Subject, MessageText, MailFromName, MailFromAddress,
>                       MailToName, MailToAddress: String;
>                 const AttachmentFileNames: array of String);
>     //Originally by Brian Long: The Delphi Magazine issue 60 - Delphi
>     And Email
>     var
>       MAPIError: DWord;
>       MapiMessage: TMapiMessage;
>       Originator, Recipient: TMapiRecipDesc;
>       Files, FilesTmp: PMapiFileDesc;
>       FilesCount: Integer;
>     begin
>        FillChar(MapiMessage, Sizeof(TMapiMessage), 0);
>
>        MapiMessage.lpszSubject := PAnsiChar(AnsiString(Subject));
>        MapiMessage.lpszNoteText := PAnsiChar(AnsiString(MessageText));
>
>        FillChar(Originator, Sizeof(TMapiRecipDesc), 0);
>
>        Originator.lpszName := PAnsiChar(AnsiString(MailFromName));
>        Originator.lpszAddress := PAnsiChar(AnsiString(MailFromAddress));
>     //   MapiMessage.lpOriginator := @Originator;
>        MapiMessage.lpOriginator := nil;
>
>
>        MapiMessage.nRecipCount := 1;
>        FillChar(Recipient, Sizeof(TMapiRecipDesc), 0);
>        Recipient.ulRecipClass := MAPI_TO;
>        Recipient.lpszName := PAnsiChar(AnsiString(MailToName));
>        Recipient.lpszAddress := PAnsiChar(AnsiString(MailToAddress));
>        MapiMessage.lpRecips := @Recipient;
>
>        MapiMessage.nFileCount := High(AttachmentFileNames) -
>     Low(AttachmentFileNames) + 1;
>        Files := AllocMem(SizeOf(TMapiFileDesc) * MapiMessage.nFileCount);
>        MapiMessage.lpFiles := Files;
>        FilesTmp := Files;
>        for FilesCount := Low(AttachmentFileNames) to
>     High(AttachmentFileNames) do
>        begin
>          FilesTmp.nPosition := $FFFFFFFF;
>          FilesTmp.lpszPathName :=
>     PAnsiChar(AnsiString(AttachmentFileNames[FilesCount]));
>          Inc(FilesTmp)
>        end;
>
>        try
>          MAPIError := MapiSendMail(
>            0,
>            Application.MainForm.Handle,
>            MapiMessage,
>            {MAPI_LOGON_UI or }{MAPI_NEW_SESSION} MAPI_DIALOG,
>            0);
>        finally
>          FreeMem(Files)
>        end;
>
>        case MAPIError of
>          MAPI_E_AMBIGUOUS_RECIPIENT:
>           Showmessage('A recipient matched more than one of the
>     recipient descriptor structures and MAPI_DIALOG was not set. No
>     message was sent.');
>          MAPI_E_ATTACHMENT_NOT_FOUND:
>           Showmessage('The specified attachment was not found; no
>     message was sent.');
>          MAPI_E_ATTACHMENT_OPEN_FAILURE:
>           Showmessage('The specified attachment could not be opened;
>     no message was sent.');
>          MAPI_E_BAD_RECIPTYPE:
>           Showmessage('The type of a recipient was not MAPI_TO,
>     MAPI_CC, or MAPI_BCC. No message was sent.');
>          MAPI_E_FAILURE:
>           Showmessage('One or more unspecified errors occurred; no
>     message was sent.');
>          MAPI_E_INSUFFICIENT_MEMORY:
>           Showmessage('There was insufficient memory to proceed. No
>     message was sent.');
>          MAPI_E_LOGIN_FAILURE:
>           Showmessage('There was no default logon, and the user failed
>     to log on successfully when the logon dialog box was displayed. No
>     message was sent.');
>          MAPI_E_TEXT_TOO_LARGE:
>           Showmessage('The text in the message was too large to sent;
>     the message was not sent.');
>          MAPI_E_TOO_MANY_FILES:
>           Showmessage('There were too many file attachments; no
>     message was sent.');
>          MAPI_E_TOO_MANY_RECIPIENTS:
>           Showmessage('There were too many recipients; no message was
>     sent.');
>          MAPI_E_UNKNOWN_RECIPIENT:
>            Showmessage('A recipient did not appear in the address
>     list; no message was sent.');
>          MAPI_E_USER_ABORT:
>            Showmessage('The user canceled the process; no message was
>     sent.');
>          SUCCESS_SUCCESS:
>            Showmessage('MAPISendMail successfully sent the message.');
>        else
>          Showmessage('MAPISendMail failed with an unknown error code.');
>        end;
>     end;
>
>
>     On 28/07/2016 4:00 PM, Jolyon Direnko-Smith wrote:
>>     Ignore my previous response - it was just re-stating what you
>>     already learned.  Sorry 'bout that.
>>
>>     As for alternatives, is there any reason you must use the default
>>     email client and cannot simply construct and send an email using
>>     (e.g.) Indy SMTP or IMAP components, suitably configured ?
>>
>>
>>
>>     On 28 July 2016 at 15:58, Jolyon Direnko-Smith
>>     <jsmith at deltics.co.nz <mailto:jsmith at deltics.co.nz>> wrote:
>>
>>         The mailto URI scheme does not support attachments.
>>
>>         https://tools.ietf.org/html/rfc6068
>>
>>         Specific email clients may provide extensions to the URI
>>         scheme that allow that email client to support attachments
>>         via a mailto: URI but by definition these extensions will not
>>         be universally supported and so fail the test of "working
>>         with the user's default email client (whatever that may be)".
>>
>>         On 28 July 2016 at 15:33, Robert Martin <rob at chreos.co.nz
>>         <mailto:rob at chreos.co.nz>> wrote:
>>
>>             Hi All
>>
>>             I am trying to open the default system email client with
>>             a new email
>>             (subject and attachment).  I know about MailTo but that
>>             doesn't support
>>             file attachments.  I have tried a couple of MAPI
>>             functions I got off the
>>             web but to no avail (one errors the other just runs and
>>             does nothing).
>>             Does anyone have code to do this?
>>
>>
>>             Cheers
>>
>>             Rob
>>
>>
>>             _______________________________________________
>>             NZ Borland Developers Group - Delphi mailing list
>>             Post: delphi at listserver.123.net.nz
>>             <mailto:delphi at listserver.123.net.nz>
>>             Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>             Unsubscribe: send an email to
>>             delphi-request at listserver.123.net.nz
>>             <mailto:delphi-request at listserver.123.net.nz> with
>>             Subject: unsubscribe
>>
>>
>>
>>
>>
>>
>>     _______________________________________________
>>     NZ Borland Developers Group - Delphi mailing list
>>     Post:delphi at listserver.123.net.nz <mailto:delphi at listserver.123.net.nz>
>>     Admin:http://delphi.org.nz/mailman/listinfo/delphi
>>     Unsubscribe: send an email todelphi-request at listserver.123.net.nz
>>     <mailto:delphi-request at listserver.123.net.nz>  with Subject: unsubscribe
>>
>>
>>     No virus found in this message.
>>     Checked by AVG - www.avg.com <http://www.avg.com>
>>     Version: 2016.0.7690 / Virus Database: 4627/12695 - Release Date:
>>     07/27/16
>>
>
>
>     _______________________________________________
>     NZ Borland Developers Group - Delphi mailing list
>     Post: delphi at listserver.123.net.nz
>     <mailto:delphi at listserver.123.net.nz>
>     Admin: http://delphi.org.nz/mailman/listinfo/delphi
>     Unsubscribe: send an email to delphi-request at listserver.123.net.nz
>     <mailto:delphi-request at listserver.123.net.nz> with Subject:
>     unsubscribe
>
>
>
>
> _______________________________________________
> NZ Borland Developers Group - Delphi mailing list
> Post: delphi at listserver.123.net.nz
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at listserver.123.net.nz with Subject: unsubscribe
>
>
> No virus found in this message.
> Checked by AVG - www.avg.com <http://www.avg.com>
> Version: 2016.0.7690 / Virus Database: 4627/12695 - Release Date: 07/27/16
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20160728/580a764b/attachment.html 


More information about the Delphi mailing list