Wagtail 5配置邮件发送功能,使用网易或QQ邮箱 smtp 发送邮件
•
2024-02-20
•
文章类别:
框架 & CMS
•
阅读量:220
Wagtial 5 配置邮件发送功能,使用网易或 QQ 邮箱的 smtp 发送邮件,其他的邮箱配置一样,只需查看相应邮箱的 smtp 使用配置说明,找到其相应的参数进行替换即可。
在 Wagtial 5 中要使用发送邮件时,需要为网站启用发送邮件功能,如果需要使用 smtp 后端,则需要为网站配置相应 smtp 邮箱服务器,并为邮箱开启 smtp 服务。
本文中以网易邮箱和 QQ 邮箱为例,配置 wagtail 网站的发送邮件功能。
Wagtail 5 邮件服务配置
Wagtail 5 需要在 settings/base.py
文件中添加 smtp 配置启用 smtp,以实现使用 smtp 发送邮件。
使用网易邮箱的 smtp 配置
网易邮箱的 TLS 端口只能使用 465
,使用 465 端口,需要配置 EMAIL_USE_SSL = True
;密码要使用专为第三方应用使用的授权码。
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"
注:Wagtail 5 的发送邮件功能配置与 Django 的配置一样,只是使用的配置文件不同,Wagtail 5 使用的配置文件为 settings/base.py,Django 5 使用的配置文件为 settings.py,关于更详细的发送邮件配置查看:django 5 使用网易邮箱发送邮件
使用QQ邮箱的 smtp 配置
QQ 邮箱的 TLS 端口 465
和 587
都可以使用,如果使用 465 端口,需要配置 EMAIL_USE_SSL = True
;如果使用 587 端口,需要配置 EMAIL_USE_TLS = True
;密码要使用专为第三方应用使用的授权码。
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"
注:Wagtail 5 的发送邮件功能配置与 Django 的配置一样,只是使用的配置文件不同,Wagtail 5 使用的配置文件为 settings/base.py,Django 5 使用的配置文件为 settings.py,关于更详细的发送邮件配置查看:django 5 使用 QQ 邮箱发送邮件
配置解释
EMAIL_BACKEND
:
邮件服务后端,使用邮件服务商发送邮件,需要配置使用 smtp 邮件后端。
smtp 邮件后端为 django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST
:
smtp 服务器地址,使用邮件服务商发送邮件,需要配置使用 smtp 邮件后端。
EMAIL_USE_SSL
& EMAIL_USE_TLS
:
EMAIL_USE_SSL
表示是否使用隐式 TSL 连接传输数据,其对应的端口是 465
。
EMAIL_USE_TLS
表示是否使用显式 TSL 连接传输数据,其对应的端口是 587
。
EMAIL_USE_SSL
& EMAIL_USE_TLS
的默认值为 False
,并且只能设置其中一项为 True
。
如果使用 465 端口,需要配置 EMAIL_USE_SSL = True
;如果使用 587 端口,需要配置 EMAIL_USE_TLS = True
EMAIL_PORT
邮箱 TSL 端口是 465
或 587
,非 TSL 端口是 25
。
EMAIL_HOST_USER
邮件地址,填入你自己的邮箱地址。
EMAIL_HOST_PASSWORD
邮箱的密码或者授权码,有授权码的不能使用密码。
开启邮箱 SMTP 服务
默认情况下很多邮箱的 smtp 服务是关闭的,不允许使用 smtp 服务发送邮件,如果你要使用邮箱的 smtp 服务,需要先开启 smtp 服务。
网易邮箱开启 smtp 服务
- 登陆网易邮箱
- 点击邮箱界面左上方的 “设置” 按钮
- 点击下拉菜单中的 “POP3/SMTP/IMAP”
- 开启 “IMAP/SMTP服务” 或 “POP3/SMTP服务”,开启一个,另一个也会自动开启
- 点击 “IMAP/SMTP服务” 后面的 “开启” 按钮,发送短信验证开启
- 复制给出的授权码(一定要保存好,该授权码在 EMAIL_HOST_PASSWORD 中使用)
QQ邮箱开启 smtp 服务
- 登陆 QQ 邮箱
- 点击邮箱界面右上方的 “账号与安全” 按钮
- 点击 "安全设置" 菜单
- 点击 “POP3/IMAP/SMTP/Exchange/CardDAV 服务” 下的 “开启服务” 按钮,按照提示开启 smtp 服务
- 复制给出的授权码(一定要保存好,该授权码在 EMAIL_HOST_PASSWORD 中使用)
测试 Wagtail 5 发送邮件功能
在网站的跟目录,运行 shell 进入 python 命令行,测试 Wagtail 5 发送邮件功能是否配置正确:
python manage.py shell
django.core.mail
模块提供的 send_mail
函数发送邮件,在命令行输入如下 python 代码:
from django.core import mail
mail.send_mail(
subject="邮件标题",
message="邮件正文",
from_email="u1shizhi@qq.com",
recipient_list=["u1shizhi@qq.com"],
)
进入你的邮箱,查看是否收到邮件,如果收到邮件,则说明邮件功能配置正确。
参数解释
subject
:发送邮件的标题
message
:是邮件发送的正文内容
from_email
:发送人的邮箱地址
recipient_list
:收件人列表,可以配置多个邮箱地址
接收不到邮件的处理
使用 Wagtial 命令生成的项目,默认情况下使用配置文件是 settings/dev.py
,settings/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 配置文件
prod.py 配置文件是在生产环境中使用的配置文件,该文件中没有邮件后端配置。
修改文件 wsgi.py,把如下内容:
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE",
"demo.settings.dev",
)
修改为:
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE",
"demo.settings.prod",
)
0 评论