Python中如何发送邮件

  

Python中如何发送邮件?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

<强> 1。前言

邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到

我们都知道Python内置了对SMTP的支持,可以发送纯文本,富文本,HTML等格式的邮件

本文将聊聊利用Python发送邮件的3种方式

<强> 2。准备

以126邮箱为例,在编码之前,我们需要开启SMTP服务

 Python中如何发送邮件

然后,手动新增一个授权码

其中,账号,授权码和服务器地址用于连接登录邮箱服务器

<强> 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()函数,将邮件发送出去即可

Python中如何发送邮件