Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi EMail-Versand via SMTP/Mapi (https://www.delphipraxis.net/189597-email-versand-via-smtp-mapi.html)

dataspider 29. Jun 2016 17:13

AW: EMail-Versand via SMTP/Mapi
 
Herzlichen Dank an Martin und Sir Rufo...

Ich habe es gerade mal getestet. Funktioniert!

Frank

BerTa 1. Jul 2016 13:52

AW: EMail-Versand via SMTP/Mapi
 
Hi,
vielen Dank für die Hilfe,
mit Imap hatten wir es auch schonmal probiert.
Hatten, bzw. haben gelegentlich das Problem, dass sich unser Programm aufhängt.
Der Versand per SMTP hat geklappt, aber im Versand Ordner ist keine Kopie zu finden.
Er scheint sich beim Connect aufzuhängen.
Woran kann sowas liegen? Es kommt nicht immer vor.

Sir Rufo 1. Jul 2016 15:03

AW: EMail-Versand via SMTP/Mapi
 
IdR müsste der Connect auch einen Timeout haben. Wenn der aber default auf
Delphi-Quellcode:
INFINITE
steht, dann wartest du eben bis "end of days" :stupid:

Also TimeOut für den Connect mitgeben und entsprechend darauf reagieren.

Es macht da durchaus Sinn mit entsprechenden Warteschlangen zu arbeiten, die von den beiden Diensten Sende per SMTP, Verschiebe in Versand-Ordner (laufen jeweils im eigenen Thread) abgearbeitet werden.

Die Daten liegen dafür lokal auf der Platte und werden dann wenn möglich abgearbeitet. Stürzt dein Programm ab, dann wird beim nächsten Start einfach an der Stelle weitergemacht ;)

BerTa 4. Jul 2016 10:32

AW: EMail-Versand via SMTP/Mapi
 
Nach einem Neustart des Programms habe ich keine Probleme ein EMail zu versenden.
Wenn ich aber die IMAP Daten den Bediener zuordnen will und die MailBoxen abfragen, bekomme ich danach Probleme beim Versenden -> ReadTimeOut
Schon merkwürdig, dass es in der Konstellation immer auftritt.

Code:
  IMAP := TIdIMAP4.Create(nil);
  IMAP.Host    := bedDM.MyQBedimap_server.Value;
  IMAP.Port    := bedDM.MyQBedimap_port.Value;
  IMAP.Username := bedDM.MyQBedimap_account.Value;
  IMAP.Password := bedDM.MyQBedimap_pw.Value;
  //LTheSASLListEntry := TheSmtp.FSASLMechanisms.Add;
  //LTheSASLListEntry.SASL := TheSASLLogin;
  IMAP.ReadTimeout   := 10000;
  IMAP.ConnectTimeout := 10000;
  if IMAP.Connect then
  begin
    IMAP.ListMailBoxes(UsersFolders);
    for i := 0 to UsersFolders.Count-1 do
      cxComboIMAPSent.Properties.Items.Add(UsersFolders[i]);
    IMAP.Disconnect;
  end;

  if IMAP <> nil then
  begin
    IMAP.Free;
    IMAP := nil;
  end;
Code:
  IMAP := TIdIMAP4.Create(self);

  IMAP.Host := ApsToolDM.MyQBedDatenimap_server.Value;
  IMAP.Port := ApsToolDM.MyQBedDatenimap_port.Value;
  IMAP.Username := ApsToolDM.MyQBedDatenimap_account.Value;
  IMAP.Password := ApsToolDM.MyQBedDatenimap_pw.Value;
  IMAP.ReadTimeout   := 5000;
  IMAP.ConnectTimeout := 5000;
  if IMAP.Connect then
  begin
    Imap.AppendMsg(APsToolDM.MyQBedDatenimap_sent.Value,IdMsgSend,NIL,[mfseen]);
    if IMAP.Connected then
      IMAP.Disconnect;
  end;
  if IMAP <> nil then
  begin
    IMAP.Free;
    IMAP := nil;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz