PHPMailer:超链接出现在outlook的括号中

时间:2016-10-01 01:18:24

标签: php html hyperlink outlook phpmailer

我使用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

关于可能出错的任何想法?

1 个答案:

答案 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。