700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python 发送邮件 普通邮件 HTML 发送带附件 群发邮件

python 发送邮件 普通邮件 HTML 发送带附件 群发邮件

时间:2023-12-22 06:46:04

相关推荐

python 发送邮件 普通邮件 HTML 发送带附件 群发邮件

我是一个测试工程师,在做自动化时,会写一些自己用的好的工具,目前有一些现成的工具,自己用着,不是大材小用,就是不符合实际需求,这次整理一个发送邮件的脚本。

文章目录

1. smtplib 与 email 模块介绍1.1. 模块使用2.发送 HTML 格式邮件和带附件的邮件2.1. HTML 格式邮件介绍2.2. 发送 HTML 格式邮件2.3. 带附件邮件介绍2.4. 发送带附件的邮件3.使用 zmail 模块收发邮件3.1. zmail 模块介绍3.2. zmail 模块使用3.3. 利用 zmail 模块收发邮件3.3.1 发送邮件

1. smtplib 与 email 模块介绍

介绍 smtplib 之前,可以先拆分下,介绍什么是 SMTP,SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。Python 内置对 SMTP 的支持,可以发送纯文本邮件、HTML 邮件以及带附件的邮件,Python 对 SMTP 支持有 smtplib 和 email 两个模块,email 负责构造邮件,smtplib 负责发送邮件。

1.1. 模块使用

smtplib 和 email 模块是 Python 的内置模块,无需额外安装,可以直接进行使用。使用步骤如下:

步骤 1:模块导入

import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplication

代码解释:

smtplib:smtplib 为负责发送邮件的模块;MIMEText:构建邮件主体内容时使用;MIMEMultipart:构建包含多个部分的邮件体的 MIME 对象,如带附件的邮件。MIMEApplication:用来表示主要类型的 MIME 消息对象。

步骤 2:初始化 SMTP 对象

