AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authenti
Thema durchsuchen
Ansicht
Themen-Optionen

E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authenti

Ein Thema von padavan · begonnen am 15. Dez 2009 · letzter Beitrag vom 17. Dez 2009
Antwort Antwort
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#1

E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authenti

  Alt 15. Dez 2009, 15:53
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:
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;
Leider funktioniert das nur, wenn ich einen hier in unserer Firma verfügbaren SMPT-Server ohne jegliche Authentifizierung nutze.

Wenn ich allerdings einen Provider (z.B. Yahoo oder GMX) nutzen möchte, dann bekomme ich immer die Fehlermeldung:
Zitat:
EIDProtocolReplyError with message '5.1.7 Complete adress with domain....' (siehe Anhang)
Nebenbei:
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
Miniaturansicht angehängter Grafiken
indy_exception_855.jpg  
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 15. Dez 2009, 15:55
Was gibst du als Benutzername an?
Markus Kinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 15. Dez 2009, 16:33
Zitat von padavan:
EIDProtocolReplyError with message '5.1.7 Complete adress with domain....' (siehe Anhang)
Das bedeutet, dass sich der Client ungefähr so beim Server bekanntmacht:
Code:
HELO MeinRechner
Der Server möchte aber den gesamten Rechnernamen haben:
Code:
HELO MeinRechner.kabelbw.de
Du musst der IdSMTP-Komponente den Rechnername über das Property HeloName setzen.
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.
Andreas
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 16. Dez 2009, 08:08
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?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 16. Dez 2009, 16:10
Zitat von padavan:
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).
Du könntest mal den Netzwerkverkehr mit tcpTrace mitschneiden.
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.
Andreas
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 16. Dez 2009, 17:55
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.
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 17. Dez 2009, 08:13
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:
oberer output:

....//intime Details habe ich erstmal rausgelassen...


Subject: Test
Date: Thu, 17 Dec 2009 07:53:54 +0100
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_0018_01CA7EEE.14B6A1F0"
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.5512
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

This is a multi-part message in MIME format.

------=_NextPart_000_0018_01CA7EEE.14B6A1F0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

E-Mail
------=_NextPart_000_0018_01CA7EEE.14B6A1F0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.5626" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>E-Mail</FONT></DIV></BODY></HTML>

------=_NextPart_000_0018_01CA7EEE.14B6A1F0--

.
QUIT

unterer output:
220 mail.gmx.net GMX Mailservices ESMTP {mp059}
250-mail.gmx.net GMX Mailservices
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-SIZE
250-AUTH=LOGIN PLAIN
250-AUTH LOGIN PLAIN
250 STARTTLS
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 2.7.0 Go ahead {mp059}
250 2.1.0 ok {mp059}
250 2.1.5 ok {mp059}
354 mail.gmx.net Go ahead {mp059}
250 2.6.0 Message accepted {mp059}
221 2.0.0 GMX Mailservices {mp059}
Wenn ich es allerding meiner SendMail Routine nachschalte, kommen meine Fehlermeldungen, aber nichts kommt bei tcpTrace an!!! Das finde ich eigenartig. (Mit unserem Hausinternen Mailserver ohne Authentifizierung klappts aber....)
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 17. Dez 2009, 13:32
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:
EHLO Rechnername
und nicht

Zitat:
HELO Rechnername

soll das so sein????
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: E-Mail mit TIdSMTP funzt nur über Mailserver ohne Authen

  Alt 17. Dez 2009, 14:41
Zitat von padavan:
Zitat:
EHLO Rechnername
und nicht
Zitat:
HELO Rechnername
soll das so sein????
Ja, HELO XY bedeutet "Hallo, ich bin der Rechner XY und möchte jetzt mit Dir reden"
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.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 Uhr.
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