Thema: Delphi E-Mail verschicken

Einzelnen Beitrag anzeigen

Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: E-Mail verschicken

  Alt 25. Jan 2008, 09:11
Kannst auch diesen Code nehmen und leicht anpassen:

Delphi-Quellcode:

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;
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat