Python课程-w73班
Louyj's Blog
Toggle navigation
Python课程-w73班
Home
班级课件
课堂代码
课后作业
学习资料
Archives
Tags
2022-11-13课件-stmp协议及邮件发送
2022-11-13 12:23:07
38
0
0
python-w73
#SMTP协议 Email(电子邮件)的历史比Web还要久远。直到现在,Email还是互联网上应用非常广泛的服务。 在我们开始编写邮件操作的相关代码之前,先了解一下电子邮件在互联网上是如何运作的。   相关概念: 假设自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@aliyun.com。用Outlook或Foxmail之类的软件写 好邮件,填上对方的Email地址,单击“发送”按钮,电子邮件就发送出去了。这些电子邮件软件被称为邮件用户代理(Mail User Agent,MUA)。 Email从MUA发出去后,不是直接到达对方计算机,而是发到邮件传输代理(Mail Transfer Agent,MTA),就是Email服务 提供商,如网易、阿里云等。由于自己的电子邮件地址是163.com,因此Email首先被投递到网易提供的MTA,再由网易的 MTA发送到对方的服务商,也就是阿里的MTA。 Email到达阿里的MTA后,由于对方使用的是@aliyun.com的邮箱,因此阿里的MTA会把Email投递到邮件的最终目的地邮件投 递代理(Mail Delivery Agent,MDA)。Email到达MDA后,会存放在阿里云服务器的某个文件或特殊的数据库里,我们将这 个长期保存邮件的地方称为电子邮箱。 同普通邮件类似,Email不会直接到达对方的计算机,因为对方的计算机不一定开机,开机也不一定联网。对方要取到邮件,必 须通过MUA从MDA上获得。 --- SMTP的全称为Simple Mail Transfer Protocol,也就是简单邮件传输协议. SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特 点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。通常它工作在两种情况下:一是邮件从客户 机传输到服务器;二是从某一个服务器传输到另一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的 Mail请求,并与远端Mail服务器建立SMTP连接。 SMTP和HTTP协议一样都属于请求应答式协议,也就是一问一答,客户端发送命令后,服务器返回响应内容 SMTP的连接和发送过程: - 建立TCP连接 - 客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;服务器端正希望以OK作为响应,表明准备接 收 - 客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;服务器端则表示是否愿意为收件人接收邮 件 - 协商结束,发送邮件,用命令DATA发送 - 结束此次发送,用QUIT命令退出 #Python对SMTP协议的支持 SMTP(Simple Mail Transfer Protocol)是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以 及带附件的邮件。 SMTP是从源地址到目的地址传送邮件的规则,由该协议控制信件的中转方式 SMTP默认使用标准25端口连接SMTP服务器时使用的是明文传输,发送邮件的整个过程可能会被窃听。要更安全地发送邮件, 可以加密SMTP会话,实际上是先创建SSL安全连接,然后使用SMTP协议发送邮件。 Python对SMTP的支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 Python的smtplib提供了一种很方便的途径发送电子邮件,对SMTP协议进行了简单的封装。 Python创建SMTP对象的语法如下: smtpObj=smtplib.SMTP([host [, port [, local_hostname]]]) 其中: - host:SMTP服务器主机。可以指定主机的IP地址或域名(如www.baidu.com),是可选参数。 - port:如果提供了host参数,就需要指定SMTP服务使用的端口号。一般情况下,SMTP的端口号为25。 - local_hostname:如果SMTP在本地主机上,只需要指定服务器地址为localhost即可。 如果在创建SMTP对象时提供了host和port两个参数,在初始化时会自动调用connect方法连接服务器。 Python SMTP对象使用sendmail方法发送邮件的语法如下: SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options] 其中: - from_addr:邮件发送者的地址。 - to_addrs:字符串列表,邮件发送地址。 - msg:发送消息, 表示邮件内容 msg是字符串,表示邮件内容。我们知道邮件一般由标题、发信人、收件人、邮件内容、附件等构成,发送邮件时,要注意 msg的格式。这个格式就是SMTP协议中定义的格式。  #发送邮件 ##发送普通文件邮件 普通文本邮件发送的实现关键要将MIMEText中的_subtype设置为plain。首先导入smtplib和MIMEText。创建smtplib.smtp实 例,连接邮件SMTP服务器,登录后发送,具体代码如下 标准邮件需要3个头部信息:From、To和Subject。
Pre:
2022-11-13课堂代码
Next:
2022-10-30课堂代码
0
likes
38
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Submit
Sign in
to leave a comment.
No Leanote account?
Sign up now.
0
comments
More...
Table of content
No Leanote account? Sign up now.