$Django 发送邮件--django封装模块和python内置SMTP模块
发布日期:2021-08-12 02:36:36 浏览次数:3 分类:技术文章

本文共 6617 字,大约阅读时间需要 22 分钟。

一 使用SMTP模块发送邮件

import smtplibfrom email.mime.text import MIMETextfrom email.header import Headermsg_from = '***@qq.com'  # 发送方邮箱passwd = '****'  # 填入发送方邮箱的授权码(填入自己的授权码,相当于邮箱密码)msg_to = ['****@qq.com','**@163.com','*****@163.com']  # 收件人邮箱# msg_to = '616564099@qq.com'  # 收件人邮箱subject = "邮件标题"  # 主题content = "邮件内容,我是邮件内容,哈哈哈"# 生成一个MIMEText对象(还有一些其它参数)msg = MIMEText(content)# 放入邮件主题msg['Subject'] = subject# 也可以这样传参# msg['Subject'] = Header(subject, 'utf-8')# 放入发件人msg['From'] = msg_from# 放入收件人# msg['To'] = '616564099@qq.com'# 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 s.SMTPException as e:    print(e)finally:    s.quit()

二 发送html格式邮件

import smtplibfrom email.mime.text import MIMETextfrom email.header import Headermsg_from = '306334678@qq.com'  # 发送方邮箱passwd = 'ldoetnwqdjqqbjjj'  # 填入发送方邮箱的授权码(填入自己的授权码,相当于邮箱密码)msg_to = ['616564099@qq.com']  # 收件人邮箱# msg_to = '616564099@qq.com'  # 收件人邮箱subject = "邮件标题"  # 主题# *************发送html的邮件**********content = '''

Python 邮件发送测试...

这是一个链接

