Daniel83: E-Mail versenden über sockets

Hi, ic habe folgenden stück Code aus meinem Programm kopiert :

[Code]

$fp2=fsockopen("pop3.meinedomain.com",110);
$result = fgets($fp2,1024);
  //echo "$result\n";
  fputs($fp2,"USER <<username>>\r\n");//
  $result = fgets($fp2,1024);
  //echo "$result\n";
  fputs($fp2,"PASS <<pass>>\r\n");
  $result = fgets($fp2,1024);
  //echo "$result\n";
  fclose($fp2);
  $email_to = "<<TO_MAIL>>"; //Fiktive Namen !!!
  $email_from = "<<FROM_MAIL>>";
  $email_betreff ="<<BETREFF>>";
  $hdr = "From: $email_from\r\n";
  $hdr .= "To: $email_to\r\n";
  $hdr .= "Subject: $email_betreff\r\n";
  $hdr .= "\r\n";

Socket oeffnen.

$fp = fsockopen("smtp.meinedomain.com", 25);
  $result = fgets($fp, 1024);
  //echo "$result\n";
  if ($result+0 != 220)
  die("Statuscode falsch (service not ready?): $result");

HELO

fputs($fp, "HELO Hallo\r\n");
  $result = fgets($fp, 1024);
  //echo "$result\n";
  if ($result+0 != 250)
  die("HELO Statuscode falsch: $result");

MAIL FROM

fputs($fp, "MAIL FROM: <<FROM_MAIL>>");
  $result = fgets($fp, 1024);
  //echo "$result\n";
  if ($result+0 != 250)
  die("MAIL FROM Statuscode falsch: $result");

RCPT TO

fputs($fp, "RCPT TO: $email_to\r\n");
  $result = fgets($fp, 1024);
  //echo "$result\n";
  if ($result+0 != 250)
  die("RCPT TO: Statuscode falsch: $result");

DATA

fputs($fp, "DATA\n");
  $result = fgets($fp, 1024);
  //echo "$result\n";
  if ($result+0 != 354)
  die("DATA: Statuscode falsch: $result");

Header senden

fputs($fp, $hdr);

Text senden

fputs($fp, "Mein Text");

Ende von DATA: CRLF . CRLF

fputs($fp, "\r\n.\r\n");
  $result = fgets($fp, 1024);
  if ($result+0 != 250)
  die("DATA(end): Statuscode falsch: $result");

QUIT

fputs($fp, "QUIT\r\n");
  $result = fgets($fp, 1024);
  if ($result+0 != 221)
  die("QUIT: Statuscode falsch: $result");

Verbindung schließen

fclose($fp);
  echo "E-Mial wurde erfolgreich an $Amail versendet!<br>";
[/code]

Wenn ich als smtp server den von Web.de angebe funktioniert das, aber wenn ich den von meinem Domain anbieter nehme, dann klappt das nicht.
Ich bekomme folgenden Fehlercode : 451

Bedeutet ja folgendes :"Requested action aborted: local error in processing"

Den Fehler bekomme ich an der stelle wo ich den . im DATA Block an den smtp server schicke. Gibt es noch andere Determinierungszeichen ? Oder liegt der Fehler im Quellcode ?

Gruß Daniel

  1. Hallo Daniel83,

    fputs($fp, "DATA\n");

    "DATA\r\n"

    Gruß aus Berlin!
    eddi