2016-03-26 9 views
1

Ich sende eine sehr einfache HTML-Nachricht mit PHP mail(). Der Zweck war, einen Link zu senden, der die E-Mail-Adresse des Benutzers und einen Bestätigungscode enthielt. Wenn der Nutzer auf den Link klickt, erhält die Website die E-Mail-Adresse und den Code, um sicherzustellen, dass die E-Mail-Adresse des Nutzers korrekt ist.Senden von HTML-Mail funktioniert nicht

Zuerst funktionierte es, wenn es nichts anderes als die HTML/BODY-Tags, eine Kopfzeile und die Verify-E-Mail-Verknüpfung war. Ich habe die E-Mail mehrmals gesendet, während ich den Verifizierungsprozess getestet habe. Dann machte ich, was ich als geringfügige Änderungen ansah, und es hörte auf zu arbeiten. Die kleinen Änderungen sind wie dargestellt auskommentiert. Ich habe ein Bild und ein paar Zeilen Text hinzugefügt.

Es sendet keine E-Mails mehr, und ich bekomme keine Warnungen oder Fehler. Ich habe das Bild, den zusätzlichen Text entfernt und den Zusatz des Links auskommentiert, aber es wird immer noch nicht funktionieren. Kann jemand sehen, was ich falsch mache? (Ich habe Namen geändert, um die Unschuldigen zu schützen.)

function sendEmail($email, $code) { 

    $email = str_replace("@","%40",$email); 
    $to = $email; 
    $subject = 'Email Verification'; 

    $headers = "From: " . strip_tags('[email protected]') . "\r\n"; 
    $headers .= "CC: \r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 

    $message = "<html><body>\r\n"; 
    $message .= "<h2>Thank you!</h2>\r\n"; 
    //$message .= '<img src="http://www.mytestwebsite.com/images/logo.png"><br>'; 
    //$message .= 'Thank you for registering an account with us. '; 
    //$message .= 'Please verify your email address by clicking the button below.<br>'; 
    //$message .= '<a href="http://www.mytestwebsite.com/verifyemail.php?email='.$email.'&code='.$code.'">Verify Email</a>'; 
    $message .= "</body></html>\r\n"; 

    $message = wordwrap($message, 70, "\r\n"); 
    mail($to, $subject, $message, $headers); 

} 

Wie kann ich herausfinden, was mit meinem Setup falsch ist? Gibt es eine Website, auf der die Fehler in meinem Code angezeigt werden?

Danke für Ihre Hilfe! SH

+0

Hmm .. Ich änderte '$ email' zu meiner eigenen persönlichen E-Mail-Adresse und lief den Code, wie es ist (minus den Funktionsaufruf) und ich erhielt eine E-Mail. Wenn Sie Zugriff auf Ihre 'php.ini' haben, können Sie möglicherweise die Fehlermeldung aktivieren, falls dies nicht bereits geschehen ist. [php.ini error msg] (http://www.phpknowhow.com/configuration/php-ini-error-settings/) – lovermanthing

+0

Gut zu wissen. Danke für die Information. Die% 40-Funktion war eine von vielen Dingen, die ich versuchte, um die Überprüfung zu funktionieren. – Superhuman

Antwort

3

Das einzige, was Sie senden eine E-Mail zu stoppen scheint, ist:

$email = str_replace("@","%40",$email); 

Weil Sie es zu Beispiel% 40hostname.com

auch zu überprüfen, ob E-Mail-Anwendung senden, gesendet wird, :

if(@mail($to, $subject, $message, $headers)) 
{ 
    echo "Mail Sent Successfully"; 
}else{ 
    echo "Mail Not Sent"; 
} 
Verwandte Themen