[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