在Discuz系统中进行邮件内容美化,可通过以下两种方式实现:
一、原生系统修改方案
1. 邮件模板路径:
邮件模板位于 `/source/language/lang_email.php` 文件,需修改其中的HTML结构:
- $_G['setting']['email_header'] = '<!DOCTYPE html><html><head><style>.container{max-width:600px;margin:0 auto}</style></head><body><div class="container">';
- $_G['setting']['email_footer'] = '</div></body></html>';
复制代码
建议保留的必备元素:
- 验证链接:`{url}`
- 站点名称:`{sitename}`
- 过期时间:`{expiration}`
2. 样式优化技巧:
- 使用内联CSS确保邮件客户端兼容
- 建议采用响应式布局(最大宽度600px)
- 使用web安全字体(如Arial, Helvetica)
- 添加站点LOGO:`<img src="{site_logo_url}">`
二、扩展开发方案(插件实现)
若需要更灵活的定制,可通过插件开发实现:
1. 创建插件基础结构:
- class plugin_email_styler extends discuz_plugin {
- public function __construct() {
- $this->hook('sendmail_before', 'modify_email_template');
- }
-
- private function modify_email_template(&$message) {
- $custom_template = C::t('plugin_email_templates')->fetch_by_type($this->type);
- $message = str_replace(['{content}'], [$custom_template], $message);
- }
- }
复制代码
2. 建议实现的插件功能:
- 可视化编辑器(支持HTML/CSS)
- 多模板切换功能
- 邮件预览功能
- 变量插入快捷面板(支持20+系统变量)
- 移动端适配开关
3. 推荐采用的技术方案:
- 使用Discuz的pluginvar机制存储模板
- 通过hook机制挂载到sendmail流程
- 结合cache机制提升模板读取效率
三、优化建议
1. 安全注意事项:
- 过滤危险标签(script/iframe等)
- 强制添加退订链接
- 保留系统默认的验证信息区域
2. 兼容性处理:
- Outlook 2016+ 样式适配
- Gmail媒体查询支持
- 移动端字体缩放设置
如需进一步获取插件开发的具体实现方案或现成解决方案,可前往DZ插件网查看相关技术文档,有多个成熟方案可供参考。在进行深度定制时,建议先备份原始模板文件,并通过邮件发送测试功能验证修改效果。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |