email + celery+django 异步发送邮件功能的实现

主要流程:

django通过发件服务器到收件服务器,最后到收件人

邮件配置设置需要打开SMTP/IMAP并获的授权码,完成授权功能实现发送给收件人

邮件配置请参考另一博客https://blog.csdn.net/qq_44238024/article/details/136277821

项目结构树

创建celery_taks目录配置celery环境

复制代码
# main.py

import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'web.settings')
app = Celery('celery_tasks')

# 配置 broker
app.config_from_object('celery_tasks.config')

# tasks ,所有tasks的路径
app.autodiscover_tasks(['celery_tasks.sms','celery_tasks.email'])

# config.py
broker_url = 'redis://127.0.0.1:6379/0'

创建email 任务tasks

复制代码
# tasks.py
from django.core.mail import send_mail
from celery_tasks.main import app

@app.task
def celery_send_email(subject,message,from_email
                      ,recipient_list):
    send_mail(subject=subject, message=message, from_email=from_email,
              recipient_list=recipient_list)

创建视图view.py调用celery

复制代码
# view.py
def email_test(request):
    subject = '主题'
    message = '信息'
    from_email = 'xxx' # 发件人
    recipient_list = ['xxx@163.com'] # 收件人列表
    from celery_tasks.email.tasks import celery_send_email
    # 注意使用delay 函数才可以走异步调用
    celery_send_email.delay(subject=subject,message=message,from_email=from_email,
              recipient_list=recipient_list)

    return JsonResponse({'code':0,'data':'ok'})

配置setting的email 的全局信息

复制代码
# =======email setting =========
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'xxx@163.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'xxx@163.com'  # 邮件发送人
EMAIL_HOST_PASSWORD = 'xxx'  # 邮件授权码
EMAIL_FROM = "xxx"  # 收件人看到的发件人

启动celery 命令

复制代码
celery -A celery_tasks.main worker -l INFO
复制代码
注意:只用才发这个命令时才走异步调用,而当没有下发命令,程序会等待其启动时异步调用
相关推荐
曲幽4 天前
FastAPI + Celery 实战:异步任务里调用 Redis 和数据库的全解析,及生产级组织方案
redis·python·fastapi·web·async·celery·task·queue
曲幽5 天前
FastAPI里玩转Redis和数据库的正确姿势,别让异步任务把你坑哭了!
redis·python·mysql·fastapi·web·celery·sqlalchemy·task·backgroundtask
曲幽6 天前
FastAPI + Celery 实战:异步任务的坑与解法,我帮你踩了一遍
redis·python·fastapi·web·async·celery·background·task·queue
闲人编程1 个月前
任务监控与错误重试
linux·服务器·网络·celery·任务队列·任务监控·错误重试
闲人编程2 个月前
Celery分布式任务队列
redis·分布式·python·celery·任务队列·异步化
J_liaty2 个月前
Spring Boot 邮件发送完整指南:带附件、内嵌图片与中文乱码根治方案
java·spring boot·spring·email
spencer_tseng2 个月前
Email System
email
七夜zippoe3 个月前
RabbitMQ与Celery深度集成:构建高性能Python异步任务系统
分布式·python·rabbitmq·celery·amqp
wang6021252184 个月前
FastAPI中的异步任务执行-celery
fastapi·celery
杨浦老苏4 个月前
邮件归档与全文检索利器Bichon
docker·全文检索·群晖·邮件·email