我收到了这段代码:
$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
部分消失了。这可能是什么问题?
答案 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>';
看起来你也有一点点编码问题......