AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Authentifiziertes SMTP

Ein Thema von Jerry · begonnen am 21. Sep 2010 · letzter Beitrag vom 21. Sep 2010
Antwort Antwort
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#1

Authentifiziertes SMTP

  Alt 21. Sep 2010, 11:26
Hallo zusammen
Habe ein kleines Testprogramm erstellt, das ein Mailaccount testet.
Ich möchte das Programm mit authifiziertem SMTP erweitern.
Ich habe nun in meinem Programm folgende Code eingebaut:
Delphi-Quellcode:
    if chkb_Auth.Checked then
    begin
      IdSMTP1.Authenticate;
    end;
Jetzt erscheint immer die Meldung:
Connection Closes Gracefully.

Der ganze Code sieht so aus:
Delphi-Quellcode:
procedure Tfrm_POP3SMTPTester.btn_SendMailClick(Sender: TObject);
var
  m: TIdMessage;
begin
  try
    if IdSMTP1.Connected then
      IdSMTP1.Disconnect;
    IdSMTP1.Port := StrToInt(edt_SMTPPort.Text);
    IdSMTP1.Host := edt_SMTPHost.Text;
    if chkb_Auth.Checked then
    begin
      IdSMTP1.Authenticate;
    end;
    IdSMTP1.Username := edt_SMTPUser.Text;
    IdSMTP1.Password := edt_SMTPPassWort.Text;
    IdSMTP1.Connect; // (4000);
    if IdSMTP1.Connected = True then
    begin
      m := TIdMessage.Create(self);
      m.From.Text := edt_from.Text;
      m.Recipients.Add.Text := edt_to.Text;
      m.Subject := 'TestMail from SMTP Checker';
      m.Body.Text := 'Dieses Mail wurde zu Testzwecken versendet';
      IdSMTP1.Send(m);
      IdSMTP1.Disconnect;
      showmessage('Das Mail wurde erfolgreich versendet!');
    end;
  except
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdPOP3Exception do
      Writeln(E.Message);
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdDoesNotSupportAPOP do
      Writeln(E.Message);
    on E: EIdUnrecognizedReply do
      Writeln(E.Message);
    on E: EIdTLSClientException do
      Writeln(E.Message);
    on E: EIdTLSClientSSLIOHandlerRequred do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileConnected do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNotAvailable do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNegCmdFailed do
      Writeln(E.Message);
    on E: EIdTLSClientTLSHandShakeFailed do
      Writeln(E.Message);
    on E: EIdTLSServerException do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileActive do
      Writeln(E.Message);
  end;
  if IdSMTP1.Connected then
    IdSMTP1.Disconnect;
end;
Weiss jemand rat, wie man sich richtig Authentifiziert?

Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#2

AW: Authentifiziertes SMTP

  Alt 21. Sep 2010, 11:29
Müsste man nicht Usernamen und Passwort setzen, bevor man sich authentifiziert?

P.S.: Nimm bitte den Vergleich auf true raus, das schmerzt in meinen Augen.

[edit] P.P.S.: http://www.indyproject.org/KB/index....entication.htm [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (21. Sep 2010 um 11:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.054 Beiträge
 
Delphi 12 Athens
 
#3

AW: Authentifiziertes SMTP

  Alt 21. Sep 2010, 11:33
Ich denk mal da hat jemand Recht
Zitat von Authenticate - Description::
Verifies whether the given user name and password are valid in the specified context.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Authentifiziertes SMTP

  Alt 21. Sep 2010, 11:37
Vielen Dank. Auch das mit dem True...

Habs geändert, respektive es war schon drin, geht aber immer noch nicht:
Delphi-Quellcode:
procedure Tfrm_POP3SMTPTester.btn_SendMailClick(Sender: TObject);
var
  m: TIdMessage;
begin
  try
    if IdSMTP1.Connected then
      IdSMTP1.Disconnect;
    IdSMTP1.Port := StrToInt(edt_SMTPPort.Text);
    IdSMTP1.Host := edt_SMTPHost.Text;
    IdSMTP1.Username := edt_SMTPUser.Text;
    IdSMTP1.Password := edt_SMTPPassWort.Text;
    if chkb_Auth.Checked then
    begin
      IdSMTP1.Authenticate;
    end;
    IdSMTP1.Connect;
    if IdSMTP1.Connected then
    begin
      m := TIdMessage.Create(self);
      m.From.Text := edt_from.Text;
      m.Recipients.Add.Text := edt_to.Text;
      m.Subject := 'TestMail from SMTP Checker';
      m.Body.Text := 'Dieses Mail wurde zu Testzwecken versendet';
      IdSMTP1.Send(m);
      IdSMTP1.Disconnect;
      showmessage('Das Mail wurde erfolgreich versendet!');
    end;
  except
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdPOP3Exception do
      Writeln(E.Message);
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdDoesNotSupportAPOP do
      Writeln(E.Message);
    on E: EIdUnrecognizedReply do
      Writeln(E.Message);
    on E: EIdTLSClientException do
      Writeln(E.Message);
    on E: EIdTLSClientSSLIOHandlerRequred do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileConnected do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNotAvailable do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNegCmdFailed do
      Writeln(E.Message);
    on E: EIdTLSClientTLSHandShakeFailed do
      Writeln(E.Message);
    on E: EIdTLSServerException do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileActive do
      Writeln(E.Message);
  end;
  if IdSMTP1.Connected then
    IdSMTP1.Disconnect;
