uses
...,
Mapi, ... ;
// email senden
procedure TMyForm.SendEmail();
var
MapiMessage: TMapiMessage;
MapiRecipDesc: TMapiRecipDesc;
MError: Cardinal;
EmailAdresse:
string;
targetWnd: HWND;
begin
EmailAdresse := EdEmpfaenger.Text;
// Empfänger setzen
FillChar(MapiRecipDesc, SizeOf(TMapiRecipDesc), 0);
with MapiRecipDesc
do
begin
ulReserved := 0;
ulRecipClass := MAPI_TO;
lpszName := PAnsiChar(EmailAdresse);
lpszAddress :=
nil;
ulEIDSize := 0;
lpEntryID :=
nil;
end;
// Nachricht setzen
FillChar(MapiMessage, SizeOf(TMapiMessage), 0);
with MapiMessage
do
begin
ulReserved := 0;
lpszSubject :=
nil;
// kein Subject
lpszNoteText :=
nil;
// kein Mailtext
lpszMessageType :=
nil;
lpszDateReceived :=
nil;
lpszConversationID :=
nil;
flFlags := 0;
lpOriginator :=
nil;
nRecipCount := 1;
// nRecipCount muß auf Anzahl der MapiRecipDesc gesetzt werden;
lpRecips := @MapiRecipDesc;
// lpRecips muß auf die Adresse MapiRecipDesc gesetzt werden;
nFileCount := 0;
// kein Attachement
lpFiles :=
nil;
end;
// Nachricht senden
MError := MapiSendMail(0, Application.Handle, MapiMessage, MAPI_DIALOG
or MAPI_LOGON_UI
or MAPI_NEW_SESSION, 0);
if MError <> 0
then
begin
FoLog.log ('
Email konnte nicht gesendet werden');
end;
// "<ALT> + R" ans Email-Fenster senden (Fokus auf "Betreff" setzen)
targetWnd := FindWindow(
nil, '
Verfassen: (kein Betreff)');
// Email-Fenster finden
if targetwnd <> 0
then
begin
SetForegroundWindow(targetwnd);
// Email-Fenster in den Vordergrund holen
sleep(50);
// damit das Fenster Zeit hat, in den Vordergrund zu kommen
keybd_event(VK_MENU, 0, 0, 0);
// <ALT> drücken
keybd_event(Ord('
R'), 0, 0, 0);
// "R" drücken
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
// <ALT> loslassen
keybd_event(Ord('
R'), 0, KEYEVENTF_KEYUP, 0);
// "R" loslassen
end;
end;