Fehler bei Mailversand mit PHPMailer 5.1

07/09/2011 - 13:23 von Heiko Warnken | Report spam
Hallo Experten,

auf meiner HP habe ich den Mailversand auf PHPMailer umgestellt. Der
Versand funktioniert mit sehr wenigen Ausnahmen absolut tadellos.
Warum habe ich von der PHP-Funktion mail() auf PHPMailer umgestellt?
Es ist in den letzten 4 Wochen vermehrt vorgekommen, dass e-Mails, die
von meiner Homepage versendet wurden, nicht beim Empfànger angekommen
sind. Dabei war auffàllig, dass es sich meistens um Empfànger der
Domains gmx.de, yahoo.com, yahoo.de, gmail.com und web.de handelt.
Eine Anfrage bei meinem Hoster nach einer evtl. vorhandenen Sperre
dieser Domains wurde mir damit beantwortet, dass er KEINE IP-Adressen
gesperrt hat.
Das ist natürlich ein Zustand, den ich auf Dauer nicht hinnehmen kann.
Deshalb bin ich dazu übergegangen, den Mailversand via SMTP mit dem
PHPMailer 5.1 zu realisieren. Tests haben ergeben, dass alle Empfànger -
auch der o. a. Domains - ihre e-Mail erhalten. Jetzt gibt es allerdings
ein anderes Problem, wofür ich keine Lösung habe:

Es gibt mehrere User, die ihren Webzugang bei O2 haben. Alle diese User
erhalten nach einem Klick auf den Absenden-Button folgende Fehlermeldung:
[ Fehlermeldung Anfang ]
Der Host "SMTP" wurde nicht gefunden. Überprüfen Sie die Angabe des
Servernamens. Konto: 'POP3', Server: 'SMTP', Protokoll: SMTP, Port: 25,
Secure (SSL): Nein, Socketfehler: 11001, Fehlernummer: 0x800CCC0D
[ Fehlermeldung Ende ]

Frage ich Tante google nach "Socketfehler: 11001, Fehlernummer:
0x800CCC0D" erhalte ich lediglich Suchergebnisse in Verbindung mit
Outlook (Express). Ein Suchergebnis, welches auf den PHPMailer 5.1
hindeutet oder zumindest auf den Webzugang mit O2 war nicht zu finden.
Ich erhoffte mir Anhaltspunkte zur Fehlerkorrektur bei google.

Kann mir jemand von Euch einen Tipp geben, wie der Fehler zu beseitigen ist?
Hier der in Frage kommende PHP-Code meiner HP:

[ Code Anfang ]
require("class.phpmailer.php");
$mail = new PHPMailer;
$mail->AddAddress($absendermail); // $absendermail wird mittels $_POST[]
übergeben und geprüft
$mail->From = "postmaster@example.com";
$mail->FromName = "Postmaster";
$mail->IsHTML(True);
$mail->Body = nl2br($tmp1); // $tmp1 wird mittels $_POST[] übergeben und
geprüft
$mail->AltBody = strip_tags($tmp1);
$mail->Subject = "Bitte Ihre Nachricht bestàtigen";
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Username = "username@example.com";
$mail->Password = "password";
$mail->Host = "smtp.example.com";

if(!$mail->Send())
{
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Die Email konnte nicht gesendet werden";
echo "Fehler: " . $mail->ErrorInfo;
}
else
{
echo "<h2>Hinweis</h2>";
echo "<p><b>Wir haben Ihnen eine Bestàtigungsmail an die e-Mail Adresse
$absendermail zugesendet. Bitte bestàtigen Sie den Link in unserer
e-Mail, um Ihre gerade eingegebene Nachricht an den Empfànger absenden
zu können.</b></p>";
}

[ Code Ende ]

Gruß
Heiko
 

Lesen sie die antworten

#1 Jens Peter Möller
07/09/2011 - 14:58 | Warnen spam
Am 07.09.2011 13:23, schrieb Heiko Warnken:

Es ist in den letzten 4 Wochen vermehrt vorgekommen, dass e-Mails, die
von meiner Homepage versendet wurden, nicht beim Empfànger angekommen
sind. Dabei war auffàllig, dass es sich meistens um Empfànger der
Domains gmx.de, yahoo.com, yahoo.de, gmail.com und web.de handelt.

Das ist natürlich ein Zustand, den ich auf Dauer nicht hinnehmen kann.
Deshalb bin ich dazu übergegangen, den Mailversand via SMTP mit dem
PHPMailer 5.1 zu realisieren. Tests haben ergeben, dass alle Empfànger -
auch der o. a. Domains - ihre e-Mail erhalten.



Das könnte einfach daran liegen, daß PHPMailer von sich aus
korrekte Mails mit ordenlichen und vollstàndigen Headern erzeugt,
wàhrend Du das beim Versand per mail() natürlich selber machen
musst. Da fehlt standardmàßig einfach einiges, was evt. strenge
SPAM-Filter entsprechend gewichten.

Es gibt mehrere User, die ihren Webzugang bei O2 haben. Alle diese User
erhalten nach einem Klick auf den Absenden-Button folgende Fehlermeldung:
[ Fehlermeldung Anfang ]
Der Host "SMTP" wurde nicht gefunden. Überprüfen Sie die Angabe des
Servernamens. Konto: 'POP3', Server: 'SMTP', Protokoll: SMTP, Port: 25,
Secure (SSL): Nein, Socketfehler: 11001, Fehlernummer: 0x800CCC0D
[ Fehlermeldung Ende ]



Das kann ich überhaupt nicht nachvollziehen. Solche Fehlermeldungen
erzeugt weder PHP, noch der PHPMailer. Das ist eine typische Meldung
von Ausguck Schnell.

require("class.phpmailer.php");
$mail = new PHPMailer;
$mail->AddAddress($absendermail); // $absendermail wird mittels $_POST[]
übergeben und geprüft
$mail->From = "";
$mail->FromName = "Postmaster";
$mail->IsHTML(True);
$mail->Body = nl2br($tmp1); // $tmp1 wird mittels $_POST[] übergeben und
geprüft
$mail->AltBody = strip_tags($tmp1);
$mail->Subject = "Bitte Ihre Nachricht bestàtigen";
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Username = "";
$mail->Password = "password";
$mail->Host = "smtp.example.com";

if(!$mail->Send())
{
//$mail->Send() liefert FALSE zurück: Es ist ein Fehler aufgetreten
echo "Die Email konnte nicht gesendet werden";
echo "Fehler: " . $mail->ErrorInfo;
}



Und der Code sieht auch erst mal OK aus.

Also nein, das kann alles überhaupt nicht sein. Dein Script làuft
doch auf einem Server. Der versendet die Mail. Welchen Internet-Zugangs-
Provider Deine Besucher verwenden, ist vollkommen unerheblich.
Niemals kann der gezeigte Code diesen Fehler verursachen.

Link zu Deiner Seite?

Gruß
JPM

Ähnliche fragen