end;

Danke für weitere Tipps.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#5

AW: Authentifiziertes SMTP

  Alt 21. Sep 2010, 11:39
Erst verbinden, dann authentifizieren (siehe auch den Link in meinem Edit).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Authentifiziertes SMTP

  Alt 21. Sep 2010, 13:06
Delphi-Quellcode:
procedure Tfrm_POP3SMTPTester.btn_SendMailClick(Sender: TObject);
var
  m: TIdMessage;
begin
  try
  [ Gedöns ]
  except
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdPOP3Exception do
      Writeln(E.Message);
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdDoesNotSupportAPOP do
      Writeln(E.Message);
    on E: EIdUnrecognizedReply do
      Writeln(E.Message);
    on E: EIdTLSClientException do
      Writeln(E.Message);
    on E: EIdTLSClientSSLIOHandlerRequred do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileConnected do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNotAvailable do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNegCmdFailed do
      Writeln(E.Message);
    on E: EIdTLSClientTLSHandShakeFailed do
      Writeln(E.Message);
    on E: EIdTLSServerException do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileActive do
      Writeln(E.Message);
  end;
  if IdSMTP1.Connected then
    IdSMTP1.Disconnect;
end;
Warum nicht einfach gleich:


Delphi-Quellcode:
procedure Tfrm_POP3SMTPTester.btn_SendMailClick(Sender: TObject);
var
  m: TIdMessage;
begin
  try
  [ Gedöns ]
  except
    on E: Exception do
      WriteLn(E.Message);
  end;
  if IdSMTP1.Connected then
    IdSMTP1.Disconnect;
end;
?
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Authentifiziertes SMTP

  Alt 21. Sep 2010, 13:27
Vielen Dank!!!!
Funzt nun.

Den letzen Input zu "warum nicht gleich...."
Weil sonst nicht eine genaue Fehlermeldung ausgegeben werden würde...
Habe es probiert, bei allen Fehlern würde immer die gleiche Fehlermeldung ausgegeben werden.

Hier noch der Code falls jemand sich auch die Hörner abstossen muss..

Delphi-Quellcode:
procedure Tfrm_POP3SMTPTester.btn_SendMailClick(Sender: TObject);
var
  m: TIdMessage;
begin
  try
    if IdSMTP1.Connected then
      IdSMTP1.Disconnect;
    IdSMTP1.Port := StrToInt(edt_SMTPPort.Text);
    IdSMTP1.Host := edt_SMTPHost.Text;
    IdSMTP1.Username := edt_SMTPUser.Text;
    IdSMTP1.Password := edt_SMTPPassWort.Text;
    IdSMTP1.Connect;
    if chkb_Auth.Checked then
    begin
      IdSMTP1.Authenticate;
    end;
    if IdSMTP1.Connected then
    begin
      m := TIdMessage.Create(self);
      m.From.Text := edt_from.Text;
      m.Recipients.Add.Text := edt_to.Text;
      m.Subject := 'TestMail from SMTP Checker';
      m.Body.Text := 'Dieses Mail wurde zu Testzwecken versendet';
      IdSMTP1.Send(m);
      IdSMTP1.Disconnect;
      showmessage('Das Mail wurde erfolgreich versendet!');
    end;
  except
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdPOP3Exception do
      Writeln(E.Message);
    on E: EIdTextInvalidCount do
      Writeln(E.Message);
    on E: EIdMessageCannotLoad do
      Writeln(E.Message);
    on E: EIdDoesNotSupportAPOP do
      Writeln(E.Message);
    on E: EIdUnrecognizedReply do
      Writeln(E.Message);
    on E: EIdTLSClientException do
      Writeln(E.Message);
    on E: EIdTLSClientSSLIOHandlerRequred do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileConnected do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNotAvailable do
      Writeln(E.Message);
    on E: EIdTLSClientTLSNegCmdFailed do
      Writeln(E.Message);
    on E: EIdTLSClientTLSHandShakeFailed do
      Writeln(E.Message);
    on E: EIdTLSServerException do
      Writeln(E.Message);
    on E: EIdTLSClientCanNotSetWhileActive do
      Writeln(E.Message);
    {on E: Exception do
      Writeln(E.Message); }

  end;
  if IdSMTP1.Connected then
    IdSMTP1.Disconnect;
end;
  Mit Zitat antworten Zitat
shmia

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

AW: Authentifiziertes SMTP

  Alt 21. Sep 2010, 16:53
Den letzen Input zu "warum nicht gleich...."
Weil sonst nicht eine genaue Fehlermeldung ausgegeben werden würde...
Habe es probiert, bei allen Fehlern würde immer die gleiche Fehlermeldung ausgegeben werden.
Das kann nur ein Irrtum deinerseits sein.
Wenn du mit deiner Aussage richtig liegen würdest, würde das bedeuten das Delphi in Bezug auf Exceptions eine Fehlkonstruktion ist. (ist es aber nicht!)
Versuch mal:
Delphi-Quellcode:
except
  on E: Exception do
    Writeln(E.Classname+ ' - ' + E.Message);
end;
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 19:30 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