s=smtplib.SMTP([host [,port [,local_hostname]])

参数解释:

host:SMTP 服务器主机的 IP 地址或者是域名;

port:服务的端口号(默认是 25);

local_hostname:服务器的地址(默认是 localhost)。

下面为构建好的 SMTP 对象示例:

s=smtplib.SMTP("")

步骤 3:构建邮件内容

通过 Python 提供 email 模块构建邮件内容;

步骤 4:发送邮件

通过 smtplib 模块实现发送邮件。

2.发送 HTML 格式邮件和带附件的邮件

2.1. HTML 格式邮件介绍

所谓 HTML 格式的邮件,是指一类像网页一样的邮件,它包含有 HTML(超文本)链接,单击链接可以转到其他页面,可以有图片,声音等。对比普通的文本邮件,HTML 格式的邮件,可以使得邮件内容多姿多彩,除文字外,还能有声音图像链接等等。

通常在宣传活动、电商类等内容上使用 HTML 格式邮件的情况较多,目的是为了更好的展示邮件内容,以及和用户有所交互。

2.2. 发送 HTML 格式邮件

发送邮件如下代码所示:

import smtplibfrom email.mime.text import MIMETexthost_server = '' # 主机地址# 发件人邮箱sender = "xxx@"# 发件人邮箱密码、授权码code = "xlogucqphohxcabi"# 收件人user = "xxxx@"# 准备邮件数据# 邮件标题mail_title = "第二封邮件"# 内容mail_content = """<p>HTML格式邮件内容</p><hr/><p><a href="">百度一下</a></p><ul><li>top1</li><li>top2</li></ul>"""# SMTPsmtp = smtplib.SMTP(host_server)# 登录smtp.login(sender, code)# 发送msg = MIMEText(mail_content, 'html', 'utf-8')msg['Subject'] = mail_titlemsg['From'] = sendermsg['To'] = usersmtp.sendmail(sender, user, msg.as_string())

代码解释:在上一小发送普通邮件代码的基础上,将发送内容由普通文本变更为 HTML 格式内容,首先修改 mail_content 设置为 HTML 内容,修改 MIMEText 构建参数为 html,其他内容不变。执行完成后,打开收件邮件即可收到第二封邮件,如下图所示。

2.3. 带附件邮件介绍

电子邮件附件是跟电子邮件一同发出的附带文件,附件包括声音、视频、文档、图片等一系列允许发送的文件(注意.exe 文件不允许发送)。带附件的邮件具体附件位置如下图所示。

2.4. 发送带附件的邮件

发送邮件如下代码所示:

import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplicationhost_server = '' # 主机地址# 发件人邮箱sender = "389818529@"# 发件人邮箱授权码code = "xlogucqphohxcabi"# 收件人user = "yanwydxf@"# 准备邮件数据# 邮件标题mail_title = "第三封邮件"# 邮件内容mail_content = "具体请查看附件!"# SMTPsmtp = smtplib.SMTP(host_server)# 登录smtp.login(sender, code)#构建附件attachment=MIMEApplication(open('newinfo.xlsx','rb').read())#为附件添加一个标题attachment.add_header('Content-Disposition','attachment',filename='data.xlsx')msg=MIMEMultipart()#构建带附件的实例#邮件标题msg['Subject'] = mail_title#发件人msg['From'] = sender#收件人msg['To'] = user# 发送smtp.sendmail(sender, user, msg.as_string())

代码解释:在发送普通邮件的代码的基础上,导入 email 模块下 MIMEMultipart 与 MIMEApplication 用于构建附件。首先通过 MIMEApplication 封装附件,newinfo.xlsx 为本地文件名称, data.xlsx 为发送到对方邮箱后所显示的名称。通过 MIMEMultipart 构建带附件的实例,其他内容不变。执行完成后,打开收件邮件即可收到第三封邮件,如下图所示。

3.使用 zmail 模块收发邮件

3.1. zmail 模块介绍

使用 zmail 模块可以更加便捷的实现发送邮件、接收邮件功能,无需手动添加 - 服务器地址,端口,合适的协议等内容,zmail 都已经完成了这些工作。

zmail 模块 github 地址:/ZYunH/zmail:

zmail 更多特性如下:

自动查找服务器地址及其端口;自动使用合适的协议登录;自动将 Python 字典转换为 MIME 对象(带有附件);自动添加邮件标题和本地名称,以避免服务器拒绝您的邮件;轻松自定义您的邮件标题;支持 HTML 作为邮件内容。Tips:zmail 仅在 python3 中运行,而无需第三方模块。不支持 python2。

你可以使用 zmai 进行以下操作:

作为监控脚本的发送邮件模块,及时传递信息嵌入到已有的项目中实现功能自定义邮件发送过程,诸如准点发送、定时发送等

zmail 模块支持的邮件服务器:

|服务器地址 |发邮件 |找回邮件 |备注

@ ✓ ✓ 需要应用专用密码@ ✓ ✓ POP3 需要应用专用密码@ ✓ ✓ ——@ ✓ ✓ ——@ ✓ ✓ 需要应用专用密码@ ✓ ✓ ——@ ✓ ✓ 需要应用专用密码@ ✓ ✓ 需要额外的设置

支持的企业邮件服务器:

名称 用法

腾讯企业邮箱 zmail.server(‘username’,‘psw’,config=‘qq’)阿里企业邮箱 zmail.server(‘username’,‘psw’,config=‘ali’)网易企业邮箱 zmail.server(‘username’,‘psw’,config=‘163’)Google 企业邮件 zmail.server(‘username’,‘psw’,config=‘google’)

3.2. zmail 模块使用

zmail 模块是 Python 的第三方库,使用前需要通过以下命令进行安装:

pip install zmail

zmail 安装完成后,使用之前请确保以下两点:

使用的 Python3;所使用的邮箱已开启 SMTP / POP3 服务

zmail 使用步骤如下:

步骤 1:导入 zmail 模块

import zmail

步骤 2:初始化邮件服务

server = zmail.server('xxxxx@', 'mdgxgiwpnkspbxgx')

步骤 3:发送或接收邮件

利用 zmail 模块封装好的方法,完成邮件发送或接收邮件操作。

3.3. 利用 zmail 模块收发邮件

接下来一起来学习如何通过 zmail 进行发送邮件和接收邮件。

3.3.1 发送邮件

发送邮件如下代码所示:

import zmailmail = {'subject': '你有一封新的邮件!', 'content_text': '测试内容!'}server = zmail.server('xxxxxx@', 'xlogucqphohxcabi')server.send_mail("xxxxxx@", mail)

代码解释:通过 zmail.server 构建与邮件服务器通信的 MailServer 对象,构建完成后,通过 send_mail () 方法发送邮件,第一个参数为接收邮件的邮箱,第二个参数为构建好的邮件内容。代码执行完成后,如下图所示。

3.2 群发邮件

日常工作中,经常遇到一种场景需要同时发给多名同事,并抄送给领导,此时可以使用 zmeil 实现群发邮件的功能,群发邮件代码如下所示:

import zmailmail = {'subject': '会议通知', 'content_text': '周四上午9点来一层开会!'}server = zmail.server('xxxxxx@', 'xlogucqphohxcabi')# 发送至收件人和抄送人server.send_mail(['xxxxxx@','xxxxxx@'],mail,cc=['xxxxxx@'])

代码解释:通过 zmail.server 构建与邮件服务器通信的 MailServer 对象,构建完成后,通过 send_mail () 方法发送邮件,第一个参数为接收邮件的邮箱,当需要群发时,这里设置为一个邮箱列表,第二个参数为构建好的邮件内容,第三个参数为要抄送的邮箱。代码执行完成后,如下图所示。

3.3 接收邮件

接收邮件如下代码所示:

import zmailserver = zmail.server('xxxxxx@', 'xlogucqphohxcabi')latest_mail = server.get_latest()# zmail.show(latest_mail)print(latest_mail["id"])print(latest_mail["from"])print(latest_mail["to"])print(latest_mail["subject"])

代码解释:通过 get_latest () 方法获取最新一封邮件,分别打印邮件 ID、发件人、收件人、邮件标题。当前邮箱邮件如下图所示。

参考网址:/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。