找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 23|回复: 0

[维护日志] [2026-05-11] [功能] [回帖邮件通知] - 回帖邮件通知功能优化与插件清理

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

9337

威望

7448

金钱

1万

贡献

管理员

自由的灵魂

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

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

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

×

一、需求背景

论坛需要在新回复时向主题作者(楼主)和被回复楼层作者(楼中楼)发送邮件通知。此前安装过第三方插件 [凹凸曼]邮件通知 1.6.0 (apoyl_email),该插件存在严重缺陷:

  • 楼中楼回复时,点击“发表回复”按钮无响应,页面卡死无法提交
  • 影响用户体验,导致楼中楼功能无法正常使用




二、解决方案

2.1 插件处理

操作说明
卸载插件在 Discuz! 后台卸载 [凹凸曼]邮件通知 1.6.0 (apoyl_email)
清理文件删除 /source/plugin/apoyl_email/ 整个目录
清理数据库检查 dx_common_plugin 表中是否残留插件记录


2.2 自建邮件通知功能

在 source/include/post/post_newreply.php 中直接嵌入邮件发送逻辑,替代第三方插件:

核心代码位置:post_newreply.php 末尾,$modpost->newreply() 执行之后

功能覆盖:
  • 功能1:主题新回复通知楼主
  • 功能2:楼中楼回复通知被回复楼层作者

2.3 SMTP 超时保护

为防止 SMTP 服务器响应慢阻塞发帖请求,添加了 socket 超时保护:

  1. // 设置 socket 超时保护,防止 SMTP 阻塞 AJAX 响应
  2. $old_socket_timeout = ini_get('default_socket_timeout');
  3. ini_set('default_socket_timeout', 5);

  4. loaducenter();
  5. include_once libfile('function/mail');
  6. @sendmail($toemail, $subject, $mail_message);

  7. // 恢复原始超时设置
  8. ini_set('default_socket_timeout', $old_socket_timeout);
复制代码


效果:
  • SMTP 通信超过 5 秒自动超时放弃
  • 使用 @ 静默抑制错误,不影响发帖主流程
  • 用户点击“发表回复”后无需等待邮件发送完成




三、涉及文件

文件路径作用
source/include/post/post_newreply.php回帖处理核心,新增邮件通知代码
source/plugin/apoyl_email/已删除(问题插件)





四、技术沉淀

项目经验总结
插件评估第三方插件需充分测试,尤其是涉及流程中断的功能(如表单提交)
超时保护同步发信时必须设置 socket 超时,否则 SMTP 故障会拖垮用户体验
静默失败邮件通知是辅助功能,不应影响主流程(发帖),失败应静默处理
代码位置邮件通知代码放在 $modpost->newreply() 之后、showmessage() 之前,确保 PID 已生成





五、env-base 分支更新

已在 第九节(目录结构与关键路径) 中补充:

  1. │   └── post/
  2. │       └── post_newreply.php    # 回帖处理核心(含同步邮件通知 + 5秒SMTP超时保护)
复制代码





六、未来展望

  • 如论坛规模扩大(日均回复 > 200),可考虑将回帖邮件改为队列模式(复用现有的 pre_common_mail_queue 基础设施)
  • 若需增加更多邮件通知场景(如 @提及通知),可复用相同的超时保护模式
不懂就搜!点此搜点拨论坛。如果本坛没有,请尝试点此问AI,或跟帖提问。
发帖前注意看置顶帖。
不定期借助AI对点拨论坛陈年老帖进行挖坟回复,打扰勿怪!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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