开源模块的应用(一)

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


 

你可能感兴趣的:(Python学习,笔记,服务器,运维)