![]() |
MapiSendMail, Festellen welcher Empfänger angegeben wurde
Hallo,
ich verschicke per
Delphi-Quellcode:
und das funktioniert in so weit auch ganz gut. Durch das Öffnen des Outlook-Fensters hat der Anwender noch die Möglichkeit, weitere Empfänger einzufügen. Wie kann ich jetzt feststellen, welches die letztlich verwendeten Empfänger waren? In Receip.lpszName stehen immer noch nur die, die ich eingefügt habe
function TuHilfs1.SendEMail(Handle: THandle; var Mail: TStringlist): Cardinal;
type TAttachAccessArray = array [0..0] of TMapiFileDesc; PAttachAccessArray = ^TAttachAccessArray; var MapiMessage: TMapiMessage; Receip: TMapiRecipDesc; Attachments: PAttachAccessArray; AttachCount: Integer; i1: integer; FileName: string; dwRet: Cardinal; MAPI_Session: Cardinal; WndList: Pointer; sTo : PAnsiChar; begin dwRet := MapiLogon(Handle, PAnsiChar(''), PAnsiChar(''), MAPI_LOGON_UI or MAPI_NEW_SESSION, 0, @MAPI_Session); if (dwRet <> SUCCESS_SUCCESS) then begin MessageBox(Handle, PChar('Error while trying to send email'), PChar('Error'), MB_ICONERROR or MB_OK); end else begin FillChar(MapiMessage, SizeOf(MapiMessage), #0); Attachments := nil; FillChar(Receip, SizeOf(Receip), #0); if Mail.Values['to'] <> '' then begin Receip.ulReserved := 0; Receip.ulRecipClass := MAPI_TO; Receip.lpszName := StrNew(PAnsiChar(AnsiString(Mail.Values['to']))); Receip.lpszAddress := StrNew(PAnsiChar(AnsiString('SMTP:' + Mail.Values['to']))); Receip.ulEIDSize := 0; MapiMessage.nRecipCount := 1; MapiMessage.lpRecips := @Receip; end; AttachCount := 0; for i1 := 0 to MaxInt do begin if Mail.Values['attachment' + IntToStr(i1)] = '' then break; Inc(AttachCount); end; if AttachCount > 0 then begin GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount); for i1 := 0 to AttachCount - 1 do begin FileName := Mail.Values['attachment' + IntToStr(i1)]; Attachments[i1].ulReserved := 0; Attachments[i1].flFlags := 0; Attachments[i1].nPosition := ULONG($FFFFFFFF); Attachments[i1].lpszPathName := StrNew(PAnsiChar(AnsiString(FileName))); Attachments[i1].lpszFileName := StrNew(PAnsiChar(AnsiString(ExtractFileName(FileName)))); Attachments[i1].lpFileType := nil; end; MapiMessage.nFileCount := AttachCount; MapiMessage.lpFiles := @Attachments^; end; if Mail.Values['subject'] <> '' then MapiMessage.lpszSubject := StrNew(PAnsiChar(AnsiString(Mail.Values['subject']))); if Mail.Values['body'] <> '' then MapiMessage.lpszNoteText := StrNew(PAnsiChar(AnsiString(Mail.Values['body']))); WndList := DisableTaskWindows(0); try { Achtung MaQMa ist nicht bedienbar, bis die Mail wieder geschlossen ist } Result := MapiSendMail(MAPI_Session, Handle, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0); finally sTo := Receip.lpszName; //:= StrNew(PAnsiChar(AnsiString(Mail.Values['to']))); Mail.Values['to'] := sTo; sTo := Receip.lpszAddress; //:= StrNew(PAnsiChar(AnsiString(Mail.Values['to']))); Mail.Values['to'] := sTo; EnableTaskWindows( WndList ); end; for i1 := 0 to AttachCount - 1 do begin StrDispose(Attachments[i1].lpszPathName); StrDispose(Attachments[i1].lpszFileName); end; if Assigned(MapiMessage.lpszSubject) then StrDispose(MapiMessage.lpszSubject); if Assigned(MapiMessage.lpszNoteText) then StrDispose(MapiMessage.lpszNoteText); if Assigned(Receip.lpszAddress) then StrDispose(Receip.lpszAddress); if Assigned(Receip.lpszName) then StrDispose(Receip.lpszName); MapiLogOff(MAPI_Session, Handle, 0, 0); end; end; Danke für eure Tips Gerd |
AW: MapiSendMail, Festellen welcher Empfänger angegeben wurde
Hallo!
Zitat:
Falls du das hinbekommst, wäre ich froh um eine kurze Nachricht, den sowas bräuchte ich auch :) Gruß aus den Bergen Günter |
AW: MapiSendMail, Festellen welcher Empfänger angegeben wurde
hoi,
du könntest evtl. auch ![]() Das öffnet den Dialog zum hinzufügen von Empfängern. Du kannst deine Liste übergeben und anzeigen und erhälst am Ende eine finale Liste (also falls der User einen Empfänger hinzugefügt hat). in etwa so ...
Delphi-Quellcode:
vielleicht kannst Du damit weiter arbeiten.
if Mail.Values['to'] <> '' then
begin Receip.ulReserved := 0; Receip.ulRecipClass := MAPI_TO; Receip.lpszName := StrNew(PAnsiChar(AnsiString(Mail.Values['to']))); Receip.lpszAddress := StrNew(PAnsiChar(AnsiString('SMTP:' + Mail.Values['to']))); Receip.ulEIDSize := 0; MapiMessage.nRecipCount := 1; MapiMessage.lpRecips := @Receip; end; MapiAddress( MAPI_Session, Handle, 'Empfänger', 1, // ein Textfeld nur fuer "To" '', 1, // deine bisherige anzahl Receip, // deine bisherige liste 0 , 0 , @new_count, // neue anzahl new_list ); // neue liste MapiMessage.nRecipCount := new_count ; MapiMessage.lpRecips := new_list; AttachCount := 0; cya |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz