一、前言电子邮件作为最正式、最规范的通讯方式,在日常办公中经常使用。我们都知道Python内置了对SMTP的支持,可以发送纯文本、富文本、HTML等多种格式的邮件。本文将讲3种使用Python发送邮件的方法2.准备以126邮箱为例。在编码之前,我们需要开启SMTP服务,然后手动添加一个授权码。其中,帐号、授权码和服务器地址用于连接并登录邮箱服务器3方法一:smtplibsmtplib是Python自带的依赖库,可以直接导入使用。首先通过邮件账号、授权码、邮件服务器地址初始化一个SMTP实例,然后连接def__init__(self):#initializeself.smtp=smtplib。SMTP()#连接邮件服务器地址self.smtp.connect('smtp.126.com')#添加主题和附件,邮件正文self.email_body=MIMEMultipart('mixed')#发件人地址和授权码self.email_from_username='**@126.com'self.email_from_password='授权码'#Loginself.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:recipientlist:paramemail_title:mailtitle:paramemail_content:mail文本内容:paramattchment_path:附件路径:paramfiles:附件文件名列表:return:"""self.email_body['Subject']=email_titleself.email_body['From']=self.email_from_usernameself.email_body['To']=",".join(email_to_list)forfileinfiles:file_path=attchment_path+'/'+fileifos.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实例对象发送电子邮件#RecipientListemail_to_list=['Recipient1Address','Recipient2Address']#SendEmail#注意:这里必须指定发件人和收件人,否则会被当作垃圾邮件丢弃self.smtp.sendmail(self.email_from_username,email_to_list,self.email_body.as_string())邮件发送后,可以退出服务defexit(self):"""退出服务:return:"""self.smtp.退出()4。方法二:创建zmailZmail项目的目的是为了让邮件处理更简单。使用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)接下来将邮件主题、邮件内容、包含的附件??路径添加到字典中,形成邮件正文#mailbodymail_body={'subject':'testreport','content_text':'Thisisatestreport',#纯文本或HTML内容'attachments':['./attachments/report.png'],}最后会调用send_mail()函数发送邮件#Recipient#可以指定一个人,String;也可以是多人,listmail_to="Recipient1"#发送邮件self.server.send_mail(mail_to,mail_body)5.方法三:yagmailyagmail只需要几行代码就可以实现发送邮件的功能相比之下zmail,yagmail有更简洁优雅的发送电子邮件的方式。首先安装依赖库#install依赖库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种方式。在实际项目中,推荐使用后两种方式
