1.使用django下的send_mail发送邮件
send_mail方法实际上是封装了python内置的stmp模块
在settings里先进行配置
EMAIL_HOST = 'smtp.qq.com' # 如果是 163 改成 smtp.163.com 以什么邮箱发送EMAIL_PORT = 465 #端口号EMAIL_HOST_USER = '306334678@qq.com' # 帐号 发送者邮箱账号EMAIL_HOST_PASSWORD = 'odokxrzlfejkcbbh' # 密码 不是密码, 授权码DEFAULT_FROM_EMAIL = EMAIL_HOST_USER#这样收到的邮件,收件人处就会这样显示#DEFAULT_FROM_EMAIL = 'lqz<'306334678@qq.com>'EMAIL_USE_SSL = True #使用ssl,qq只支持这种
然后在py文件直接用就行了,发送邮件是一个耗时的操作,可以新开启线程去发
from BBS import settings # 会有返回值,邮件发送成功是true # 拿到文章标题 atricle_name = ret.article.title # 被当前登录人评论 usre_name = request.user.username # 这个是一个同步的操作:等邮件发完,才能继续往下走(耗时的操作,应该怎么做?可以开一个线程) # ret=send_mail('您的%s文章被%s评论了'%(atricle_name,usre_name),'这个人评论了:%s'%(content,),settings.EMAIL_HOST_USER,['616564099@qq.com'] ) from threading import Thread # 实例化 t1 = Thread(target=send_mail, args=( '您的%s文章被%s评论了' % (atricle_name, usre_name), '这个人评论了:%s' % (content,), settings.EMAIL_HOST_USER, ['616564099@qq.com'])) t1.start()
2.stmp模块
import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddr# from email.mime.image import MIMEImage# from email.mime.base import MIMEBase# from email.header import Headermsg_from = '***@qq.com' # 发送方邮箱passwd = '***' # 填入发送方邮箱的授权码(填入自己的授权码,相当于邮箱密码)msg_to = '***@qq.com,***@qq.com' # 收件人邮箱,如果是多个,中间用逗号隔开# msg_to = '***@qq.com' # 收件人邮箱subject = "你发财啦" # 主题content = "好好学习天天向上"# 生成一个MIMEText对象(还有一些其它参数)# _text_:邮件内容msg = MIMEText(content)# 放入邮件主题msg['Subject'] = subject# 也可以这样传参# msg['Subject'] = Header(subject, 'utf-8')# 放入发件人msg['From'] = msg_from# 放入收件人# msg['To'] = '616564099@qq.com'msg['To'] = msg_to# msg['To'] = '发给你的邮件啊'try: # 通过ssl方式发送,服务器地址,端口 s = smtplib.SMTP_SSL("smtp.qq.com", 465) # 登录到邮箱 s.login(msg_from, passwd) # 发送邮件:发送方,收件方,要发送的消息 s.sendmail(msg_from, msg_to, msg.as_string()) print('成功')except Exception as e: print(e)finally: s.quit()