You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHPMailer发送重置密码邮件至Outlook时链接出现多余=符号问题求助

解决PHPMailer发送邮件时Outlook中URL出现多余=符号的问题

我之前也踩过一模一样的坑!这种情况几乎都是quoted-printable编码的软换行搞的鬼——当邮件内容默认用quoted-printable编码时,PHPMailer会自动把超过指定长度的文本拆分成多行,每行末尾加=作为软换行标记。Gmail会自动处理掉这个标记,但Outlook有时候会“不识趣”地把它留在URL里,导致链接失效。

给你几个亲测有效的解决方案:

1. 切换邮件编码为Base64

直接绕过quoted-printable的换行问题,把邮件内容用Base64编码发送。在PHPMailer的配置里加一行:

$mail->Encoding = 'base64';

Base64编码会把整个邮件内容转成一串连续的字符,不会有任何换行插入,Outlook解析起来也不会出错。

2. 调整WordWrap长度,避免URL被拆分

PHPMailer默认的WordWrap值是78,当你的URL长度超过这个值时,就会被拆断插入=。你可以把这个值设得足够大(比如超过你最长的URL长度),或者直接禁用自动换行:

// 禁用自动换行,适合URL较长的场景
$mail->WordWrap = 0;
// 或者设一个足够大的数值,比如200
// $mail->WordWrap = 200;

这样URL就会保持完整,不会被拆分出多余的=符号。

3. 确保HTML邮件的正确配置

如果你发送的是HTML格式的邮件,一定要确认已经开启了HTML模式:

$mail->isHTML(true);

并且把链接用标准的HTML <a> 标签包裹,比如:

<a href="http://support.domain.com/login/resetpw/a3ad3e46c045d98dba19a94dc8a9e4329dcab251/7">重置密码</a>

避免直接在文本里写长URL,HTML标签能帮邮件客户端更好地识别完整链接。

最后记得测试一下,发送到Outlook邮箱里检查链接是否正常——我当时用第一种方案就直接解决问题了,你可以先试试这个!

内容的提问来源于stack exchange,提问作者ihcc aman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:37:28