Wagtail formbuilder联系表单提交后无法发送邮件如何排查解决?
问题原因及修复方案
- 开发环境邮件后端配置被覆盖
你的dev.py中覆写了base.py的邮件后端配置,设置为django.core.mail.backends.console.EmailBackend,该后端仅会将邮件内容打印到控制台,不会触发真实的SMTP发送请求,这也是你能在控制台看到完整邮件内容但收不到邮件的直接原因。
修复:如果需要在开发环境测试真实邮件发送,注释掉dev.py中的EMAIL_BACKEND配置即可;如果仅需要开发环境调试,保留该配置即可,生产环境不会受影响。
- 开发环境邮件后端配置被覆盖
- SMTP配置冲突
base.py中同时启用了EMAIL_USE_TLS = True和EMAIL_USE_SSL = True,二者互斥无法同时生效。Gmail SMTP的587端口使用TLS协议,需要关闭SSL配置。
修复:将base.py中的EMAIL_USE_SSL改为False。
- SMTP配置冲突
- Gmail SMTP鉴权规则限制
目前Gmail已不再支持直接使用账号密码作为SMTP登录凭证,直接填写账户密码会被服务端拦截。
修复:先开启对应谷歌账号的两步验证,随后生成专属的应用密码,将EMAIL_HOST_PASSWORD替换为生成的应用密码即可。
- Gmail SMTP鉴权规则限制
- 模型类命名不合法
contact/models.py中定义的模型类名为Form Page,中间包含空格,不符合Python命名规范,同时ParentalKey关联的字符串也对应写为了'Form Page',会导致模型逻辑异常。
修复:将类名修改为无空格的FormPage,同时将ParentalKey中的关联字符串同步改为'FormPage'。
- 模型类命名不合法
- 额外注意事项
Gmail SMTP服务限制发件人必须为当前认证的账号,不要在表单页面的后台配置中填写其他发件地址,否则会触发发件权限校验失败,导致邮件发送被拦截。
内容的提问来源于stack exchange,提问作者Ranjitha Sanker
相关产品推荐
相关产品推荐

