本人已参与【新人创作礼】活动,一起开启掘金创作之路。 本文首发于CSDN hello,大家好,今天我们来学习如何使用smtplib和email模块发送电子邮件,开始学习吧!\
文章目录
1. smtplib模块
smtplib是用来创建与SMTP服务器的连接的。
它有一些常用的类和方法,如下:
import smtplib
# SMTP:创建链接对象 参数为SMTP服务器地址和端口号
smtp = smtplib.SMTP("smtp.*****.com", 1234)
# login:登录邮箱,密码多为账号的授权码
smtp.login(username, password)
# send_message:发送电子邮件对象
smtp.send_message(msg)
# quit:关闭连接
smtp.quit()
2. email模块
email模块是用来根据标准的格式创建电子邮件。
接下来让我们学习如何创建一封电子邮件吧!
2.1 普通文本的电子邮件
# MIMEText用来创建文本电子邮件
from email.mime.text import MIMEText
# MIMEText参数: 正文内容,邮件类型,编码格式
msg = MIMEText("邮件正文", "plain", "UTF-8")
# 设置发送者,接收者,主题等信息
msg['From'] = "from@from.com"
msg['To'] = "to@to.com"
msg['Subject'] = "邮件主题"
以上代码我们创建了一封普通文本的电子邮件,但是,如果我们在正文中插入HTML代码,这些HTML代码是不会执行的,它们会和其他的文本一起显示。支持HTML文本的邮件在下面会说明。
2.2 HTML文本的电子邮件
from email.mime.text import MIMEText
# 将plain改为html
msg = MIMEText("<p>邮件正文</p>", "html", "UTF-8")
msg['From'] = "from@from.com"
msg['To'] = "to@to.com"
msg['Subject'] = "邮件主题"
2.3 添加附件
添加附件的代码比较复杂,因为MIMEText已经满足不了需求了。
# 邮件正文文本
from email.mime.text import MIMEText
# 邮件对象
from email.mime.multipart import MIMEMultipart
# 邮件应用对象
from email.mime.application import MIMEApplication
# 创建邮件对象并设置信息
msg = MIMEMultipart()
msg['From'] = "from@from.com"
msg['To'] = "to@to.com"
msg['Subject'] = "邮件主题"
# 创建正文文本
txt = MIMEText("Python Test(含附件)", "plain", "UTF-8")
# 加入msg对象
msg.attach(txt)
# 读取文件并创建一个邮件应用
part = MIMEApplication(open("我的测试文件.png", "rb").read())
# 给应用里加入附件 需要指定附件的名称而不是路径
part.add_header('Content-Disposition', 'attachment', filename="测试文件名.png")
# 将part加入msg
msg.attach(part)
在以上代码示例中,我们将文件“我的测试文件.png”加入到了邮件的附件里。
2.4 添加多个附件
可以使用for循环,将上文中的创建邮件应用部分改为如下代码:
file_list = ['file1.doc', "file2.png"]
for filename in file_list:
part = MIMEApplication(open(filename, "rb").read())
part.add_header('Content-Disposition', 'attachment', filename=filename)
msg.attach(part)
3. 发送电子邮件
3.1 获取授权码
这里先介绍一下如何获取邮箱的授权码,这里以网易邮箱为例子,先点击“设置”:
在下拉框中选择“POP3/SMTP/IMAP”:
进入页面后,开启“POP3/SMTP服务”:
然后,根据页面的提示信息完成验证,获取授权码。
3.2 Python自动发送电子邮件
复制你的授权码,开始编写Python程序:
from email.mime.text import MIMEText
import smtplib
# 创建邮件对象并设置信息
msg = MIMEText("您好!这是Python发来的一封邮件!", "plain", "UTF-8")
msg['From'] = "你的邮箱@163.com"
# 测试时,目标邮箱为你的邮箱
msg['To'] = "你的邮箱@163.com"
msg['Subject'] = "邮件主题"
# 网易SMTP服务器地址
smtp = smtplib.SMTP("smtp.163.com")
smtp.login("你的邮箱@163.com", "你的授权码")
# 发送邮件
smtp.send_message(msg)
smtp.quit()
运行代码,可以看到网易邮箱出现了一封未读邮件,如图:
好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!