Python发送邮件报SSLError
Background
做自动化发送邮件提醒功能时发现无法连接smtp.office365.com服务器,报ssl版本错误。
> `ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number
(_ssl.c:1129)`
Methods by Searching
这是一个 Python 中的 SSL 错误,通常表示请求的 SSL 版本不受支持。这通常是因为该服务器支持的 SSL 版本与客户端请求的版本不匹配。如果遇到此错误,可以通过以下几种方法解决:
- 更新到最新版本的 Python:最新版本的 Python 中的 SSL 库通常支持更多的 SSL 版本。
- 更改使用的 SSL 版本:如果该服务器支持的 SSL 版本已知,可以更改客户端代码以使用该版本。
- 忽略 SSL 验证:如果不关心 SSL 证书的有效性,可以忽略 SSL 验证。请注意,这不是一个安全的做法,但在开发和测试环境中可以使用。
Final Solution
查阅Microsoft邮件客户端配置信息:文章来源:https://www.toymoban.com/news/detail-784536.html
IMAP 服务器名称outlook.office365.com
IMAP 端口 993
IMAP 加密方法TLS
POP 服务器名称outlook.office365.com
POP 端口 995
POP 加密方法 TLS
SMTP 服务器名称smtp.office365.com
SMTP 端口 587
SMTP 加密方法 STARTTLS文章来源地址https://www.toymoban.com/news/detail-784536.html
Original code:
s = smtplib.SMTP_SSL("smtp.office365.com", timeout=30, port=587)
Modified code:
s = smtplib.SMTP("smtp.office365.com", timeout=30, port=587)
s.starttls()
Simple Example
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
if __name__ == '__main__':
msg_from = 'example@example.com' # 发送方邮箱
passwd = '*****' # 就是上面的授权码
to = ['example1@example1.com'] # 接受方邮箱
# 设置邮件内容
# MIMEMultipart类可以放任何内容
msg = MIMEMultipart()
conntent = "这是一封由python自动发送的邮件"
# 把内容加进去
msg.attach(MIMEText(conntent, 'plain', 'utf-8'))
# 设置邮件主题
msg['Subject'] = "这个是邮件主题"
# 发送方信息
msg['From'] = msg_from
# 开始发送
# 通过SSL方式发送,服务器地址和端口
s = smtplib.SMTP("smtp.office365.com", timeout=30, port=587)
# 登录邮箱
s.starttls()
s.login(msg_from, passwd)
# 开始发送
s.sendmail(msg_from, to, msg.as_string())
s.close()
print("邮件发送成功")
到了这里,关于Python发送邮件报错:ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1129)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!