2015-04-01 48 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>'; 

,它看起来像你有一点点的编码问题处理得...

相关问题