Python 发送邮件方法总结
1.前言
邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到
我们都知道Python内置了对SMTP的支持,可以发送纯文本、富文本、HTML等格式的邮件
本文将聊聊利用Python发送邮件的3种方式
2.准备
以126邮箱为例,在编码之前,我们需要开启SMTP服务
然后,手动新增一个授权码
其中,账号、授权码和服务器地址用于连接登录邮箱服务器
3.方式一:smtplib
smtplib是Python自带的依赖库,可以直接导入使用
首先,通过邮箱账号、授权码、邮箱服务器地址初始化一个SMTP实例,然后进行连接
def__init__(self): #初始化 self.smtp=smtplib.SMTP() #连接邮箱服务器地址 self.smtp.connect('smtp.126.com') #加入主题和附件,邮件体 self.email_body=MIMEMultipart('mixed') #发件人地址及授权码 self.email_from_username='**@126.com' self.email_from_password='授权码' #登录 self.smtp.login(self.email_from_username,self.email_from_password)
然后,将收件人列表、邮件标题、邮件正文内容、附件路径及附件文件名加入到上面定义的邮件体中
defgenerate_email_body(self,email_to_list,email_title,email_content,attchment_path,files): """ 组成邮件体 :paramemail_to_list:收件人列表 :paramemail_title:邮件标题 :paramemail_content:邮件正文内容 :paramattchment_path:附件的路径 :paramfiles:附件文件名列表 :return: """ self.email_body['Subject']=email_title self.email_body['From']=self.email_from_username self.email_body['To']=",".join(email_to_list) forfileinfiles: file_path=attchment_path+'/'+file ifos.path.isfile(file_path): #构建一个附件对象 att=MIMEText(open(file_path,'rb').read(),'base64','utf-8') att["Content-Type"]='application/octet-stream' att.add_header("Content-Disposition","attachment",filename=("gbk","",file)) self.email_body.attach(att) text_plain=MIMEText(email_content,'plain','utf-8') self.email_body.attach(text_plain)
接着,就可以使用SMTP实例对象,将邮件发送出去
#收件人列表 email_to_list=['收件人1地址','收件人2地址'] #发送邮件 #注意:此处必须同时指定发件人与收件人,否则会当作垃圾邮件处理掉 self.smtp.sendmail(self.email_from_username,email_to_list,self.email_body.as_string())
邮件发送完毕之后,退出服务即可
defexit(self): """ 退出服务 :return: """ self.smtp.quit()
4.方式二:zmail
Zmail项目创建目的是,使邮件处理变得更简单
使用Zmail发送接收邮件方便快捷,不需要手动添加服务器地址、端口以及适合的协议,可以轻松创建MIME对象和头文件
注意:Zmail仅支持Python3,不支持Python2
首先,安装依赖库
#安装依赖库 pip3installzmail
然后,使用邮箱账号、授权码创建一个邮箱服务对象
classZMailObject(object): def__init__(self): #邮箱账号 self.username='**@126.com' #邮箱授权码 self.authorization_code='授权码' #构建一个邮箱服务对象 self.server=zmail.server(self.username,self.authorization_code)
接着,将邮件主题、邮件内容、包含的附件路径加入到一个字典中,组成邮件主体
#邮件主体 mail_body={ 'subject':'测试报告', 'content_text':'这是一个测试报告',#纯文本或者HTML内容 'attachments':['./attachments/report.png'], }
最后,将调用send_mail()函数,将邮件发送出去即可
#收件人 #可以指定一个人,字符串;也可以是多个人,列表 mail_to="收件人1" #发送邮件 self.server.send_mail(mail_to,mail_body)
5.方式三:yagmail
yagmail只需要几行代码,就能实现发送邮件的功能
相比zmail,yagmail实现发送邮件的方式更加简洁优雅
首先,安装依赖库
#安装依赖库 pip3installyagmail
然后,通过账号、授权码和服务器地址连接邮箱服务器,返回一个服务对象
importyagmail #连接服务器 #用户名、授权码、服务器地址 yag_server=yagmail.SMTP(user='**@126.com',password='授权码',host='smtp.126.com')
接着,通过send()函数,将邮件发送出去
#发送对象列表 email_to=['**@qq.com',] email_title='测试报告' email_content="这是测试报告的具体内容" #附件列表 email_attachments=['./attachments/report.png',] #发送邮件 yag_server.send(email_to,email_title,email_content,email_attachments)
邮件发送完毕之后,关闭连接即可
#关闭连接 yag_server.close()
6.最后
上面总结了Python发送邮件的3种方式,实际项目中,更推荐使用后两种方式。
以上就是Python发送邮件方法总结的详细内容,更多关于Python发送邮件的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。