Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi EIdProtocolReplyError bei EMailversandt mit Indy (https://www.delphipraxis.net/114726-eidprotocolreplyerror-bei-emailversandt-mit-indy.html)

kluckweb 30. Mai 2008 06:52


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:
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;
Habt Ihr eine Ideee, woran das liegen könnte?

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]

Brainshock 30. Mai 2008 07:40

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:
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;
Gruß,

Sherlock 30. Mai 2008 07:50

Re: Problem eine E-Mail abzusenden
 
Zitat:

Zitat von kluckweb
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".

Bist Du dem Link in der Fehlermeldung gefolgt und konntest das dort geschilderte Problem (Linefeeds ohne Carriage return) ausschließen?

Sherlock

kluckweb 30. Mai 2008 08:20

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 30. Mai 2008 08:20

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Internet / LAN / ASP.NET" verschoben.

kluckweb 30. Mai 2008 08:57

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:
  // 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;
Nun kommt die so zusammengestellte Mail aber ständig so an, dass im Body in Outlook der HTML Quellcode angezeigt wird.

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

kluckweb 30. Mai 2008 09:19

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?

kluckweb 30. Mai 2008 09:48

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.

kluckweb 30. Mai 2008 10:35

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:
  // 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;
Nimm man diesen Quellcode:

Delphi-Quellcode:
  // Plain Text
    IdMessage.ContentType := 'text/plain';
    IdMessage.Body.LoadFromFile('emailangebot.txt');

  // HTML Part
    IdMessage.ContentType := 'text/html';
    IdMessage.Body.LoadFromFile('emailangebot.html');
versendet er und es kommt auch keine Fehlermeldung. Allerdings kann man dann kein Attachment anhängen. Siehe KOmmnentar zuvor.

Ich wäre echt dankbar, wenn Ihr noch eine Idee hättet.

Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 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