Nabend zusammen,
ich arbeite noch mit Delphi 7 (ja, funzt noch) und habe bisher unter Win10 keine Probleme mit dem
MAPI Mailversand mit folgender Proc gehabt. Unter Win11 gehts nicht mehr; ich kriege keine Fehlermeldung, aber die Mail geht nicht raus. Ich habe Thunderbird als MailTo Standard-Client gesetzt und mit
shellexecute(0, 'open', PChar(mmail), '', '', SW_NORMAL);
wird auch TB aufgerufen. Aber warum geht das verdammte
MAPI nicht?
Schon mal Danke für Eure Mühe.
BG Zongo
Delphi-Quellcode:
function SendFileMail(
const FileName: TFileName;
const Subject, BodyText,
RecipAdress:
String; bccx:boolean ):
String;
(* die registry muss folgende Werte aufweisen:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Messaging Subsystem\MAPI="1"
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows Messaging Subsystem\MAPI="1"
*)
var
mMessage: TMapiMessage;
mlpFiles: TMapiFileDesc;
mRecips: TMapiRecipDesc;
begin
if not FileExists(FileName)
and (filename<>'
')
then
begin
Result := '
File "' + FileName + '
" not found!';
Exit;
end;
with mRecips
do
begin
if not bccx
then ulRecipClass := MAPI_TO
else ulRecipClass := MAPI_BCC;
lpszName := PChar(RecipAdress);
lpszAddress := PChar(RecipAdress);
ulEIDSize := 0;
lpEntryID :=
nil;
end;
with mlpFiles
do
begin
flFlags := 0;
nPosition := 0;
lpszPathName := PChar(FileName);
lpszFileName :=
nil;
lpFileType :=
nil;
end;
with mMessage
do
begin
lpszSubject := PChar(Subject);
lpszNoteText := PChar(BodyText);
lpszMessageType :=
nil;
lpszDateReceived :=
nil;
lpszConversationID :=
nil;
flFlags := 0;
lpOriginator :=
nil;
nRecipCount := 1;
lpRecips := @mRecips;
nFileCount := 1;
lpFiles := @mlpFiles;
if filename='
'
then lpFiles:=
nil;
// if html then lpszNoteText:=nil; // dann wird der Anhang als HTML Message-Text benutzt
end;
case MapiSendMail(0, 0, mMessage, MAPI_LOGON_UI
or MAPI_NEW_SESSION, 0)
of
MAPI_E_AMBIGUOUS_RECIPIENT:
begin
Result := '
A recipient matched more than one of the recipient descriptor structures and MAPI_DIALOG was not set!';
mmonitor('
SendFileMail answer: A recipient matched more than one of the recipient descriptor structures and MAPI_DIALOG was not set!');
end;
MAPI_E_ATTACHMENT_NOT_FOUND:
begin
Result := '
The specified attachment was not found!';
mmonitor('
SendFileMail answer: The specified attachment was not found!');
end;
MAPI_E_ATTACHMENT_OPEN_FAILURE:
begin
Result := '
The specified attachment could not be opened!';
mmonitor('
SendFileMail answer: The specified attachment could not be opened!');
end;
MAPI_E_BAD_RECIPTYPE:
begin
Result := '
The type of a recipient was not MAPI_TO, MAPI_CC, or MAPI_BCC!';
mmonitor('
SendFileMail answer: The type of a recipient was not MAPI_TO, MAPI_CC, or MAPI_BCC!');
end;
MAPI_E_FAILURE:
begin
Result := '
One or more unspecified errors occurred!';
mmonitor('
SendFileMail answer: One or more unspecified errors occurred!');
end;
MAPI_E_INSUFFICIENT_MEMORY:
begin
Result := '
There was insufficient memory to proceed!';
mmonitor('
SendFileMail answer: There was insufficient memory to proceed!');
end;
MAPI_E_LOGIN_FAILURE:
begin
Result := '
There was no default logon, and the user failed to log on successfully when the logon dialog box was displayed!';
mmonitor('
SendFileMail answer: There was no default logon, and the user failed to log on successfully when the logon dialog box was displayed!');
end;
MAPI_E_TEXT_TOO_LARGE:
begin
Result := '
The text in the message was too large to sent!';
mmonitor('
SendFileMail answer: The text in the message was too large to sent!');
end;
MAPI_E_TOO_MANY_FILES:
begin
Result := '
There were too many file attachments!';
mmonitor('
SendFileMail answer: There were too many file attachments!');
end;
MAPI_E_TOO_MANY_RECIPIENTS:
begin
Result := '
There were too many recipients!';
mmonitor('
SendFileMail answer: There were too many recipients!');
end;
MAPI_E_UNKNOWN_RECIPIENT:
begin
Result := '
A recipient did not appear in the address list!';
mmonitor('
SendFileMail answer: A recipient did not appear in the address list!');
end;
MAPI_E_USER_ABORT:
begin
Result := '
The user canceled one of the dialog boxes!';
mmonitor('
SendFileMail answer: The user canceled one of the dialog boxes!');
end;
end;
end;
// von sendfilemail