2015-04-01 194 views
0

我得到這個代碼:的PHPMailer在HTML郵件A HREF鏈接無法使用正確

$userid = 123456; 
    $plaintext = " 
    Klicke auf den folgenden Link um deine Anmeldung bei xxx zu bestätigen: 
    http://xxx.de/confirm.php?id=" . $userid; 

    $html = ' 
    Klicke auf den folgenden Link um deine Anmeldung bei xxx zu bestätigen: 
    <br><br> 
    <a href="http://xxx.de/confirm.php?id=' . $userid . '">Anmeldung abschliessen</a>'; 


    $mail = new PHPMailer; 
    $mail->CharSet = 'utf-8'; 
    $mail->setLanguage('de', 'language/'); 
    $mail->isSMTP(); 
    $mail->Host = "xxx"; 
    $mail->Port = 587; 
    $mail->SMTPAuth = true; 
    $mail->Username = 'xxx'; 
    $mail->Password = 'xxx'; 
    $mail->SMTPSecure = 'tls'; 
    $mail->From = '[email protected]'; 
    $mail->FromName = 'xxx'; 
    $mail->addAddress($email, $email); 
    $mail->addReplyTo('[email protected]', 'xxx'); 
    $mail->isHTML(true); 
    $mail->Subject = $nickname . ' - Bestätige deine Anmeldung'; 
    $mail->Body = $html; 
    $mail->AltBody = $plaintext; 
    $mail->send(); 

作品鏈接的純文本郵件正確的,但不是在HTML版本,鏈接變成類似:XXX .de /?id = fdfafdafadfadfargagga 所以整數變成了連續的字母,並且confirm.php部分消失了。這裏可能是什麼問題?

+0

Apperently它山魈電子郵件服務故障 – Bunghole 2015-04-01 21:28:29

+0

嗯,我不確定這一點,但你可以嘗試的是,而不是將其引導到'confirm.php',你可以將'confirm.php'轉移到一個名爲'confirm'的文件夾並重命名'confirm.php',它現在位於名爲'confirm'的文件夾內,到'index.php'。這意味着您的鏈接應該如下所示:'http://xxx.de/confirm/?id = user_id_here1234'。這當然需要Apache'DirectoryIndex'設置爲index.php,但通常是默認值。 – 2015-04-01 22:02:13

回答

0

這確實是您的電子郵件處理器故障。解決這個問題最好的方法是在你的web服務器上設置一個重寫。如果你使用Apache,你可以在你的Apache配置文件,這樣做或.htacccess文件:

RewriteRule ^/confirm/([0-9]+) /confirm.php?id=$1 [L] 

這將改寫像http://xxx.de/confirm/1234的URL(應單獨通過電子郵件處理器留給)到http://xxx.de/confirm.php?id=1234,這是你的腳本期待什麼。在模板中你會重新安排它看起來像第一種形式:

$html = 'Klicke auf den folgenden Link um deine Anmeldung bei xxx zu bestätigen:<br><br> 
<a href="http://xxx.de/confirm/' . $userid . '">Anmeldung abschliessen</a>'; 

,它看起來像你有一點點的編碼問題處理得...

相關問題