如何修复 ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] 错误的版本号 (_ssl.c:1056)?

The*_*gri 34 python ssl smtplib

我正在尝试用 python 发送电子邮件,但它一直说ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056). 这是我的代码:

server = smtplib.SMTP_SSL('smtp.mail.com', 587)
server.login("something0@mail.com", "password")
server.sendmail(
"something0@mail.com", 
"something@mail.com", 
"email text")
server.quit()
Run Code Online (Sandbox Code Playgroud)

你知道有什么问题吗?

mos*_*evi 39

端口SSL是 465 而不是 587,但是当我使用SSL邮件到达垃圾邮件时。

对我来说,有效的方法是使用TLSover 常规SMTP而不是SMTP_SSL.

请注意,这是一种安全方法,TLS也是一种加密协议(与 SSL 不同)。

import smtplib, ssl

port = 587  # For starttls
smtp_server = "smtp.gmail.com"
sender_email = "my@gmail.com"
receiver_email = "your@gmail.com"
password = input("Type your password and press enter:")
message = """\
Subject: Hi there

This message is sent from Python."""

context = ssl.create_default_context()
with smtplib.SMTP(smtp_server, port) as server:
    server.ehlo()  # Can be omitted
    server.starttls(context=context)
    server.ehlo()  # Can be omitted
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)
Run Code Online (Sandbox Code Playgroud)

感谢真正的python教程提供