Wagtail 解决配置发送邮件的 smtp 服务后,无法接收邮件的问题。

SMTP 配置

在 Wagtail 中的 base.py 文件中配置 smtp 发送邮件后端,关于 smtp 的配置:

网易邮箱的配置:

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.163.com"
EMAIL_USE_SSL = True
EMAIL_PORT = 465
EMAIL_HOST_USER = "u1shizhi@163.com"
EMAIL_HOST_PASSWORD = "OYQJEISLJEOGHCLR"

详细信息查看:django 5 使用网易邮箱发送邮件

QQ 邮箱配置

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.qq.com"
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = "u1shizhi@qq.com"
EMAIL_HOST_PASSWORD = "jisljedsljdiwjg"

详细信息查看:django 5 使用 QQ 邮箱发送邮件

但是在配置 smtp 后,一切配置都正确,就是查看邮箱,无法收到邮件。

原因分析

使用 Wagtial 命令生成的项目,默认情况下使用配置文件是 settings/dev.pysettings/dev.py 在文件的开始导入 settings/base.py 中的配置,如果你没有修改 wsgi.py 文件中使用配置文件,无论你是使用 Apache 或 Nginx 服务器,还是直接使用 python manage.py runserver 命令,使用的都是 settings/dev.py 文件。

默认在该文件中配置了邮件后端 EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend",该配置覆盖了配置的 smtp 邮件后端。

解决方法

解决在配置 smtp 后,无法收到邮件的方法有两个:

  1. 删除 dev.py 文件中的邮件后端配置
  2. 使用 prod.py 配置文件

删除dev.py文件中的邮件后端配置

直接注释掉该行,或者直接删除该行。

使用prod.py配置文件

prod.py 配置文件是在生产环境中使用的配置文件,该文件中没有邮件后端配置。

修改文件 wsgi.py,把如下内容:

os.environ.setdefault(
    "DJANGO_SETTINGS_MODULE",
    "demo.settings.dev",
)

修改为:

os.environ.setdefault(
    "DJANGO_SETTINGS_MODULE",
    "demo.settings.prod",
)