异步发送邮件
来源:10-3 AsyncHttpClient异步发送短信

杰神
2018-11-07
老师这里是使用AsyncHttpClient来实现异步发送短信。我现在写了一个发送邮件的功能,怎样改造成异步的呀?
import traceback
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
class MailUtils:
def __init__(self):
self.my_sender = "46702123@qq.com"
self.my_pass = 'plcatbopsnyvcajb' # 发件人邮箱密码(当时申请smtp给的口令)
def send_register_email(self,email):
my_user = email # 收件人邮箱账号,我这边发送给自己
msg = MIMEText("测试邮件内容", 'plain', 'utf-8')
msg['From'] = formataddr(["app注册验证码", self.my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号
msg['To'] = formataddr(["亲爱的用户", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号
msg['Subject'] = "测试邮件主题" # 邮件的主题,也可以说是标题
try:
print("开始发送邮件")
server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465
server.login(self.my_sender, self.my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.sendmail(self.my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
print("邮件发送错误")
traceback.print_exc(file=open('./mail.txt', 'w+'))
if __name__=="__main__":
mail=MailUtils()
mail.send_register_email("2343222224@qq.com")
写回答
2回答
-
bobby
2018-11-09
https://github.com/cole/aiosmtplib 用这个 或者如楼下所说的用celery,但是celery解决的是异步问题,并没有解决非阻塞的问题
00 -
叫我Accelerator
2018-11-08
扔到celery。。。
00
相似问题