用python连接SMTP的TLS(587端口)发邮件

2020年3月6日 / 1,361次阅读 / Last Modified 2020年3月6日
Email

python标准库中的smtplib模块,给我们提供了一组连接SMTP服务器发送邮件的接口。连接SMTP服务器未加密的25号端口,使用smtplib.SMTP接口;连接SMTP服务器SSL加密的465端口,使用smtplib.SMTP_SSL接口;本文记录如何连接TLS的587端口。

我只知道TLS是SSL的升级版,升级后恐怕有一些加密认证流程不一样了,所以python并没有升级SSL这个接口来支持TLS。

连接SMTP服务器的TLS 587端口,同样是使用smtplib.SMTP接口,只是需要填入587端口号(这是标准端口号)去连接。然后调用starttls接口,开启TLS之旅。下面是测试代码:

import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr


msg_str = 'this is a test email sending by python'
msg = MIMEText(msg_str, 'plain', 'utf-8')
msg['From'] = 'from@qq.com'
msg['To'] = 'to@qq.com'
msg['Subject'] = Header('python email test', 'utf-8').encode()

smtp = smtplib.SMTP('smtp.qq.com',587)
smtp.set_debuglevel(2)
smtp.starttls()
smtp.login('from@qq.com', 'password')
smtp.sendmail('from@qq.com', 'to@qq.com', msg.as_string())
smtp.quit()

高亮的15行就是关键,调用starttls接口后,后面代码跟SMTP服务器的交换,就全部是在TLS加密保护之下。

我测试了不调用starttls接口,连接587端口,也能够发邮件。

-- EOF --

本文链接:https://www.pynote.net/archives/1831

留言区

您的电子邮箱地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More

麦新杰的Python笔记

Ctrl+D 收藏本页


©Copyright 麦新杰 Since 2019 Python笔记

go to top