PHPMailer HTML邮件中的href链接无法正常工作

时间:2015-04-01 21:07:53

标签: php html smtp html-email phpmailer

我收到了这段代码:

$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 = 'kontakt@xxx.de';
    $mail->FromName = 'xxx';
    $mail->addAddress($email, $email);
    $mail->addReplyTo('kontakt@xxx.de', 'xxx');
    $mail->isHTML(true);
    $mail->Subject = $nickname . ' - Bestätige deine Anmeldung';
    $mail->Body    = $html;
    $mail->AltBody = $plaintext;
    $mail->send();

链接在纯文本邮件中正常工作,但在HTML版本中无法正常工作,链接变为:xxx.de/?id = ffafdafadfadfargagga 因此,整数变成了无穷无尽的字母,confirm.php部分消失了。这可能是什么问题?

1 个答案:

答案 0 :(得分:0)

这确实是您的电子邮件处理器故障。解决此问题的最简单方法是在Web服务器上设置重写。如果您使用的是apache,可以在apache配置文件或.htacccess文件中执行此操作:

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

这会将http://xxx.de/confirm/1234之类的网址(应由电子邮件处理程序单独留下)重写为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>';

看起来你也有一点点编码问题......