Windows版Moodle4.2.1+邮件被标签包裹问题求助
检查邮件模板的纯文本版本
进入站点管理的「消息」→「邮件模板」,逐个查看系统默认模板的纯文本内容,确认有没有误加未闭合的HTML标签,或者模板本身被不必要的标签包裹。Moodle 4.2+对模板的文本/HTML分离逻辑做了更新,纯文本模板里的HTML标签不会被自动转义,会直接显示在邮件里。排查文本过滤插件的影响
去「站点管理」→「插件」→「文本过滤」,看看有没有启用可能干扰邮件内容的过滤插件(比如自动链接、HTML清理这类)。4.2版本过滤触发逻辑有调整,部分插件可能会给纯文本邮件额外加上标签。可以临时禁用非必要的过滤插件,再发邮件测试。核对SMTP与邮件编码设置
在「站点管理」→「服务器」→「邮件」里,确认SMTP的编码是UTF-8,同时检查「邮件格式」选项是否正确区分了HTML和纯文本的处理。Windows环境下字符编码兼容问题可能导致标签转义失效,试试切换编码再测试。检查核心邮件函数的自定义修改
Moodle 4.2对lib/moodlelib.php里的email_to_user()这类核心邮件函数做了优化,如果你的站点有自定义插件或者本地代码修改过这些函数的文本处理流程,可能导致标签没被正确转义。对比官方原版4.2.1+的代码,排查本地有没有未适配的修改。测试默认主题与第三方插件冲突
临时切换到Boost这类默认主题,同时禁用所有第三方邮件相关插件(比如邮件美化、自定义通知插件),再发邮件试试。有些第三方主题或插件没适配4.2的新邮件处理机制,会导致标签被错误保留。验证数据库的邮件配置项
直接看Moodle数据库的config表,搜索mail相关的配置字段,确认mailformat、mailcharset这些关键值是否正确。如果数据库配置被异常修改,可能会让纯文本邮件的转义逻辑失效。
内容的提问来源于stack exchange,提问作者Anna from Svetlogorsk