'''# 生成一个MIMEText对象msg = MIMEText(content)# 放入邮件主题msg['Subject'] = subject# 也可以这样传参# msg['Subject'] = Header(subject, 'utf-8')# 放入发件人msg['From'] = msg_from# 放入收件人# msg['To'] = '616564099@qq.com'# 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 s.SMTPException as e: print(e)finally: s.quit()

三 发送带附件的邮件

import smtplibfrom email.mime.text import MIMEText from email.header import Headerfrom email.mime.multipart import MIMEMultipartfrom email.mime.base import MIMEBase #文件from email.mime.image import MIMEImage #图片from email import  encodersmsg_from = '306334678@qq.com'  # 发送方邮箱passwd = '***'  # 填入发送方邮箱的授权码(填入自己的授权码,相当于邮箱密码)msg_to = ['616564099@qq.com']  # 收件人邮箱subject = "邮件标题"  # 主题# 创建一个带附件的实例msg = MIMEMultipart()# 放入邮件主题msg['Subject'] = subject# 也可以这样传参# msg['Subject'] = Header(subject, 'utf-8')# 放入发件人msg['From'] = msg_from# 邮件正文内容msg.attach(MIMEText('Python 邮件发送测试……', 'plain', 'utf-8'))# 构造附件1,传送当前目录下的 test.txt 文件att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')att1["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att1["Content-Disposition"] = 'attachment; filename="test.txt"'msg.attach(att1)# 构造附件2,with open('test.png', 'rb') as f:    # 设置附件的MIME和文件名,这里是png类型:    mime = MIMEBase('image', 'png', filename='test.png')    # 加上必要的头信息:    mime.add_header('Content-Disposition', 'attachment', filename='test.png')    mime.add_header('Content-ID', '<0>')    mime.add_header('X-Attachment-Id', '0')    # 把附件的内容读进来:    mime.set_payload(f.read())    # 用Base64编码:    encoders.encode_base64(mime)    # 添加到MIMEMultipart:    msg.attach(mime)# 构造附件3,图片格式fp = open('test.png', 'rb')msgImage = MIMEImage(fp.read())fp.close()# 定义图片 ID,在 HTML 文本中引用msgImage.add_header('Content-ID', '
')msg.attach(msgImage)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 s.SMTPException as e: print(e)finally: s.quit()

 四 Django发送邮件

1.在setting中配置

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只支持这种#EMAIL_USE_TLS = False # 使用tls#EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True

2.view视图函数

from django.core.mail import send_mail    import threading    from bbs import settings    t = threading.Thread(target=send_mail, args=("您的文章%s新增了一条评论内容" ,                                                 'xxxx',                                                 settings.EMAIL_HOST_USER,                                                 ["10086@qq.com"])                         )    t.start()

一次性发多封邮件

from django.core.mail import send_mass_mailmessage1 = ('第一封邮件标题', '这是邮件内容', 'from@example.com', ['first@example.com', 'other@example.com'])message2 = ('第二封邮件标题', '这是邮件内容', 'from@example.com', ['second@test.com'])'''fail_silently: (可选)布尔值。为 False 时, send_mail 会抛出 smtplib.SMTPException 异常。smtplib 文档列出了所有可能的异常。 这些异常都是 SMTPException 的子类'''send_mass_mail((message1, message2), fail_silently=False)'''send_mail 每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。'''

携带附件或发送html(需要接收方支持)

from django.core.mail import EmailMultiAlternatives# subject 主题 content 内容 to_addr 是一个列表,发送给哪些人msg = EmailMultiAlternatives('邮件标题', '邮件内容', '发送方', ['接收方'])msg.content_subtype = "html"# 添加附件(可选)msg.attach_file('test.txt')# 发送msg.send()

备注:send_mail 每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。

各大邮箱smtp服务器及端口

新浪邮箱smtp服务器外发服务器:smtp.vip.sina.com收件服务器:pop3.vip.sina.com新浪免费邮件外发服务器:smtp.sina.com.cn收件服务器:pop3.sina.com.cn163邮箱smtp服务器pop: pop.163.comsmtp: smtp.163.comQQ邮箱smtp服务器及端口接收邮件服务器:imap.exmail.qq.com,使用SSL,端口号993发送邮件服务器:smtp.exmail.qq.com,使用SSL,端口号465或587yahoo邮箱smtp服务器接:pop.mail.yahoo.com.cn发:smtp.mail.yahoo.com126邮箱smtp服务器pop: pop.126.comsmtp: smtp.126.com新浪免费邮箱POP3:pop.sina.comSMTP:smtp.sina.comSMTP端口号:25新浪VIP邮箱POP3:pop3.vip.sina.comSMTP:smtp.vip.sina.comSMTP端口号:25新浪企业邮箱POP3:pop.sina.comSMTP:smtp.sina.comSMTP端口号:25雅虎邮箱POP3:pop.mail.yahoo.cnSMTP:smtp.mail.yahoo.cnSMTP端口号:25搜狐邮箱POP3:pop3.sohu.comSMTP:smtp.sohu.comSMTP端口号:25TOM邮箱POP3:pop.tom.comSMTP:smtp.tom.comSMTP端口号:25Gmail邮箱POP3:pop.gmail.comSMTP:smtp.gmail.comSMTP端口号:587 或 25QQ邮箱POP3:pop.exmail.qq.comSMTP:smtp.exmail.qq.comSMTP端口号:25263邮箱域名:263.netPOP3:263.netSMTP:smtp.263.netSMTP端口号:25域名:x263.netPOP3:pop.x263.netSMTP:smtp.x263.netSMTP端口号:25域名:263.net.cnPOP3:263.net.cnSMTP:263.net.cnSMTP端口号:25域名:炫我型POP3:pop.263xmail.comSMTP:smtp.263xmail.comSMTP端口号:2521CN 免费邮箱POP3:pop.21cn.comSMTP:smtp.21cn.comIMAP:imap.21cn.comSMTP端口号:2521CN 经济邮邮箱POP3:pop.21cn.comSMTP:smtp.21cn.comSMTP端口号:2521CN 商务邮邮箱POP3:pop.21cn.netSMTP:smtp.21cn.netSMTP端口号:2521CN 快感邮箱POP3:vip.21cn.comSMTP:vip.21cn.comSMTP端口号:2521CN Y邮箱POP3:pop.y.vip.21cn.comSMTP:smtp.y.vip.21cn.comSMTP端口号:25中华网任我邮邮箱POP3:rwpop.china.comSMTP:rwsmtp.china.comSMTP端口号:25中华网时尚、商务邮箱POP3:pop.china.comSMTP:smtp.china.comSMTP端口号:25
View Code

qq邮箱配置smtp

转载于:https://www.cnblogs.com/3sss-ss-s/p/10077656.html

转载地址:https://blog.csdn.net/weixin_30642561/article/details/97323386 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:用户注册路径简化
下一篇:又被“过运营商语音认证”虐了一回

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月08日 10时57分40秒