PYTHON学习笔记(31)——关于smtplib库MIMEText和MIMEMultipart类的应用之自动发送邮件(html格式,有正文,有链接,有附件)

科普:MIME(Multipurpose Internet Mail Extensions)

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

它是一个互联网标准,扩展了电子邮件标准,使其能够支持:

非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。

这个标准被定义在RFC 2045、RFC 2046、RFC 2047、RFC 2048、RFC 2049等RFC中。 MIME改善了由RFC 822转变而来的RFC 2822,这些旧标准规定电子邮件标准并不允许在邮件消息中使用7位ASCII字符集以外的字符。正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息原本都不能在电子邮件中传输(MIME可以)。MIME规定了用于表示各种各样的数据类型的符号化方法。 此外,在万维网中使用的HTTP协议中也使用了MIME的框架,标准被扩展为互联网媒体类型。

——来自MIME_360百科

python2.3以及更高版本默认自带smtplib模块,无需额外安装。邮件传输文本,邮件主题会包含HTML、图像、声音以及附件等。  
  
email.mime可以理解为smtplib模块邮件内容主体的扩展,从只支持纯文本格式扩展到HTML,同时支持附件、音频、图像等格式,smtplib只负责邮件的投递  
SMTP类的定义:  
smtplib.SMTP():构造函数,功能是与smtp服务器建立连接,连接成功后,就可以向服务器发送相关请求,比如登录,校验,发送,退出  
SMPT.connect():  
  
EMAIL类:  
email.mime.multipart.MIMEMultipart([_subtype[,boundary]]):生成包括多个部分的邮件体  
email.mime.image.MIMEImage():创建包含音频数据的邮件体  
from email.mime.text import MIMEText  

——摘自:python中mimemultipart是第三方库吗_360问答 

代码练习:自动发送邮件(html格式,有正文,有链接,有附件)

import smtplib#引用控值邮箱发送邮件的库
from email.mime.text import MIMEText#引入mail.mime的MIMEText 类来实现支持HTML格式的邮件(email.mime是smtplib模块邮件内容主体的扩展)
from email.mime.multipart import MIMEMultipart#引进MIMEMultipart可以同时添加正文和附件
#设置基础内容
user='自己的邮箱'#定义发件人邮箱
pwd='自己的授权码'#QQ邮箱POP3/SMTP的授权码
to='自己定义收件邮箱'#收件人邮件

msg=MIMEMultipart()#创建一个可以同时添加正文和附件的msg

#设置HTML格式的邮件正文
#三个单引号表示包围注释内容,用来包含HTML代码
mail_msg='''
<p>这是一个常规的段落</p>
<p><a href="https://www.baidu.com">这是一个包含链接的段落</a></p>
'''
#如果仅添加正文可以用此公式:msg=MIMEText(mail_msg,'html','utf-8')#表示添加正文内容
msg.attach(MIMEText(mail_msg,'html','utf-8'))#添加正文
#添加附件
att1=MIMEText(open('附件路径.后缀','rb').read(),'base64','utf-8')#添加附件,由于定义了中文编码,所以文件可以带中文
att1["Content-Type"]='application/octet-stream'#数据传输类型的定义
att1["Content-Disposition"]='attachment;filename="test.pdf"'#定义文件在邮件中显示的文件名和后缀名,名字不可为中文
msg.attach(att1)#将附件添加到邮件内容当中

#配置调用邮件信息
msg['Subject']='测试邮件主题01'#设置邮件主题
msg['From']=user#设置发件人
msg['To']=to#设置收件人

#执行命令
s=smtplib.SMTP_SSL('smtp.qq.com',465)#选择QQ邮箱服务,默认端口465(smtplib.SMTP():构造函数,功能是与smtp服务器建立连接,连接成功后,就可以向服务器发送相关请求,比如登录,校验,发送,退出)
s.login(user,pwd)#登录QQ邮箱
s.send_message(msg)#发送邮件
s.quit()#退出QQ邮箱服务
print('Success')

代码运行:

 

  • 9
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值