Fehler mit phpmailer

Retep

Well-known member
ID: 102024
L
29 April 2006
378
4
Hallo zusammen,

ich habe meine Seite heute online gestellt & verwende zur Bestätigung der Zugangsdaten einen Aktivierungslink, den ich per E-Mail versende, mit PHP-Mailer. Mich verwundert nun, dass ich schon einige Anmeldungen habe, aber so gut wie alle unaktiviert bleiben.

Um zu testen, ob die Mails überhaupt ankommen, habe ich 6 Leute aus dem Klammforum testen lassen, bei 5 von denen klappte die Aktivierung (bei meinen beiden E-Mail-Adressen auch). Leider sind alle anderen 16Anmeldungen unaktiviert, wie kann das sein?

Ist es typisch bei neuen Seiten, dass viele sich anmelden, aber nicht bestätigen? Und gibt es eine Möglichkeit, zu überprüfen, ob phpmailer sauber funktioniert, ohne sich überall E-Mail-Adressen zu erstellen?

Vielen Dank im Voraus :)

Mir hat gerade ein Amerikaner bestätigt, dass keine Verifikations-E-Mail angekommen ist. Insgesamt bekomme ich den Eindruck, dass dieses phpmailer nur im deutschsprachigen Raum vernünftig funktioniert.

Ich hatte Werbung weltweit geschaltet und die haben alle unaktivierte Accounts, die einzige Ausnahme sind meine Testuser bei Klamm.

Wenn jemand darüber mehr wüsste, wäre ich sehr dankbar :)
 
Zuletzt bearbeitet von einem Moderator:
Ich verwende PHPMailer auch und das Ding funktioniert freilich. Hatte also noch nie Probleme damit. Wenn eine eMail nicht gesendet werden konnte, sagt dir die Klasse das ja, d.h. es gibt keine Überraschungen.

Wird eine eMail dann wirklich nicht zugestellt, dann liegt das nicht am Versenden, sondern irgendwo anders auf dem Weg zum Empfänger.
 
Im Moment siehts so aus:
PHP:
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "localhost"; // SMTP server
$mail->From = "admin@[...].com";
$mail->FromName = "Peter Riesen";
$mail->AddAddress($_POST[email]);

$mail->Subject = "Registration at [...]";
$mail->Body = 
"<html>[...]</html>";
$mail->AltBody = 
"[...]";
$mail->WordWrap = 50;

if(!$mail->Send())
{
   echo 'Message was not sent. ';
   echo 'Mailer error: ' . $mail->ErrorInfo;
   echo ' Please contact admin@[...].com';
}
else
{
   echo "Your login data will soon be sent to ".$_POST[email]; 
}
Vielleicht siehst Du irgendwas, ich verzweifle nämlich gerade daran. Mein Klammtester, bei dem es nicht klappte, meinte ausserdem, dass da stand die E-Mail sei versendet worden (aber es kam nichts an)

Mal eine Aktualisierung. Laut meinem Provider ist es egal, ob bei Host "localhost" steht oder "mail.domainname.com", aber ohne Username & Passwort, also diesen Zeilen

$mail->Username = "benutzername"; // SMTP Benutzername
$mail->Password = "geheim"; // SMTP Passwort

hätte es laut denen garnicht funktionieren dürfen. Tat es aber bei mir selbst und einigen Klammtestern doch. :roll:
Nur bei den internationalen Usern nicht.. bei gmail.com nicht, yahoo.com nicht und auch hotmail.com nicht, während hotmail.com bei mir selbst funktionierte. Ich hoffe, irgendwer hat vielleicht Ahnung davon
 
Zuletzt bearbeitet von einem Moderator:
Wenn du SMTP nutzt und der Server eine Anmeldung erfordert (Provider fragen; aber in 99,99999% der Fälle is das immer so), dann musst du auch SMTPAuth, Username und Password setzen.
Klappt die Anmeldung beim SMTP-Server nicht, geht SMTP::Authenticate() schon mit Fehlermeldung raus, gibt diese an PHPMailer ab und PHPMailer::Send() scheitert.

Wie gesagt, wenn PHPMailer::Send() Erfolg signalisiert, liegt es nicht mehr in deiner Hand. Die Mail wurde dann an den Server überliefert.

Tip:
Das Forum hat einen Edit-Button und PHP-Tags ;)
 
.

Wenn du SMTP nutzt und der Server eine Anmeldung erfordert (Provider fragen; aber in 99,99999% der Fälle is das immer so), dann musst du auch SMTPAuth, Username und Password setzen.
Klappt die Anmeldung beim SMTP-Server nicht, geht SMTP::Authenticate() schon mit Fehlermeldung raus, gibt diese an PHPMailer ab und PHPMailer::Send() scheitert.

Wie gesagt, wenn PHPMailer::Send() Erfolg signalisiert, liegt es nicht mehr in deiner Hand. Die Mail wurde dann an den Server überliefert.

Tip:
Das Forum hat einen Edit-Button und PHP-Tags ;)

Ok ich dank dir.. ich würde gern den auftauchenden Fehler (falls es einen gibt) in der Datenbank abspeichern, damit ich sehe, woran es lag, falls es nicht klappte. Wie kann ich diese Fehlermeldung einer Variablen zuweisen? Geht das dann so:

$fehlergrund = 'Mailer error: ' . $mail->ErrorInfo;
[und $fehlergrund in die DB packen]

? Also es geht mir gerade nur um die Notation.. und ich frage mal, da ich es ja nicht testen kann
 
Wie kann ich diese Fehlermeldung einer Variablen zuweisen?
Zuweisung funktioniert ganz einfach:
PHP:
$variable = value; // wobei value entweder ein Integer, oder eben ein String (in Anführungszeichen) is
Geht das dann so:

$fehlergrund = 'Mailer error: ' . $mail->ErrorInfo;
[und $fehlergrund in die DB packen]
z.B.
Du kannst den Ausdruck auch direkt deiner Datenbank übergeben. Wie dir beliebt.