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

PHPMailer 5.2.22版本FromName字段部分字符串丢失问题求助

解决PHPMailer 5.2.22中FromName含逗号时丢失前缀的问题

这个问题我之前帮同事排查过!你碰到的情况是因为旧版PHPMailer对包含特殊字符的发件人名称处理不规范导致的。

问题根源

邮件协议(RFC 5322)规定:如果发件人名称里包含逗号、双引号这类特殊字符,必须用双引号把整个名称包裹起来,否则邮件客户端会把逗号当成「名称和地址的分隔符」,直接截断逗号前的内容。而PHPMailer 5.2.22这个非常老旧的版本,不会自动处理这种情况,所以你设置的"CONC, abcø"被解析成了名称是CONC,后面的abcø被误判成了额外的地址片段(实际没有对应地址,就只剩这部分显示了)。

两种解决方案

1. 手动给FromName添加双引号(适配旧版本)

直接在你的名称前后包裹双引号,让邮件头符合协议规范:

<?php
$email = 'waleedAhmed@mymail.com';
$name = 'waleed';
$event_info[0]['organizer_name'] = 'CONC, abcø';
$subject = 'Testing..';
$content = ' content : '. $event_info[0]['organizer_name'];

$objName = new \PHPMailer();
$objName->CharSet = 'UTF-8';
// 关键修改:手动用双引号包裹名称
$objName->FromName = '"' . $event_info[0]['organizer_name'] . '"';
$objName->From = $email;

// 后续的SMTP配置、添加收件人、发送逻辑
// $objName->Host = '你的SMTP服务器';
// $objName->addAddress('收件人邮箱');
// $objName->Body = $content;
// $objName->send();

如果你的名称里本身包含双引号,记得要转义成\",比如"CONC\"test, abcø"。

2. 升级PHPMailer到最新版本(强烈推荐)

PHPMailer 5.2.22是2017年的版本,不仅有这个小问题,还存在安全漏洞和兼容性缺陷。升级到6.x系列的新版本后,它会自动检测名称里的特殊字符并完成引号包裹,不用你手动处理,同时还支持现代的SMTP特性和更好的编码兼容。

验证效果

修改后,邮件头里的From字段会变成:

"CONC, abcø" <waleedAhmed@mymail.com>
这样邮件客户端就能正确识别完整的发件人名称了。

内容的提问来源于stack exchange,提问作者Waleed Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:02:07