Python SMTP发送QQ邮件
来源:互联网 发布:每次开机都要修复网络 编辑:程序博客网 时间:2024/06/10 18:39
1、QQ邮箱开通SMTP权限,并获取授权码
QQ邮箱---->设置---->账户---->开启服务---->IMAP/SMTP服务---->获取授权码
发送方和接收方都必须开通
2、发送纯文本邮件:
import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 配置mail_host = 'smtp.qq.com' # 服务器mail_port = 587 # 端口mail_sender = '******@qq.com' # 发送者邮箱mail_psw = '******' # 口令,不是邮箱密码mail_receivers = ['******@qq.com'] # 接收者邮箱# 内容msg_content = '邮件测试内容'msg_subject = 'SMTP邮件测试'msg_from = '发送者'msg_to = '接受者'msg = MIMEText(msg_content, 'plain', 'utf-8') # 纯文本内容msg['Subject'] = Header(msg_subject, 'utf-8') # 主题msg['From'] = Header(msg_from, 'utf-8') # 发送者名称msg['To'] = Header(msg_to, 'utf-8') # 接收者名称# 发送try: stmpObj = smtplib.SMTP(mail_host, mail_port) # 配置服务器和端口 stmpObj.starttls() # 先加密,部分邮箱服务商要求加密传输,避免被窃听 stmpObj.login(mail_sender, mail_psw) # 登录 stmpObj.sendmail(mail_sender, mail_receivers, msg.as_string()) # 发送邮件 stmpObj.quit()
print('发送成功')except smtplib.SMTPException as e: print('Error:', e)
# 构造MIMEText对象时,第一个参数就是邮件正文,第二个参数是MIME的subtype,传入'plain',最终的MIME就是'text/plain',最后一定要用utf-8编码保证多语言兼容性。
# as_string()把MIMEText对象变成str
运行结果:
3、发送HTML格式邮件
msg_content = '''<p>邮件测试内容</p><p><a href='http://www.baidu.com'>百度链接</a></p>'''msg = MIMEText(msg_content, 'html', 'utf-8') # 带HTML文本
运行结果:
4、同时支持HTML和Plain格式
msg = MIMEMultipart('alternative')msg['Subject'] = Header(msg_subject, 'utf-8') # 主题msg['From'] = Header(msg_from, 'utf-8') # 发送者名称msg['To'] = Header(msg_to, 'utf-8') # 接收者名称msg.attach(MIMEText(str('Python测试内容'),'plain','utf-8'))msg.attach(MIMEText('<p><a href="http://www.baidu.com"></a></p>','html','utf-8'))
5、发送带附件的邮件
# 如果Email中要加上附件怎么办?带附件的邮件可以看做包含若干部分的邮件:# 文本和各个附件本身,所以,可以构造一个MIMEMultipart对象代表邮件本身,# 然后往里面加上一个MIMEText作为邮件正文,再继续往里面加上表示附件的MIMEBase对象即可:
# 邮件对象msg = MIMEMultipart()msg['Subject'] = Header(msg_subject, 'utf-8') # 主题msg['From'] = Header(msg_from, 'utf-8') # 发送者名称msg['To'] = Header(msg_to, 'utf-8') # 接收者名称# 邮件正文MIMETextmsg.attach(MIMEText(msg_content, 'plain', 'utf-8'))# 邮件附件--图片attachment = MIMEBase('image','png',filename = 'bd_logo1.png')attachment.add_header('Content-Disposition','attachment',filename = 'bd_logo1.png')attachment.add_header('Content-ID','<logo>')attachment.add_header('X-Attachment-Id','logo')fp = open('bd_logo1.png','rb')attachment.set_payload(fp.read()) # 加载附件内容encoders.encode_base64(attachment) # 用base64编码msg.attach(attachment)
# 要把图片嵌入到邮件正文中,我们只需按照发送附件的方式,先把邮件作为附件添加进去,# 然后,在HTML中通过引用src="cid:0"就可以把附件作为图片嵌入了。# 如果有多个图片,给它们依次编号,然后引用不同的cid:x即可。
6、继承关系
# 构造一个邮件对象就是一个Messag对象,如果构造一个MIMEText对象,就表示一个文本邮件对象,# 如果构造一个MIMEImage对象,就表示一个作为附件的图片,要把多个对象组合起来,# 就用MIMEMultipart对象,而MIMEBase可以表示任何对象。它们的继承关系如下:
Message+- MIMEBase +- MIMEMultipart +- MIMENonMultipart +- MIMEMessage +- MIMEText +- MIMEImage
参考链接:
廖雪峰
菜鸟教程
0 0
- Python SMTP发送QQ邮件
- PYTHON smtp 发送qq邮件
- Python SMTP协议发送QQ邮件
- python smtp发送邮件
- python smtp发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- python smtp 发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- python SMTP发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- Python SMTP发送邮件
- Python QQ 发送Email SMTP
- Python发送邮件(Email SMTP)
- python使用smtp发送邮件
- chrome livestyle插件
- Domino群集配置方法
- struts2的执行流程
- URL和资源
- php函数symlink详解
- Python SMTP发送QQ邮件
- .NET中几种Timer的使用
- JSON 文件格式
- spark master ha彻底解密
- java 开发时用递归遇到的坑return
- 寒假水题之别救大兵瑞恩
- lotus中format用法大全
- TF-IDF算法概述
- JAVA设计模式初探之适配器模式