1.步骤:批量读取文件内容
通过账号密码登录邮箱
设置邮件收件人等信息
配置邮件正文和附件并发送
2.在网络上能搜到成型的Python发邮件代码,今天我们将会拆解代码块,并理解每部分的功能。
接下来,我们将会学习登录邮件、编辑收发件人等信息的操作。
3.今天的内容注重于了解,无需记忆。
在代码中登录邮箱和发送邮件由smtplib模块负责,该模块是内置模块,我们直接导入即可。
4.导入模块需要使用import,安装模块需要使用pip install...,但这里的smtplib是内置模块,我们不需要安装。
因此,导入smtplib模块,我们应该import smtplib
5.邮箱服务器的功能就是:
当发件人发出邮件时,会根据邮件地址发送给邮件服务器。
之后,收件人登录自己的邮箱,会从邮件服务器获取邮件,就能够查看到刚才发件人发出的邮件了。
端口号就像是门牌号,每个服务器有多个端口,只有通过端口号,程序才能访问到该服务器。
为了对端口号进行区分,就将每个端口进行编号,就是端口号。
6.其他邮箱一般使用账号和密码。
而在代码中,需要用到账号和授权码。
授权码就是用于登录第三方客户端专用的密码,课程中我们以QQ邮箱为案例,就要学习如何获取QQ邮箱中的
授权码。
7.如何获取自己邮箱的授权码?
1.在浏览器中打开网址mail.qq.com,输入自己的账号和密码,登录邮箱并找到【设置】
2.点击【设置】,找到【账户】;
3.滑动页面找到【SMTP服务】,选择第二项,点击【开启】;
4.【短信验证】
点击【开启】后会弹出验证密保,需要用自己的手机号发送指定内容,发送完成后,点击【我已发送】
5.QQ邮箱设置
完成验证后,将会获得一个【授权码】(授权码不要告诉其他人),复制并且保存授权码,这样我们就拿到
了授权码。
8.在代码中需要先连接邮箱服务器,再登录邮箱。
1.smtplib.SMTP_SSL(服务器地址,端口号)——负责连接邮箱服务器。
2.login(账号,授权码)——负责登录邮箱,课程中均使用阿玲的邮箱
9.例子:
import smtplib
smtpObj = smtplib.SMTP_SSL("smtp.qq.com",465)
这段代码是连接QQ邮箱服务器的。
注释:
QQ邮箱服务器地址为"smtp.qq.com",端口号为465,连接邮箱将邮箱服务器地址和端口号,传入
smtplib.SMTP_SSL()
10.在代码中我们经常会赋值,赋值是为了更方便的调用。
11.smtpObj.login(mailUser,mailPass)
这行代码的作用是使用账号和授权码登录邮箱。
注意,login()的作用是登录邮箱,传入存储账号和授权码信息的变量,因此,是使用账号和授权码登录邮箱
12.总结一下:
我们使用QQ邮箱时,服务器地址为smtp.qq.com,端口号为465
使用smtplib调用函数SMTP_SSL(),传入服务器地址和端口号,赋值给smtpObj
13.抄写代码是掌握知识的第一步
14.登录邮箱需要使用对象名smypObj调用方法login(),该方法中需要传入两个参数,账号和授权码。
import smtplib
mailUser = "[email protected]"
mailPass = "abcnawckdujkdace"
smtpObj = smtplib.SMTP_SSL("smtp.qq.com",465"
#使用login()函数传入邮箱账户和授权码,登录邮箱
smtpObj.login(mailUser,mailPass)
15.登录邮箱后,需要填写邮件的发件人、收件人等信息。
以前我们将账号赋值给了sender,将收件人账号用字典存储了起来。字典的键是收件人姓名,字典的值是收
件人邮箱。
16.邮件中的内容有发件人、收件人、主题和正文。
接下来,学习在Python中设置的方法。
17.读取字典receiverDict中的信息,需要使用for循环遍历字典,并且输出收件人和邮箱
案例:
import smtplib
mailUser="[email protected]"
授权码
mailPass="abcnawckdujkdace"
使用smtplib.SMTP_SSL(服务器,端口号),赋值给smtpObj
smtpObj = smtplib.SMTP_SSL("smtp.qq.com",465)
使用login()函数传入邮箱账户和授权码,登录邮箱
smtpObj.login(mailUser,mailPass)
发件人、收件人
sender="[email protected]"
receiverDict={}
for循环遍历字典receiverDict,将键赋值给变量receiver
for receiver in receiverDict:
#使用print()输出receiver
print(receiver)
#使用receiverDict[receiver]提取值并且输出
print(receiverDict[receiver])
现在我们就能输出收件人和邮箱了。
18.编辑收件人等信息需要用到email模块,该模块中封装了很多方法。负责编辑收件人、发件人、主题等信
息。
19.接下来,我们将要学习发件人的方法。
首先,需要从email.header中导入Header类,用于编辑发件人。
从email.mime.multipart中导入MIMEMultipart类,用于整合邮件信息。
20.编辑发件人,需要从email.header中导入Header类:
from email.header import Header
21.编辑邮件内容之前,我们先使用from...import...的方式从email.header中导入Header类。
使用from...import从email.mime.multipart导入MIMEMultipart类。
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
mailUser="[email protected]"
mailPass="
smtpObj=smtplib.SMTP_SSL("smtp.qq.com",465)
smtpObj.login(mailUser,mailPass)
sender=
receiverDict={}
for receiver in receiverDict:
print(receiver)
print(receiverDict[receiver])
22.导入模块中的类后,我们来学习怎么运用。
1.MIMEMultipart负责整合邮件内容
message = MIMEMultipart()--表示实例化一个MIMEMultipart对象,赋值给message,便于后面将邮
件信息写入变量中。
2.Header负责编辑邮件内容
message["From"]=Header("阿玲
表示先实例化一个Header对象,传入发件人信息;然后将发件人信息,赋值给message["From"]
23.创建MIMEMultipart对象时,()不能省略,其次Python区分大小写。
24.收件人编辑方式与发件人类似,先实例化一个Header对象,传入收件人bobo
将收件人信息写入message中的["To"]字段中。
如:
message["To"] = Header("bobo
25.邮件主题与收发件人类似,先实例化一个Header对象,传入主题bobo-年会邀请函;
将主题信息写入message中的["Subject"]字段中。
如:
message["Subject"]=Header("bobo年会-邀请函")
26.for receiver in receiverDict:
message=MIMEMulyipart()
message["From"]=Header(f"阿玲<{sender}>")
message["To"]=Header(f"{receiver}<{receiverDict[receiver]}>")
message["Subject"]=Header(f"{receiver}-年会邀请函")
27.发送邮件使用sendmail(),传入三个参数:
1.发件人邮箱sender;
2.收件人邮箱receiverDict[receiver];
3.邮件内容message.as_string(),使用as_string(),使用as_string(),使用as_string()方法将
message设置为文本格式。
28.使用smtpObj调用sendmail(),传入发件人、收件人和message.as_string