![]() |
E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authenti
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP User,
mit dieser Funktion (hier in DP gefunden und meinen Bedürfnissen angepasst), möchte bzw. muss ich E-Mails von meinem Programm heraus versenden, ohne einen lokales Outlook oder ähnliches zu nutzen:
Delphi-Quellcode:
Leider funktioniert das nur, wenn ich einen hier in unserer Firma verfügbaren SMPT-Server ohne jegliche Authentifizierung nutze.
uses
IdSMTP, IdMessage, idPop3; // Indy 9.14 //...... procedure SendMail(aSmtpServerName: string; aSmtpAuthType: integer; aSmtpServerPort: integer; aPopServerName: string; aPopServerPort: integer; aRecipient: string; aFrom: string; aSmtpServerUser: string; aSmtpServerPassword: string; aSubject: string; aContent: string ); var IdSMTP1: TIdSMTP; IdMessage1: TIdMessage; POP: TidPop3; begin try IdSMTP1 := TIdSMTP.Create(nil); IdMessage1 := TIdMessage.Create(nil); IdMessage1.Clear; POP := TidPop3.create(nil); try case aSmtpAuthType of 0: IdSMTP1.AuthenticationType := atNone; //Normal 1: IdSMTP1.AuthenticationType := atLogin; //SMTPAuth Simple Login 2: begin //AfterPop IdSMTP1.AuthenticationType := atNone; POP.Host := aPopServerName; POP.Username := aSmtpServerUser; POP.Password := aSmtpServerPassword; POP.Port := aPopServerPort; POP.Connect(5); POP.Disconnect; end; 3: begin //afterPop+SMTPAuth IdSMTP1.AuthenticationType := atLogin; POP.Host := aPopServerName; POP.Username := aSmtpServerUser; POP.Password := aSmtpServerPassword; POP.Port := aPopServerPort; POP.Connect(5); POP.Disconnect; end; end; with IdMessage1 do begin Body.Text := aContent; // Body.Assign(stringlist); From.Text := aFrom; //Sender Recipients.EMailAddresses := aRecipient; //Empfänger Subject := aSubject; //Betreff? end; IdSMTP1.Username := aSmtpServerUser; //Welcher Benutzer? IdSMTP1.Password := aSmtpServerPassword; //Welches Passwort?? // Generelles Setup IdSMTP1.Host := aSmtpServerName; //Provider IdSMTP1.Port := aSmtpServerPort; //Port IdSMTP1.Connect; try IdSMTP1.Send(IdMessage1); finally IdSMTP1.Disconnect; end; finally freeandnil(IdSMTP1); freeandnil(IdMessage1); end; except showmessage('unknown error'); end; end; Wenn ich allerdings einen Provider (z.B. Yahoo oder GMX) nutzen möchte, dann bekomme ich immer die Fehlermeldung: Zitat:
1. Port 25 und 110 sind für mich offen. 2. Ich habe die vom Provider erforderlichen Einstellungen gemacht. Ob dies grundsätzlich funktioniert, habe ich dann mit Outlook Express getestet. Ich frage mich allerdings während ich das tippe, ob wohl die Indy Komponente alle möglichen Typen unterstützt? ('aSmtpAuthType') Kann mir evtl. jemand sagen, woran das liegt? Danke Padavan |
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Was gibst du als Benutzername an?
|
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Zitat:
Code:
Der Server möchte aber den gesamten Rechnernamen haben:
HELO MeinRechner
Code:
Du musst der IdSMTP-Komponente den Rechnername über das Property HeloName setzen.
HELO MeinRechner.kabelbw.de
Falls HeloName leer bleibt, wird nur dein lokaler Rechnername (ohne Domänenanteil) verwendet. Wahrscheinlich prüfen Yahoo & GMX ob der Rechnername deiner IP-Adresse entspricht. |
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Hm, das klang erst mal vielversprechend. Leider kommt exakt die gleiche Fehlermeldung wieder.
Den genauen Domainnamen meiner Firma habe ich über Denic.de bezogen (um sicherzugehen). Wie macht das eigentlich zum Beispiel Outlook, dort muss ich ja auch nicht den Domainnamen meiner derzeitigen IP angeben. Oder macht das Outlook selbstständig? |
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Zitat:
![]() Als Port-Adresse trägst du beide Male 25 (=SMTP) ein. Destination Server ist dein Mail-Server (z.B. mail.gmx.net). Dein Programm soll sich dann nicht direkt mit dem Mailserver verbinden, sondern der Host ist nun "localhost". Das Programm tcpTrace sitzt nun in der Mitte und zeichnet alles auf. |
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Hallo,
eventuell benötigt der Mailserver vor dem Versand über smtp eine Anmeldung über pop3. Outlook macht das dann selbständig. Wie's mit den Indy's geht, weiß ich so aus dem Ärmel nicht. |
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Guten Morgen,
@nahpets -> ich habe diese Variante mit im Angebot. Also im konkreten Fall, wäre das Case 2 bzw 3 "meiner" SendMail Routine. Ist halt die Frage, ob die Indy's das wirklich können. Oder es sind noch Parameter zu setzen, welche ich nicht kenne. Bin in der Beziehung leider kein Wissender.... @shmia -> Habe das Programm tcpTrace mal ausprobiert (echt super) und gleich eine Entdeckung gemacht. Wenn ich es mit Outlook Express kombiniere, kann ich gleich ein sinnvollen Log in der Art erkennen: Zitat:
|
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Ach ich bin ein Rindviech.
Natürlich kommt was bei tcpTrace an. (Sofern man localhost richtig schreiben kann) Aber das löst mein Problem natürlich nicht. Was mir auffällt, tcpTrace zeigt im Output in der obersten Zeilte immer Zitat:
Zitat:
soll das so sein???? |
Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen
Zitat:
EHLO XY bedeutet Extended HELO also "Hallo ich bin der Rechner XY und möchte mich mit User und Passwort anmelden" Wichtig ist wohl, dass der Rechnername inklusive Domänennamen gesendet wird. Im Rechnername sollten also zwei Punkte stehen. Vergleiche das mal mit dem was Outlook schickt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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