Python 中的 SMTP 协议客户端 (smtplib)


Python 的标准库包含 'smtplib' 模块,该模块定义了一个 SMTP 客户端会话对象,可用于通过 Python 程序发送邮件。

邮件服务器是一种处理和传递互联网电子邮件的应用程序。外发邮件服务器实现 SMTP(简单邮件传输协议)服务器,这是电子邮件传输的互联网标准。

收件邮件服务器主要有两种:POP3(邮局协议)和 IMAP(互联网邮件访问协议)。

smptlib.SMTP() 函数

此函数返回 SMTP 类的对象。它封装并管理与 SMTP 或 ESMTP 服务器的连接。此函数的签名中定义了以下参数:

主机 (host)
一个字符串,表示要连接到的远程主机的名称。
端口 (port)
指定要连接到的端口的数字。默认情况下,使用 smtplib.SMTP_PORT。
本地主机名 (local_hostname)
在 HELO/EHLO 命令中用作本地主机的完全限定域名 (FQDN)。
源地址 (source_address)
一个 2 元组 (host, port) 对象,套接字将绑定到该对象。

它具有以下支持 SMTP 操作的方法:

connect() -

此方法建立与给定端口上的主机的连接。

login() -

此函数采用用户名和密码参数登录到 SMTP 服务器。

quit() -

此函数终止 SMTP 会话。

data() -

此函数的“message”参数将发送到服务器。

**docmd() -**

此函数发送命令并返回其响应代码。

**ehlo() -**

此函数识别服务器。

starttls() -

此函数启动 TLS 模式。

**getreply() -**

此函数以响应代码的形式接收来自服务器的回复。

**putcmd() -**

此函数向服务器发送命令。

send_message() -

此函数将消息转换为字节字符串并将其传递给发送邮件。

**sendmail() -**

此命令执行整个邮件事务。

参数如下:

from_addr
发送此邮件的地址。
to_addrs
要发送此邮件的地址列表。
msg
要发送的消息。

下面的代码使用 Gmail 的 smtp 服务器发送电子邮件。SMTP 对象使用 Gmail 的 smtp 服务器,端口为 527。ehlo() 命令识别服务器。我们还将传输层安全激活到外发邮件消息。

接下来,通过将凭据作为参数传递给它来调用 login() 命令。最后,通过附加规定的格式的标题来组装邮件消息,并使用 sendmail() 方法发送。之后关闭 SMTP 对象。

import smtplib
content="HelloWorld"
mail=smtplib.SMTP('smtp.gmail.com',587)
mail.ehlo()
mail.starttls()
sender='[email protected]'
recipient='[email protected]'
mail.login('[email protected]','m15v5l61')
header='To:'+receipient+'\n'+'From:'\
+sender+'\n'+'subject:testmail\n'
content=header+content
mail.sendmail(sender,recipient, content)
mail.close()


在运行上述脚本之前,请确保发送者的 Gmail 帐户已获得“安全性较低的应用”的访问权限。

https://myaccount.google.com/lesssecureapps

将显示的切换按钮设置为“开”。

执行上述设置后执行上述脚本。该消息应发送到收件人的收件箱。

更新于:2020年6月29日

浏览量:1000+

开启你的职业生涯

完成课程获得认证

开始学习
广告