Einzelnen Beitrag anzeigen

Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#8

Re: SMTP Email versenden schlägt fehl

  Alt 16. Jun 2009, 10:49
Hi,

kurz aus der Hand ohne Delphi:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  IdSMTP: TIdSMTP;
  IdMessage: TIdMessage;
  TestStringList: TStringList;
begin
  TestStringList := TStringList.Create;
  IdSMTP := TIdSMTP.Create();
  IdMessage := TIdMessage.Create();
  try

    TestStringList.Add('Test'); // Es wird im Textfeld der EMail das Wort "Test" angegeben.
    
    //Configure SMPTP
    IdSMTP.Host := 'smtp.mail.yahoo.de';
    IdSMTP.Username := Username;
    IdSMTP.Password := Pw;
    // Port kann bei Default leer bleiben, wird von Indy festgelegt
    // IdSMTP.Port := 25; // (465 = SSL, aber dafür fehlt hier der OpenSSL Handler)

    //Configure idMessage
    IdMessage.From.Text := SenderMail;
    {
      warum Sender.Text? Und dann auch noch mit EmpfaengerMail???
      Das wird Yahoo ablehenen, Du sagst damit, der Absender sei der Empfänger...
    IdMessage.Sender.Text := EmpfaengerMail;
    }

    IdMessage.Recipients.EMailAddresses := EmpfaengerMail;
    IdMessage.Subject := 'Test';

    // idMessage.Body.Clear; // bei neuem Objekt nicht nötig
    IdMessage.Body := TestStringList; // Schreibt "Text" in das Textfeld der EMail
    
    try
      IdSMTP.Connect;
      IdSMTP.Send(IdMessage);
      IdSMTP.Disconnect;
    except
      On E:Exception do
        MessageDlg('Fehler beim Senden: ' + E.Message + ' [' + E.ClassName + ']', mtError, [mbOK], 0);
    end;

  finally
    IdMessage.Free;
    IdSMTP.Free;
    TestStringList.Free;
  end;
end;
Damit erhälst Du nun auch die echte Fehlermeldung.

Übrigens: Socket-Fehler 10054 bedeutet, die Gegenstelle hat die Verbindung getrennt. Bei dem SSL Port 465 ist das ohne Nutzung von SSL ja wohl klar...

Gruß Assertor

Edit: Variablennamen korrigiert
Frederik
  Mit Zitat antworten Zitat