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 <[email protected]
<mailto:[email protected]>> 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
<[email protected] <mailto:[email protected]>> 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 <[email protected]
<mailto:[email protected]>> 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: [email protected]
<mailto:[email protected]>
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to
[email protected]
<mailto:[email protected]> with
Subject: unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post:[email protected] <mailto:[email protected]>
Admin:http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email [email protected]
<mailto:[email protected]> 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: [email protected]
<mailto:[email protected]>
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to [email protected]
<mailto:[email protected]> with Subject:
unsubscribe
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: [email protected]
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to [email protected] 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: [email protected]
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to [email protected] with
Subject: unsubscribe