找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20|回复: 0

[维护日志] [2026-05-12] [优化] [邮件收件人格式] - 邮件收件人显示论坛用户名优化

[复制链接]
  • 打卡等级:本地老炮

9337

威望

7448

金钱

1万

贡献

管理员

自由的灵魂

积分
107434
主题
5630
回帖
26661
注册时间
2003-4-10
最后登录
2026-10-2
发表于 2026-5-12 13:41:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、问题描述

论坛发送的各类邮件(评分、管理操作、回帖通知等)在收件人栏中显示为邮箱前缀(如 user88)而非论坛用户名(如 黑猫),部分客户端(如 QQ 邮箱)甚至显示为空字符串 "",影响用户体验和专业性。




二、原因分析

Discuz! 原有的 sendmail() 调用传入的是纯邮箱地址(如 user88@126.com),或简单拼接的 "用户名" <邮箱> 格式。后者在某些邮件客户端中解析异常,导致收件人显示不正确。

根据 RFC 822 标准,邮件头中的收件人格式应为:
  1. =?UTF-8?B?base64编码的用户名?= <email@domain.com>
复制代码





三、解决方案

在所有邮件发送点统一使用 Base64 编码格式:

  1. $encoded_name = '=?UTF-8?B?' . base64_encode($username) . '?=';
  2. $to = $encoded_name . ' <' . $email . '>';
  3. sendmail($to, $subject, $message);
复制代码





四、涉及文件

文件路径说明
forum_misc.php/source/module/forum/forum_misc.php评分邮件
forum_topicadmin.php/source/module/forum/forum_topicadmin.php管理操作邮件(两处)
post_newreply.php/source/include/post/post_newreply.php回帖通知邮件
function_delete.php/source/function/function_delete.php删除用户邮件(入队)
admincp_members.php/source/admincp/admincp_members.php禁止用户邮件





五、效果验证

修改前修改后
user88 <user88@126.com>=?UTF-8?B?6buR54Gr?= <user88@126.com>
QQ邮箱显示为空QQ邮箱显示为「黑猫」





六、技术沉淀

项目经验总结
标准格式邮件收件人必须符合 RFC 822 标准,中文需 Base64 编码
统一处理所有邮件发送点应使用相同的格式化函数,便于维护
队列兼容入队时直接存储格式化后的 toemail,避免出队时重复查询用户信息





七、env-base 分支更新

已在相关文件中标注邮件格式修改。




需要我继续发第二个日志(欢迎邮件存储位置)吗?
一、问题描述

论坛发送的各类邮件(评分、管理操作、回帖通知等)在收件人栏中显示为邮箱前缀(如 user88)而非论坛用户名(如 黑猫),部分客户端(如 QQ 邮箱)甚至显示为空字符串 "",影响用户体验和专业性。




二、原因分析

Discuz! 原有的 sendmail() 调用传入的是纯邮箱地址(如 user88@126.com),或简单拼接的 "用户名" <邮箱> 格式。后者在某些邮件客户端中解析异常,导致收件人显示不正确。

根据 RFC 822 标准,邮件头中的收件人格式应为:
  1. =?UTF-8?B?base64编码的用户名?= <email@domain.com>
复制代码





三、解决方案

在所有邮件发送点统一使用 Base64 编码格式:

  1. $encoded_name = '=?UTF-8?B?' . base64_encode($username) . '?=';
  2. $to = $encoded_name . ' <' . $email . '>';
  3. sendmail($to, $subject, $message);
复制代码





四、涉及文件

文件路径说明
forum_misc.php/source/module/forum/forum_misc.php评分邮件
forum_topicadmin.php/source/module/forum/forum_topicadmin.php管理操作邮件(两处)
post_newreply.php/source/include/post/post_newreply.php回帖通知邮件
function_delete.php/source/function/function_delete.php删除用户邮件(入队)
admincp_members.php/source/admincp/admincp_members.php禁止用户邮件





五、效果验证

修改前修改后
user88 <user88@126.com>=?UTF-8?B?6buR54Gr?= <user88@126.com>
QQ邮箱显示为空QQ邮箱显示为「黑猫」





六、技术沉淀

项目经验总结
标准格式邮件收件人必须符合 RFC 822 标准,中文需 Base64 编码
统一处理所有邮件发送点应使用相同的格式化函数,便于维护
队列兼容入队时直接存储格式化后的 toemail,避免出队时重复查询用户信息





七、env-base 分支更新

已在相关文件中标注邮件格式修改。
不懂就搜!点此搜点拨论坛。如果本坛没有,请尝试点此问AI,或跟帖提问。
发帖前注意看置顶帖。
不定期借助AI对点拨论坛陈年老帖进行挖坟回复,打扰勿怪!
帖中出现了你所不知道的生词怎么办?——先在点拨论坛搜索
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|点拨论坛 |网站地图

GMT+8, 2026-10-2 02:41 , Processed in 0.102727 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表