原文链接:https://zhangzhiyuan.vip/details/5088f264-5225-46ec-a302-f58c4d4b8834
前言
最开始搭建 Django 博客系统时,知道Django 框架有内置的邮件系统,由于重置密码、调试报错邮件提醒等,这几天研究了一下,将自己的博客配置了邮件系统。
配置邮箱
邮箱配置建议使用网易的邮箱。个人邮箱或者域名邮箱都可以,如果有域名,推荐使用网易的域名邮箱,因为本人在使用配置了 QQ域名邮箱,链接qq smtp服务超时,总之没有配置成功,后来设置网易的域名邮箱可以成功发送邮件。
网易域名邮箱申请地址 :http://ym.163.com/ 域名邮箱申请,一般需要一天,因为需要验证域名 MX记录
域名邮箱申请需要拥有已备案的域名,如果没有域名,就建议使用个人的网易邮箱
更改配置
Django 的邮件配置是在 setting.py 配置文件中配置的,将域名邮箱信息或个人邮箱信息配置在 setting.py 文件中,本人是用的网易的域名邮箱
setting.py 文件
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.ym.163.com'
EMAIL_PORT = 994
EMAIL_HOST_USER = 'admin@zhangzhiyuan.vip'
EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD')
DEFAULT_FROM_EMAIL = 'Tiny博客 <admin@zhangzhiyuan.vip>'
SERVER_EMAIL = 'admin@zhangzhiyuan.vip'
| 配置项 | 描述 |
| ------------ | ------------ |
| EMAIL_BACKEND |实际发送电子邮件由电子邮件后端处理。 |
| EMAIL_USE_SSL | 是否使用SSL |
| EMAIL_HOST | smtp 服务器地址 |
| EMAIL_PORT | smtp 服务器端口 |
| EMAIL_HOST_USER | 邮件用户名 |
| EMAIL_HOST_PASSWORD | 邮件密码 |
| DEFAULT_FROM_EMAIL| 邮件默认地址,不设置显示,发件人: [Django]admin@zhangzhiyuan.vip|
os.getenv 获取环境变量中的密码
网易 Smtp 服务器:
| 邮箱类型| 服务器 | SSL协议端口号| 非SSL协议端口号 |
| ------------ | ------------ | ------------ | ------------ |
| 个人邮箱| smtp.163.com |465/994| 25 |
| 域名邮箱| smtp.ym.163.com |465/994 | 25|
注:网易域名邮箱密码是申请时创建的密码,没有授权码;如果是个人邮箱,需要在个人的邮箱账户上设置客户端授权码
代码调用
如果是后台修改密码、接收错误调试信息接收发送邮件使用,配置 setting.py 文件就可以使用了,如果代码中使用发送邮件,则可以调用 Django 中封装好的邮件发送模块。
from django.core.mail import send_mail
send_mail(
'Subject here',
'Here is the message.',
'from@example.com',
['to@example.com'],
fail_silently=False,
)
使用EMAIL_HOST和EMAIL_PORT设置中指定的SMTP主机和端口发送邮件 。在 EMAIL_HOST_USER和EMAIL_HOST_PASSWORD设置,如果设置,用于验证的SMTP服务器, EMAIL_USE_TLS并EMAIL_USE_SSL设置控制安全连接是否被使用。
发送邮件默认使用 setting.py 文件中配置的邮箱配置