发送邮件
通过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())