我正在尝试使用 yahoo 作为我的服务器通过 python 发送电子邮件,但是当我这样做时出现错误
“ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] 错误的版本号 (_ssl.c:1125)”
我猜,正如它所说,我的 ssl 版本与雅虎的不匹配,但我无法找到雅虎在任何地方使用的版本。我正在使用 ssl.OPENSSL_VERSION 来识别我的版本,将其命名为“OpenSSL 1.1.1i”
有谁知道我该如何解决这个问题?我已经包含了下面的代码
import smtplib
msg = "Hello!, this is a test email. Goodbye!"
fromadd = '*****@yahoo.com'
toadd = 'email@domain.com'
subject = 'Python Test Email'
username = str('*****@yahoo.com')
password = str('********')
server = smtplib.SMTP_SSL('smtp.mail.yahoo.com', 587)
server.ehlo()
server.login(username, password)
server.sendmail(fromadd, toadd, msg)
server.quit()
和确切的错误信息:ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1125)
最佳答案
server = smtplib.SMTP_SSL('smtp.mail.yahoo.com', 587)
端口 587 用于纯 SMTP,其中 TLS 由显式纯文本 STARTTLS 命令(显式 TLS)启动。为此使用
smtplib.SMTP
与 starttls() .使用
smtplib.SMTP_SSL
(隐式 TLS,即直接在 TCP 连接之后)应该连接到端口 465。
关于ssl - 使用 smtplib.SMTP_SSL 和 yahoo 作为服务器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68214149/