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
将显示的切换按钮设置为“开”。
执行上述设置后执行上述脚本。该消息应发送到收件人的收件箱。