活力39282
在线时间13640 小时
阅读权限200
管理员
自由的灵魂
- 积分
- 107434
- 主题
- 5630
- 回帖
- 26661
- 注册时间
- 2003-4-10
- 最后登录
- 2026-10-2
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、问题描述
论坛发送的各类邮件(评分、管理操作、回帖通知等)在收件人栏中显示为邮箱前缀(如 user88)而非论坛用户名(如 黑猫),部分客户端(如 QQ 邮箱)甚至显示为空字符串 "",影响用户体验和专业性。
二、原因分析
Discuz! 原有的 sendmail() 调用传入的是纯邮箱地址(如 user88@126.com),或简单拼接的 "用户名" <邮箱> 格式。后者在某些邮件客户端中解析异常,导致收件人显示不正确。
根据 RFC 822 标准,邮件头中的收件人格式应为:
- =?UTF-8?B?base64编码的用户名?= <email@domain.com>
复制代码
三、解决方案
在所有邮件发送点统一使用 Base64 编码格式:
- $encoded_name = '=?UTF-8?B?' . base64_encode($username) . '?=';
- $to = $encoded_name . ' <' . $email . '>';
- 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 | 禁止用户邮件 |
五、效果验证
六、技术沉淀
| 项目 | 经验总结 | | 标准格式 | 邮件收件人必须符合 RFC 822 标准,中文需 Base64 编码 | | 统一处理 | 所有邮件发送点应使用相同的格式化函数,便于维护 | | 队列兼容 | 入队时直接存储格式化后的 toemail,避免出队时重复查询用户信息 |
七、env-base 分支更新
已在相关文件中标注邮件格式修改。
需要我继续发第二个日志(欢迎邮件存储位置)吗?
一、问题描述
论坛发送的各类邮件(评分、管理操作、回帖通知等)在收件人栏中显示为邮箱前缀(如 user88)而非论坛用户名(如 黑猫),部分客户端(如 QQ 邮箱)甚至显示为空字符串 "",影响用户体验和专业性。
二、原因分析
Discuz! 原有的 sendmail() 调用传入的是纯邮箱地址(如 user88@126.com),或简单拼接的 "用户名" <邮箱> 格式。后者在某些邮件客户端中解析异常,导致收件人显示不正确。
根据 RFC 822 标准,邮件头中的收件人格式应为:
- =?UTF-8?B?base64编码的用户名?= <email@domain.com>
复制代码
三、解决方案
在所有邮件发送点统一使用 Base64 编码格式:
- $encoded_name = '=?UTF-8?B?' . base64_encode($username) . '?=';
- $to = $encoded_name . ' <' . $email . '>';
- 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 | 禁止用户邮件 |
五、效果验证
六、技术沉淀
| 项目 | 经验总结 | | 标准格式 | 邮件收件人必须符合 RFC 822 标准,中文需 Base64 编码 | | 统一处理 | 所有邮件发送点应使用相同的格式化函数,便于维护 | | 队列兼容 | 入队时直接存储格式化后的 toemail,避免出队时重复查询用户信息 |
七、env-base 分支更新
已在相关文件中标注邮件格式修改。 |
|