我使用phpmailer发送一封带有超链接的电子邮件。我有这段代码:
$body = "<a href='".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a>";
require('classes/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = "UTF-8";
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = SMTP_HOST; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = SMTP_USER; // SMTP username
$mail->Password = SMTP_PASSWORD; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465; // TCP port to connect to
$mail->setFrom(SMTP_USER);
$mail->addAddress($to); // Add a recipient Name is optional
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = $altbody;
if(!$mail->send()) {
echo $mail->ErrorInfo;
}
当我将电子邮件发送到Gmail地址并在Gmail中打开时,超链接看起来很好(我可以点击链接并重定向到该页面)。
但是当我将它发送到Outlook时,超链接看起来像这样:
[my.domain.com/activate.php?x=52&y=aa1fdf437c526ee219decc1ea72fc266] my.domain.com/activate.php?x=52&y=aa1fdf437c526ee219decc1ea72fc266
关于可能出错的任何想法?
答案 0 :(得分:4)
电子邮件客户端有不同的渲染引擎。
gmail似乎会在没有http://
或https://
协议的情况下呈现链接。
Outlook可能仍然需要它。
尝试使用无协议(又称无方案)网址://
$body = "<a href='//".DIR."activate.php?x=$id&y=$activasion'>".DIR."activate.php?x=$id&y=$activasion</a>";
编辑:
评论中的@Synchro注释:
匿名/相对协议URL在电子邮件中是一个坏主意,因为 除非您在Webmail客户端,否则您没有基本协议 相对于,所以他们只是打破。明确它,它会工作 到处都是,现在很难找到一个不使用的好借口 HTTPS。