自动群发邮件--email和smtplib基本模块的使用
本文作者:赵冰洁,中南财经政法大学金融学院
本文编辑:石 艳
技术总编:张馨月
爬虫俱乐部云端课程
1、email模块
1from email import encoders
2from email.mime.base import MIMEBase
3from email.mime.multipart import MIMEMultipart
4from email.mime.text import MIMEText
5from email.mime.image import MIMEImage
6from email.mime.application import MIMEApplication
email.mime.base.MIMEBase:这是 email.mime 模块中所有子类的一个基类,通常情况下不需要在使用时创建具体的 MIMEBase 的实例。
email.mime.multipart.MIMEMultipart:该子类是多个 MIME 对象的一个集合,其将邮件的发件人、收件人、主题、内容、图片、附件等对象整合在一起,代表的是一封完整的邮件。
email.mime.text.MIMEText:该子类表示的是一封邮件的文本内容,我们可以通过构造MIMEText对象来完成邮件文本内容的填充。
email.mime.image.MIMEImage:在程序中可以通过构造一个 MIMEImage 对象来为邮件添加图片。
email.mime.application.MIMEApplication:该子类表示为邮件添加附件,在我们需要自动发送带附件的邮件时,需要引入该子类。
2、smtplib模块
SMTP.connect(host) :连接指定的 SMTP 服务器
SMTP.ehlo(host):向 SMTP 服务器标识自己的身份
SMTP.login(user, password) :根据所获取的授权码登录 SMTP 服务器
SMTP.sendmail(sender, to, msg):发送邮件。其中,第三个参数 msg 是一个字符串,代表的是整封邮件
SMTP.quit():断开与 SMTP 服务器的连接
创建对应的 SMTP 对象并连接相应的 SMTP 服务器(163、qq等)
登录 SMTP 服务器
调用 smtplib 模块中的具体对象,发送邮件到目标邮箱
(1)登录邮箱,点击设置
(2)点击账户,打开 SMTP 服务
(3)在新弹出的验证密保窗口,根据指示进行操作以获取相应的邮箱授权码
1、文本邮件的发送
1# 准备邮件 email模块
2from email import encoders
3from email.mime.multipart import MIMEMultipart ## 发送人、接收人、主题
4from email.mime.text import MIMEText ## 邮件的内容
5from email.mime.image import MIMEImage ## 图片
6from email.mime.application import MIMEApplication ## 添加附件
7from email.mime.base import MIMEBase
8
9# 发送邮件 smtplib模块
10import smtplib
1sender = "10******90@qq.com" ## 发件人的邮箱
2receiver = "10******90qq.com" ## 收件人的邮箱
3subject = "爬虫俱乐部" ## 邮件主题
4password = "n**************j" ## 服务器授权码,用于连接邮箱服务器
1# 邮件基本格式信息
2msg = MIMEMultipart() ## 设置email信息
3msg["subject"] = subject ## 邮件主题
4msg["From"] = sender ## 发件人信息
5msg["To"] = receiver ## 收件人信息
6
7# 邮件正文信息
8msg_content = f'''
9您好:
10 非常感谢您在百忙之中阅读本邮件!在此祝您身体健康,工作顺利!本邮件来自微信公众号“Stata & Python数据分析”(原“爬虫俱乐部”)。
11
12 Stata&Python数据分析
13 2021年1月01日
14'''
15
16# 将邮件正文信息与基本格式信息整合
17msg.attach(MIMEText(msg_content))
1# 连接 SMTP 服务器
2s = smtplib.SMTP()
3s.connect("smtp.qq.com")
4# 登录服务器
5s.login(sender, password)
6# 发送邮件
7s.sendmail(sender,receiver,msg.as_string())
8# 关闭服务器连接
9s.quit()
2、含有图片信息的发送
1# 准备邮件 email模块
2from email import encoders
3from email.mime.base import MIMEBase
4from email.mime.multipart import MIMEMultipart
5from email.mime.text import MIMEText
6from email.mime.image import MIMEImage
7from email.mime.application import MIMEApplication
8import os
9os.chdir(r"D:/图片") ## 进入图片所在的工作路径
10
11# 发送邮件 smtplib模块
12import smtplib
13
14# 邮件相关参数
15sender = "10******90@qq.com"
16receiver = "10******90qq.com"
17subject = "爬虫俱乐部"
18password = "n**************j"
19
20# 邮件基本格式信息
21msg = MIMEMultipart() ## 设置email信息
22msg["subject"] = subject ## 邮件主题
23msg["From"] = sender ## 发件人信息
24msg["To"] = receiver ## 收件人信息
25
26# 邮件正文信息 图片及文本
27msg_content = MIMEText("<img src = 'cid:123'/>海洋", _subtype = "html")
28msg.attach(msg_content)
29
30img = MIMEImage(open("Tu.jpg",mode = "rb").read())
31img.add_header("Content-ID","123") ## 给图片设置ID值
32msg.attach(img)
33
34# 发送邮件
35## 连接 SMTP 服务器
36s = smtplib.SMTP()
37s.connect("smtp.qq.com")
38## 登录服务器
39s.login(sender, password)
40## 发送邮件
41s.sendmail(sender,receiver,msg.as_string())
42## 关闭服务器连接
43s.quit()
计算工作日的小能手——workdays
Seminar | 企业错报与银行贷款合同
小贴士:Markdown的基本语法
听说相貌也能量化 | 调用百度人脸检测API实现颜值打分
列出指定属性的变量|findname命令比ds命令
Json文件好帮手——JsonPath
pyecharts绘图——河流图展示
你知道MDPI期刊的热门题目吗?
工作中一切困难的解决途径——motivatedolly
微信公众号“Stata and Python数据分析”分享实用的stata、python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。