django使用默认send_mail与celery实现异步发送邮件

首先我们要了解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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quzah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值