Announcement

Collapse
No announcement yet.

Emailversand via Indy

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Emailversand via Indy

    Hallo,

    ich benutze die Indykomponenten IDSmtp und IDMessage zum versenden von Mails - das heisst ich versuche es...

    Beim Aufruf von
    IdSMTP1.Send(IdMessage1);

    erscheint eine Fehlermeldung "5.5.4 EIDProtocollReplyError " und ich finde keinen Hinweis was den fehler verursacht.

    Hier mal der Codeschnipsel:

    procedure TForm1.QSBtnClick(Sender: TObject);
    var Adresse, Absendername, Subj, BodyText: string;
    begin
    { Mauszeiger auf Eieruhr stellen wir tun schliesslich Etwas...}
    screen.cursor := crHourGlass;

    { Mailbetreff }
    subj := 'Eintrag Fehlerliste Nummer: ' + BugTBLErrorNumber.asstring;

    {Mailtext }
    BodyText := 'Der Fehler mit der Nummer: ' + BugTBLErrorNumber.asstring
    + #13 + #10 + ' wurde vom Entwickler: ' + BugTBLSolvedby.AsString + ' bereinigt.'
    + #13 + #10 + 'Nachstehender Kommentar wurde als Änderungsbeschreibung erfasst:'
    + #13 + #10
    + #10 + #13 + BugTBLSolution.AsString;

    {Gibts den User ???}
    if not usertbl.FindKey([User]) then
    begin
    Showmessage(' Der User ' + user + ' existiert nicht!');
    screen.cursor := crdefault;
    exit;
    end else
    {wenn ja, denn ... ..}
    {Übergabearameter zusammensetzen }
    with IdMessage1 do
    begin
    From.Address := usertblEmail.asstring;
    debugfile('From.Adress: ' + usertblUser_name.AsString);

    From.Name := usertblUser_name.AsString;
    debugfile('From.NAME ' + usertblUser_name.asstring);

    Subject := subj;
    debugfile('Subjekt: ' + subj);

    Sender.Address := usertblEmail.asstring;
    debugfile('Sender.Adress: ' + usertblEmail.asstring);

    Sender.Name := usertblUser_name.asstring;
    debugfile('Sender.NAME: ' + usertbluser_name.asstring);

    ReplyTo[0].Name := sender.name;
    ReplyTo[0].Address := Sender.address;

    { Alle QS Mitarbeiter als Empfänger setzen }
    SetzeAdressat;
    Body.Add(BodyText);

    { SMTP Connect und Email absetzen }
    with IdSMTP1 do
    begin
    Username := '';
    Password := '';
    Port := MailTBLPort.AsInteger;
    try
    begin
    Connect;
    IdSMTP1.Send(IdMessage1);
    Disconnect;
    end
    except

    { Email senden fehlgeschlagen }
    begin
    MessageDlg('Die Mail konnte nicht versandt werden, vermutlich gibt es'
    + #13 + #10 + 'keine Verbindung zum Mailserver. Stellen Sie die Verbindung '
    + #13 + #10 + 'her und versuchen Sie nochmals die Email zu versenden.', mtWarning, [mbOK], 0);
    screen.cursor := crdefault;
    exit;
    end;

    {Email erfolgreich abgesetzt}
    MessageDlg(' Die Email wurde '
    + #13 + #10 + 'erfolgreich versandt!', mtInformation, [mbOK], 0);
    end;
    screen.cursor := crdefault;
    end;
    end;
    screen.cursor := crdefault;
    end;

    und: procedure TForm1.SetzeAdressat;
    var I: Integer;
    begin
    { Alle QS Mitarbeiter aus USERS auswählen}
    AdressatQry.close;
    AdressatQry.SQL.Clear;
    AdressatQry.SQL.Add('select * from users where qs = true');
    AdressatQry.Open;
    { Jeden QS Mitarbeiter in die Empfängerliste eintragen }
    for I := 0 to AdressatQry.RecordCount - 1 do
    begin
    IdMessage1.Recipients.Add;
    IdMessage1.Recipients[I].Name := AdressatQry.FieldByName('USER_NAME').AsString;
    IdMessage1.Recipients[I].Address := AdressatQry.FieldByName('Email').AsString;
    AdressatQry.Next;
    end;
    end;

    Kann mir jemand sagen WAS hier diesen Fehler verursacht ???

    Heiko

  • #2
    Hallo Heiko,

    also wirklich helfen kann ich Dir nicht. Ich würde mich aber an Deiner Stelle dem Problem schrittweise nähern.
    Beginnend mit

    <
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    IdSMTP1.Host:= 'DeinMailHost';
    try
    IdSMTP1.Connect;
    with IdMessage1 do begin
    Body.Text:= 'Deine Nachricht';
    From.Address:= '[email protected]';
    Subject:= 'Betreff';
    Recipients.EMailAddresses:= 'DieEmpfängerAddresse';
    try
    IdSMTP1.Send(IdMessage1);
    except
    // Fehlerbehandlung
    end;
    end;
    IdSMTP1.Disconnect;
    except
    // Fehlerbehandlung
    end;
    end;
    >

    würde ich dann immer mehr Code implementieren, bis der Fehler auftritt. Ist zwar mühseelig, aber führt letztendlich zum Ziel.

    Grüsse Pete

    Comment


    • #3
      das hilft mir leider nicht deutlich weiter. Gibt es denn irgendwo eine Doku über die Fehlernummern von Indy ??

      Heik

      Comment

      Working...
      X