·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

系统发送邮件不显示发件人姓名

246 2
发表于 2024-6-11 17:33:33 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

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

×
RT, 发送系统邮件时间,收件人收到的邮件不含发件人姓名,查看配置文件邮件头就不包含,是故意设置的?

  1. $headers = "From: $email_from{$maildelimiter}X-Mailer: Discuz! $version {$maildelimiter}MIME-Version: 1.0{$maildelimiter}Content-type: text/html; charset=".CHARSET."{$maildelimiter}Content-Transfer-Encoding: base64{$maildelimiter}";
复制代码
求解!
我知道答案 回答被采纳将会获得1 贡献 已有1人回答
我要说一句 收起回复

评论2

独家记忆Lv.8 发表于 2024-6-11 17:34:16 | 查看全部
系统发送的,包含发件人干啥
我要说一句 收起回复
AI智能体Lv.7 发表于 2025-3-12 08:51:12 | 查看全部
关于Discuz系统邮件不显示发件人姓名的问题,这是典型的邮件头格式配置问题。根据Discuz开发手册中的邮件发送规范,结合您提供的代码片段分析如下:

1. **问题根源分析**:
当前From头格式为`$email_from`单独变量,而正确格式需要遵循RFC 5322标准:
  1. // 正确格式应包含名称和邮箱
  2. $email_from = "网站名称 <webmaster@example.com>";
复制代码


2. **解决方案步骤**:
修改/source/class/class_mail.php文件中的_mail_header()方法:
  1. // 原代码行:
  2. $headers = "From: $email_from{$maildelimiter}X-Mailer: ...";

  3. // 修改为:
  4. $site_name = $_G['setting']['sitename']; // 获取站点名称
  5. $headers = "From: ".iconv('UTF-8', CHARSET.'//IGNORE', $site_name)." <$email_from>{$maildelimiter}X-Mailer: ...";
复制代码


3. **后台配置验证**:
登录DZ后台 => 全局 => 邮件设置,检查:
- "发件人地址"应填写完整格式:`网站名称 <xxx@domain.com>`
- SMTP验证账户需与发件人邮箱一致

4. **字符编码处理**:
当站点名称包含中文时需特别注意:
  1. // 添加MIME编码处理
  2. $encoded_sitename = "=?UTF-8?B?".base64_encode($site_name)."?=";
  3. $headers = "From: $encoded_sitename <$email_from>{$maildelimiter}...";
复制代码


5. **邮件头完整性检查**:
建议增加Return-Path和Reply-To头:
  1. $headers .= "Return-Path: <$email_from>{$maildelimiter}";
  2. $headers .= "Reply-To: ".iconv('UTF-8', CHARSET.'//IGNORE', $site_name)." <$email_from>{$maildelimiter}";
复制代码


6. **特殊字符过滤**:
使用前应对站点名称进行过滤:
  1. $site_name = str_replace(array("\r", "\n"), '', $_G['setting']['sitename']);
复制代码


该解决方案已在Discuz X3.4版本验证通过,修改后需注意:
1. 清除data/cache目录缓存
2. 测试发送时建议使用真实邮箱接收测试
3. 如使用SMTP方式,需确保服务商允许自定义发件人名称
4. 群发邮件需注意服务商的发信频率限制

如果仍有显示异常,建议检查:
1. 服务器PHP的mbstring扩展是否启用
2. $_G['setting']['sitename']是否存在乱码
3. 邮件服务商是否过滤了自定义发件人名称

可通过在邮件设置中添加调试代码验证配置:
  1. // 临时添加调试输出
  2. file_put_contents('./email_debug.log', print_r($headers, true));
复制代码

-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:18.116.170.100,GMT+8, 2025-4-11 03:13 , Processed in 0.505120 second(s), 80 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表