![]() |
EIdProtocolReplyError bei EMailversandt mit Indy
Hallo zusammen,
ich hoffe, dass Ihr mir helfen könnt. Mit dem nachfolgenden Code habe ich bisher den Inhalt einer externen Datei geladen, zwei Variablen durch Datenbankwerte ersetzt und diesen neuen Text dann per E-Mail versandt. Das hat auch immer problemlos funktioniert und funktioniert immer noch, wenn ich die E-Mail Zugangsdaten nehme, die ich bisher verwendet habe. Nun haben wir den Server gewechselt und es funktioniert auch soweit alles, bis auf diese Funktion. Wenn ich die neuen E-Mail Zugangsdaten verwende kriege ich entweder folgende Fehlermeldung: "Im Projekt ist eine Exception der Klasse EIdProtocolReplyError aufgetreten. Meldung: See http://pobox.com/~djb/docs/smtplf.html" oder die Fehlermeldung "Die Verbindung wurde erfolgreich geschlossen".
Delphi-Quellcode:
Habt Ihr eine Ideee, woran das liegen könnte?
var n : integer;
text : string; begin // Senden per E-Mail IdMessage.Clear; // Plain Text with TIdText.Create(IdMessage.MessageParts, nil) do begin ContentType := 'text/plain'; Body.LoadFromFile('body.txt'); text := body.Text; n := pos('$user',text); delete(text,n,5); insert(DBAdvEdit12.Text,text,n); body.Text := text; n := pos('$pw',text); delete(text,n,3); insert(DBAdvEdit11.Text,text,n); body.Text := text; end; // HTML Part with TIdText.Create(IdMessage.MessageParts, nil) do begin ContentType := 'text/html'; Body.LoadFromFile('body.php'); text := body.Text; n := pos('$user',text); delete(text,n,5); insert(DBAdvEdit12.Text,text,n); body.Text := text; n := pos('$pw',text); delete(text,n,3); insert(DBAdvEdit11.Text,text,n); body.Text := text; end; // TIdAttachment.Create(IdMessage.MessageParts, Filename); IdMessage.ContentType := 'text/html'; IdMessage.From.Address := 'info@meinedomain.de'; IdMessage.From.Name := 'mein name'; IdMessage.Recipients.Add.Address := kundendaten.FieldByName('email_haupt').asString; IdMessage.Subject := 'betreff'; IdSMTP.Connect; try IdSMTP.Send(IdMessage); finally IdSMTP.Disconnect; end; // Senden per E-Mail Ende showMessage('Die Daten wurden erfolgreich versandt'); end; Ich bin mittlerweile soweit, dass es daran zu liegen scheint, dass zwei Dateien geladen werden und dort Daten ersetzt werden. Nehme ich z.B. das Laden und Ersetzen der PHP Datei oder alternativ des Textes heraus, versendet er eine leere E-Mail. Kopiere ich alles nochmal in den Body versendet er eine HTML E-Mail ohne Formatierung. Ich wäre sehr dankbar, wenn Ihr mir vielleicht mit dem einen oder anderen Tip helfen könntet, was man hier machen kann, damit man eine E-Mail mit HTML Formatierung weiterhin versenden kann. Vielen Dank im Voraus. [edit=SirThornberry]Titel geändert - Das es sich um ein Problem handelt sagt bereits die gewählte Sparte aus - Mfg, SirThornberry[/edit] |
Re: Problem eine E-Mail abzusenden
Ist jetzt erstmal nur Optik, aber sollte:
Delphi-Quellcode:
// Ersetzen der Platzhalter, durch einfaches StringReplace
body.Text:= StringReplace(StringReplace(body.Text, '$user', DBAdvEdit12.Text), '$pw', DBAdvEdit11.Text); nicht das gleiche machen wie:
Delphi-Quellcode:
Gruß,
text := body.Text;
n := pos('$user',text); delete(text,n,5); insert(DBAdvEdit12.Text,text,n); body.Text := text; n := pos('$pw',text); delete(text,n,3); insert(DBAdvEdit11.Text,text,n); body.Text := text; |
Re: Problem eine E-Mail abzusenden
Zitat:
Sherlock |
Re: Problem eine E-Mail abzusenden
Ich nehme mal an, dass irgendwo anscheinend doch noch ein CHR drin war.
Nachdem ich das StringReplace nun mal getestet habe, geht es alles. Super!! Vielen Dank. |
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Internet / LAN / ASP.NET" verschoben.
|
Re: EIdProtocolReplyError bei EMailversandt mit Indy
Ich muss nochmal kurz etwas nachfragen, weil ich nun total verwirrt bin.
Ich habe dieselben Zeilen an einer anderen Stelle.
Delphi-Quellcode:
Nun kommt die so zusammengestellte Mail aber ständig so an, dass im Body in Outlook der HTML Quellcode angezeigt wird.
// Plain Text
IDMessage.ContentType := 'text/plain'; IDMessage.Body.LoadFromFile('emailangebot.txt'); // HTML Part IDMessage.ContentType := 'text/html'; IDMessage.Body.LoadFromFile('emailangebot.html'); TIdAttachment.Create(IdMessage.MessageParts, Filename); IdMessage.ContentType := 'text/html'; IdMessage.From.Address := 'info@meinedomain.de'; IdMessage.From.Name := 'mein name'; IdMessage.Subject := 'Ihr Angebot von mein name'; IdMessage.Recipients.Add.Address := Kundendaten.FieldByName('email_haupt').asString; IdMessage.BccList.Add.Address := 'info@meinedomain.de'; IdSMTP.Connect; try IdSMTP.Send(IdMessage); finally IdSMTP.Disconnect; end; Beispiel: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <style Type="text/css"> <!-- Habt Ihr vielleicht auch eine Idee, wie das nun wieder sein kann? Danke |
Re: EIdProtocolReplyError bei EMailversandt mit Indy
Noch ein Nachtrag:
Wenn ich das Laden des HTML Formulars raus nehme, erscheint der Text ordentlich. Mit welchem Befehl kann denn der Body als HTML formatiert werden mit der Vorlage? |
Re: EIdProtocolReplyError bei EMailversandt mit Indy
Es scheint an der Zeile bzgl. des Attachments zu liegen. Wenn ich die rausnehme wird der Body ordentlich erstellt.
Gibt es noch eine andere Möglichkeit eine Datei anzuhängen? Wäre sehr dankbar für einen Tip. Danke. |
Re: EIdProtocolReplyError bei EMailversandt mit Indy
Das Problem scheint doch irgendwo anders zu liegen. Es scheint an diesen Zeilen zu liegen, dass die Fehlermeldung "Verbindung wurde geschlossen" kommt.
Delphi-Quellcode:
Nimm man diesen Quellcode:
// Plain Text
with TIdText.Create(IdMessage.MessageParts, nil) do begin ContentType := 'text/plain'; Body.LoadFromFile('emailangebot.txt'); end; // HTML Part with TIdText.Create(IdMessage.MessageParts, nil) do begin ContentType := 'text/html'; Body.LoadFromFile('emailangebot.html'); end;
Delphi-Quellcode:
versendet er und es kommt auch keine Fehlermeldung. Allerdings kann man dann kein Attachment anhängen. Siehe KOmmnentar zuvor.
// Plain Text
IdMessage.ContentType := 'text/plain'; IdMessage.Body.LoadFromFile('emailangebot.txt'); // HTML Part IdMessage.ContentType := 'text/html'; IdMessage.Body.LoadFromFile('emailangebot.html'); Ich wäre echt dankbar, wenn Ihr noch eine Idee hättet. Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz