Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: SMTP Email versenden schlägt fehl

  Alt 16. Jun 2009, 11:38
Zitat von nahpets:
Delphi-Quellcode:
idMessage.From.Text := 'Test';
idMessage.Sender.Text := 'Test';
sollte offensichtlich sein. Müssen gültige Mailadressen sein. Wo soll denn bitte eine Mail an den Empfänger 'Test' hingehen? Und wie soll der Empfänger den Absender 'Test' erkennen?

smtp.mail.yahoo.de hat Port 25 offen.

Und bitte verrate uns doch noch die Fehlermeldung.
Der Inhalt von Username, PW und Empfaengermail könnte von Bedeutung sein (muss aber nicht zwingend) jenachdem, wie offen der Mailserver von Yahoo ist. Lässt der z. B. einen Mailversand ohne vorhergehende Anmeldung zu?

Schau bitte mal unter http://de.wikipedia.org/wiki/Simple_...nsfer_Protocol, dort bei "Das Protokoll" findest Du eine Tabelle mit Befehlen. Diese kannst Du über
Code:
Telnet smtp.mail.yahoo.de 25
ausprobieren. Wenn Du damit mit Deinen Daten eine Mail versenden kannst, dann gehts mit den gleichen Werten auch über Indy.
Hallo und schonmal Danke an nahpets hab jetzt mit einigen Hinweisen erfolgreich eine EMail versendet. Ich schreibe hier mal, da es für mich aus den bisherigen Threats, die ich gefunden hab nicht wirklich ersichtlich war, auf was wo eingetragen ist. Allerdings werde ich einige Daten nur beispielhaft angeben, da es sich dabei um Logindaten und EMail-Adressen von mir handelt.

Zur Fehlermeldung wurde ein Socket-Fehler 10054 angegeben, welcher allerdings auch noch auf dem falschen Port (465) ausgelöst wurde. Diesen Port habe ich auf der Yahoo-Seite für einen SMTP-Emailversand gefunden.

Ok hier für alle die nochmal hier nach einem EMail-versand aus einem Programm heraus suchen, die Einstellungen, die ich verwendet hab.
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdMessage, IdSMTPBase, IdSMTP;

procedure TForm1.FormCreate(Sender: TObject);
var
SMTP : TIdSMTP;
idMessage : TIdMessage;
TestStringList: TStringList;

begin
  TestStringList := TStringList.Create;
  TestStringList.Add('Test'); // Es wird im Textfeld der EMail das Wort "Test" angegeben.

  //Create TIdSMTP and TIdMessage Componente
  SMTP := TIdSMTP.Create();
  idMessage := TIdMessage.Create();

  //Configure SMPTP
  SMTP.Host := 'smtp.mail.yahoo.de';
  SMTP.Username := Username;
  SMTP.Password := Pw;
  SMTP.Port := 25; // Wenn Ihr bei eurem Yahoo-Account nachseht, werden dort unter den Einstellungen für SMTP-EMailversand der Port 465 angegeben. wenn Ihr diesen verwendet erhaltet Ihr einen Socket-Error 10054. Dieser Port ist wie Assertor sagt für die Verwendung von SSL gültig.

  //Configure idMessage
  idMessage.From.Text := SenderMail;
  idMessage.Sender.Text := EmpfaengerMail;
  idMessage.Recipients.EMailAddresses := EmpfaengerMail;
  idMessage.Subject := 'Test';

  idMessage.Body.Clear;
  idMessage.Body := TestStringList; // Schreibt "Text" in das Textfeld der EMail

  //Send E-Mail
  Try
    SMTP.Connect;
    SMTP.Send(idMessage);
    SMTP.Disconnect;
  Except
    If SMTP.Connected = True Then
    Begin
      Try
        SMTP.Disconnect;
      Except
        MessageDlg('Could not disconnect from the E-Mail Server: ' + 'smtp.mail.yahoo.de', mtError, [mbOK], 0);
      End;
    End;
    MessageDlg('Could not send E-Mail to: ' + Empfaengermail, mtError, [mbOk], 0);
  End;

  //Destroy TIdSMTP and TIdMessage Componente
  SMTP.Free;
  idMessage.Free;
end;
Ok der Inhalt der Konstanden kann ich hier aus persönlichen Gründen wie gesagt nicht preisgeben, sind ja schließlich meine persönlichen Daten. Allerdings für SenderMail einfach bei yahoo anmelden, dann bekommt ihr Yahoo-Account mit EMail-Adresse (z.B. Schulze.Maier@yahoo.de = SenderMail und Username = Schulze.Maier) und die Empfangsemail ist beliebig, bei mir war das eine ...@live.de. Hoffe das hilft mal jemanden, der wie ich als Anfänger ein paar Probleme mit dem Einarbeiten hat.

@Assertor und nahpets beide ein Dankeschön waren wirklich sehr hilfreiche Erklärungen für mich. Allerdings eins hab ich noch nicht ganz verstanden @Assertor, wie meinst du das mit dem Try/Finally. Könntest du eventuell den hier geposteten Quellcode umstellen, wie es besser wäre?

Edit1 uses-Klausel hinzugefügt
2. Account Sero
  Mit Zitat antworten Zitat