发送邮件

发送邮件.jpg

通过django发送邮件

settings配置

#配置邮件服务器 settings中
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 指定邮件后端
EMAIL_HOST = 'smtp.163.com' # 发邮件主机
EMAIL_PORT = 25 # 发邮件端口
EMAIL_HOST_USER = '填你自己的邮箱' # 授权的邮箱
EMAIL_HOST_PASSWORD = '授权时候获得的那个密码' # 邮箱授权时获得的密码,非注册登录密码
EMAIL_FROM = '随便填一点<填你的邮箱>' # 发件人抬头
EMAIL_USE_TLS = False # 是否使用安全协议传输

tasks

from celery import shared_task
from celery import Task
from django.core.mail import send_mail
from django.conf import settings


# 成功或失败邮件通知
class SendEmailTask(Task):
    def on_success(self, retval, task_id, args, kwargs):
        info = f"任务结果:成功 -- 任务id: {task_id} -- 任务参数:{args}"
        # send_mail 函数的参数依次为邮件主题、邮件内容、发件人邮箱地址、收件人邮箱地址列表
        send_mail("celery任务监控成功告警", info, settings.EMAIL_HOST_USER, ['xx@qq.com', 'xx@gmail.com'])
        
    def on_failure(self, exc, task_id, args, kwargs, einfo):
        info = f"任务结果:失败 -- 任务id: {task_id} -- 任务参数:{args} -- 失败信息: {exc}"
        send_mail("celery任务监控失败告警", info, settings.EMAIL_HOST_USER,  ['xx@qq.com', 'xx@gmail.com'])
    
    def on_retry(self, exc, task_id, args, kwargs, einfo):
        info = f"任务id: {task_id} -- 任务参数:{args} -- 重试了 -- 失败信息: {exc}"
        print(info)
        # send_mail("celery任务监控成功告警", info, settings.EMAIL_HOST_USER, ['cancerwake@126.com'])

# 如果bind=True 第一个参数就成了self
@shared_task(base=SendEmailTask)
def add(x, y):
    return x + y

#下面的写法也可以
@shared_task(base=SendEmailTask, bind=True)
def add(self, x, y):
    return x + y

正常发送邮件

我这里是用的126邮箱

# 1. 将Python内置的模块(功能导入)
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

# 2. 构建邮件内容
msg = MIMEText("跟着光 成为光  散发光", "html", "utf-8")
# 显示发件人的名称/邮件地址 自己的  就是发件人
msg['From'] = formataddr(['纯二', 'cancerwake@126.com'])  
msg['to'] = 'cancerwake@icloud.com'  # 发给谁
msg['Subject'] = "你最喜欢的一句话"  # 主题

# 3. 发送邮件
sever = smtplib.SMTP_SSL("smtp.126.com")
sever.login("cancerwake@126.com", "xx")  # 账户/授权码
# 自己邮箱/目标邮箱/内容
sever.sendmail("xx@126.com", "xx@gmail.com", msg.as_string())  
posted @ 2024-05-29 18:19  小满三岁啦  阅读(5)  评论(0编辑  收藏  举报