首先我们要了解django给我们默认提供的send_mail函数
def send_mail(subject, message, from_email, recipient_list,
fail_silently=False, auth_user=None, auth_password=None,
connection=None, html_message=None):
我们只需了解如下参数:
subject:发送邮件标题
message:发送邮件正文
from_email:发件者
recipient_list:收件人(注意,这里收件人是一个列表)
html_message:使用html格式正文
在使用send_mail函数之前我们要做一些小小的配置
我们在django默认配置文件settings中做如下配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 指定邮件后端
EMAIL_HOST = 'smtp.xx.com' # 发邮件主机
EMAIL_PORT = 25 # 发邮件端口
EMAIL_HOST_USER = 'xxxxxx@xx.com' # 授权的邮箱
EMAIL_HOST_PASSWORD = '*******' # 邮箱授权时获得的密码
EMAIL_FROM = 'xxxx<你的邮箱@xx.com>' # 发件人抬头
关于如何获得邮箱授权,这里我们以163邮箱为例子
首先登录你的163邮箱,选中邮件中心,右边齿轮设置
然后我们选中POP3/SMTP/IMAP
开启IMAP/SMTP服务
选中新增授权密码,这样我们就获得了一个新密码用户授权客户端
这里我们采用celery 异步发送短信验证码
celery是什么:
Celery 是一个简单,灵活且可靠的分布式系统,可以处理大量消息,同时为操作提供维护该系统所需的工具。这是一个任务队列,着重于实时处理,同时还支持任务调度。
celery基于生产者-消费者模式进行开发,可以有效帮我们完成发送邮件的任务
如何安装celery:
pip install -U Celery
celery的基本配置:
我们在celery_tasks创建main.py文件与config.py文件
main.py文件来创建celery实例,config.py文件用来配置celery
config.py配置:
# Celery 配置文件
# 使用redis作为容器
broker_url = 'redis://127.0.0.1:6379'
main.py配置:
# Celery的入口
from celery import Celery
# 创建Celery实例
celery_app = Celery('xxxx') # 你创建的任务名称
# 加载配置
celery_app.config_from_object('celery_tasks.config')
创建email任务:
在celery_tasks建立emai包
建立tasks.py文件
在tasks.py文件做如下配置
from django.core.mail import send_mail
from django.conf import settings
from celery_tasks.main import celery_app
@celery_app.task()
def send_email():
"""定义发送验证邮件的任务"""
subject = "你发送的邮件标题"
message ='你发送的邮件正文'
send_mail(subject=subject, recipient_list=['你发送邮箱的接收者'], from_email=settings.EMAIL_FROM, message=message)
在celery_tasks.main.py中做如下配置
celery_app.autodiscover_tasks(['celery_tasks.email'])
这样我们使用celery配置就完成了
使用celery发送邮件
我们首先要在你的views做如下配置:
from celery_tasks.email.tasks import send_email
sendy_email()
在终端使用这行命令来打开你的celery
celery -A celery_tasks.main worker -l info