Python中如何发送邮件?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!
<强> 1。前言强>
邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到
我们都知道Python内置了对SMTP的支持,可以发送纯文本,富文本,HTML等格式的邮件
本文将聊聊利用Python发送邮件的3种方式
<强> 2。准备强>
以126邮箱为例,在编码之前,我们需要开启SMTP服务
然后,手动新增一个授权码
其中,账号,授权码和服务器地址用于连接登录邮箱服务器
<强> 3。方式一:smtplib 强>
smtplib是Python自带的依赖库,可以直接导入使用
首先,通过邮箱账号,授权码,邮箱服务器地址初始化一个SMTP实例,然后进行连接
def __init__(自我): #初始化 自我。smtp=smtplib.SMTP () #连接邮箱服务器地址 self.smtp.connect (& # 39; smtp.126.com& # 39;) #加入主题和附件,邮件体 自我。email_body=MIMEMultipart(& # 39;混合# 39;) #发件人地址及授权码 自我。email_from_username=& # 39; * * @126.com& # 39; 自我。email_from_password=& # 39;授权码& # 39; # 登录 self.smtp.login(自我。email_from_username self.email_from_password)
然后,将收件人列表,邮件标题,邮件正文内容,附件路径及附件文件名加入到上面定义的邮件体中
def generate_email_body(自我、email_to_list email_title、email_content attchment_path,文件): “““ 组成邮件体 :param email_to_list:收件人列表 :param email_title:邮件标题 :param email_content:邮件正文内容 :param attchment_path:附件的路径 :param文件:附件文件名列表 返回: “““ self.email_body[& # 39;主题# 39;]=email_title self.email_body[& # 39;从# 39;]=self.email_from_username self.email_body[& # 39;使# 39;]=啊ⅰ? join (email_to_list) 文件的文件: file_path=attchment_path + & # 39;/& # 39;+文件 如果os.path.isfile (file_path): #构建一个附件对象 att=MIMEText(开放(file_path & # 39; rb # 39;) .read () & # 39; base64 # 39;, & # 39; utf - 8 # 39;) 丙氨酸(“Content-Type")=& # 39;应用程序/八进制# 39; att.add_header (“Content-Disposition",“attachment",文件名=(“gbk",““,文件)) self.email_body.attach (att) text_plain=MIMEText (email_content & # 39;平原# 39;,& # 39;utf - 8 # 39;) self.email_body.attach (text_plain)
接着,就可以使用SMTP实例对象,将邮件发送出去
#收件人列表 email_to_list=[& # 39;收件人1地址& # 39;,& # 39;收件人2地址& # 39;】 #发送邮件 #注意:此处必须同时指定发件人与收件的人,否则会当作垃圾邮件处理掉 self.smtp.sendmail(自我。email_from_username、email_to_list self.email_body.as_string ())
邮件发送完毕之后,退出服务即可
def退出(自我): “““ 退出服务 返回: “““ self.smtp.quit ()
<强> 4。方式二:zmail 强>
zmail项目创建目的是,使邮件处理变得更简单
使用zmail发送接收邮件方便快捷,不需要手动添加服务器地址,端口以及适合的协议,可以轻松创建MIME对象和头文件
注意:zmail仅支持Python3,不支持Python2
首先,安装依赖库
#安装依赖库 pip3安装zmail
然后,使用邮箱账号,授权码创建一个邮箱服务对象
类ZMailObject(对象): def __init__(自我): #邮箱账号 自我。用户名=& # 39;* * @126.com& # 39; #邮箱授权码 自我。authorization_code=& # 39;授权码& # 39; #构建一个邮箱服务对象 自我。服务器=zmail.server(自我。用户名、self.authorization_code)
接着,将邮件主题,邮件内容,包含的附件路径加入到一个字典中,组成邮件主体
#邮件主体 mail_body={ & # 39;主题# 39;:& # 39;测试报告& # 39;, & # 39;content_text& # 39;: & # 39;这是一个测试报告& # 39;#纯文本或者HTML内容 & # 39;附件# 39;:[& # 39;。/附件/report.png& # 39;], }
最后,将调用send_mail()函数,将邮件发送出去即可