活力39282
在线时间13640 小时
阅读权限200
管理员
自由的灵魂
- 积分
- 107434
- 主题
- 5630
- 回帖
- 26661
- 注册时间
- 2003-4-10
- 最后登录
- 2026-10-2
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、需求背景
需要修改论坛注册后自动发送的欢迎邮件内容,但无法在后台或常规文件中找到修改位置。
二、问题定位过程
2.1 初步排查
| 排查方向 | 结果 | | 后台「注册与访问控制」 | 有开关,但内容为空 | | 语言包 lang_email.php | 未找到自定义内容 | | 模板文件 email_register.htm | 是验证邮件模板,非欢迎邮件 |
2.2 调试方法
在 /source/function/function_mail.php 的 sendmail() 函数中添加调用栈追踪:
- if(strpos($subject, '欢迎注册') !== false) {
- $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
- file_put_contents(DISCUZ_ROOT . 'data/log/email_debug.log', print_r($backtrace, true), FILE_APPEND);
- }
复制代码
2.3 定位结果
调用栈显示欢迎邮件由 class_member.php 中的 sendmail_cron() 发送。
三、最终存储位置
欢迎邮件内容存储在数据库 pre_common_setting 表中:
| 字段 | 说明 | 示例值 | | welcomemsg | 发送方式 | 3(1=站内通知,2=邮件,3=两者) | | welcomemsgtitle | 邮件标题 | 欢迎注册点拨论坛(www.dianbo.org)! | | welcomemsgtxt | 邮件正文 | 尊敬的{username}... |
验证 SQL
- SELECT skey, svalue FROM pre_common_setting WHERE skey IN ('welcomemsg', 'welcomemsgtitle', 'welcomemsgtxt');
复制代码
四、修改方法
方法一:后台修改(推荐)
路径:后台 → 全局 → 注册与访问控制 → 注册
找到「欢迎信息内容」文本框修改即可。
方法二:SQL 直接修改
- UPDATE pre_common_setting SET svalue = '新内容' WHERE skey = 'welcomemsgtxt';
复制代码
支持的变量
| 变量 | 说明 | | {username} | 用户名 | | {time} | 发送时间 | | {sitename} | 网站名称 | | {bbname} | 站点名称 | | {adminemail} | 管理员 Email | | {siteurl} | 网站地址 |
五、技术沉淀
| 项目 | 经验总结 | | 查找未知配置 | 使用 debug_backtrace() 追踪调用链,快速定位源代码位置 | | 数据存储习惯 | Discuz! 将配置内容存储在数据库而非文件,需注意区分 | | 变量替换机制 | 欢迎邮件支持 {变量} 格式,可灵活定制内容 |
六、env-base 分支更新
已在「邮件系统」章节补充欢迎邮件存储位置说明。
|
|