[DUG] Open new email in default browser
Jolyon Direnko-Smith
jsmith at deltics.co.nz
Thu Jul 28 16:40:07 NZST 2016
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> 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>
> 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> 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
>>> Admin: http://delphi.org.nz/mailman/listinfo/delphi
>>> Unsubscribe: send an email to 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
> 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
> Admin: http://delphi.org.nz/mailman/listinfo/delphi
> Unsubscribe: send an email to delphi-request at listserver.123.net.nz with
> Subject: unsubscribe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20160728/24f633e0/attachment-0001.html
More information about the Delphi
mailing list