gpt4 book ai didi

Python 发送邮件方法总结

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python 发送邮件方法总结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1. 前言 。

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

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

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

2. 准备 。

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

Python 发送邮件方法总结

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

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

3. 方式一:smtplib 。

smtplib是 Python 自带的依赖库,可以直接导入使用 。

首先,通过邮箱账号、授权码、邮箱服务器地址初始化一个 SMTP 实例,然后进行连接 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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)

然后,将收件人列表、邮件标题、邮件正文内容、附件路径及附件文件名加入到上面定义的邮件体中 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def generate_email_body( self , email_to_list, email_title, email_content, attchment_path, files):
   """
   组成邮件体
   :param email_to_list:收件人列表
   :param email_title:邮件标题
   :param email_content:邮件正文内容
   :param attchment_path:附件的路径
   :param files:附件文件名列表
   :return:
   """
   self .email_body[ 'Subject' ] = email_title
   self .email_body[ 'From' ] = self .email_from_username
   self .email_body[ 'To' ] = "," .join(email_to_list)
 
   for file in files:
     file_path = attchment_path + '/' + file
     if os.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 实例对象,将邮件发送出去 。

?
1
2
3
4
5
6
# 收件人列表
email_to_list = [ '收件人1地址' , '收件人2地址' ]
 
# 发送邮件
# 注意:此处必须同时指定发件人与收件人,否则会当作垃圾邮件处理掉
self .smtp.sendmail( self .email_from_username, email_to_list, self .email_body.as_string())

邮件发送完毕之后,退出服务即可 。

?
1
2
3
4
5
6
def exit( self ):
   """
   退出服务
   :return:
   """
   self .smtp.quit()

4. 方式二:zmail 。

Zmail 项目创建目的是,使邮件处理变得更简单 。

使用 Zmail 发送接收邮件方便快捷,不需要手动添加服务器地址、端口以及适合的协议,可以轻松创建 MIME 对象和头文件 。

注意:Zmail 仅支持 Python3,不支持 Python2 。

首先,安装依赖库 。

?
1
2
# 安装依赖库
pip3 install zmail

然后,使用邮箱账号、授权码创建一个邮箱服务对象 。

?
1
2
3
4
5
6
7
8
9
10
11
class ZMailObject( object ):
 
   def __init__( self ):
     # 邮箱账号
     self .username = '**@126.com'
 
     # 邮箱授权码
     self .authorization_code = '授权码'
 
     # 构建一个邮箱服务对象
     self .server = zmail.server( self .username, self .authorization_code)

接着,将邮件主题、邮件内容、包含的附件路径加入到一个字典中,组成邮件主体 。

?
1
2
3
4
5
6
# 邮件主体
mail_body = {
     'subject' : '测试报告' ,
     'content_text' : '这是一个测试报告' , # 纯文本或者HTML内容
     'attachments' : [ './attachments/report.png' ],
}

最后,将调用send_mail()函数,将邮件发送出去即可 。

?
1
2
3
4
5
6
# 收件人
# 可以指定一个人,字符串;也可以是多个人,列表
mail_to = "收件人1"
 
# 发送邮件
self .server.send_mail(mail_to, mail_body)

5. 方式三:yagmail 。

yagmail 只需要几行代码,就能实现发送邮件的功能 。

相比 zmail,yagmail 实现发送邮件的方式更加简洁优雅 。

首先,安装依赖库 。

?
1
2
# 安装依赖库
pip3 install yagmail

然后,通过账号、授权码和服务器地址连接邮箱服务器,返回一个服务对象 。

?
1
2
3
4
5
import yagmail
 
# 连接服务器
# 用户名、授权码、服务器地址
yag_server = yagmail.SMTP(user = '**@126.com' , password = '授权码' , host = 'smtp.126.com' )

接着,通过 send() 函数,将邮件发送出去 。

?
1
2
3
4
5
6
7
8
9
# 发送对象列表
email_to = [ '**@qq.com' , ]
email_title = '测试报告'
email_content = "这是测试报告的具体内容"
# 附件列表
email_attachments = [ './attachments/report.png' , ]
 
# 发送邮件
yag_server.send(email_to, email_title, email_content, email_attachments)

邮件发送完毕之后,关闭连接即可 。

?
1
2
# 关闭连接
yag_server.close()

6. 最后 。

上面总结了 Python 发送邮件的 3 种方式,实际项目中,更推荐使用后两种方式.

以上就是Python 发送邮件方法总结的详细内容,更多关于Python 发送邮件的资料请关注我其它相关文章! 。

原文链接:https://cloud.tencent.com/developer/article/1662579 。

最后此篇关于Python 发送邮件方法总结的文章就讲到这里了,如果你想了解更多关于Python 发送邮件方法总结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com