尝试使用带有 Python 的 SMTP 发送电子邮件时出现 SMTPNotSupportedError
SMTPNotSupportedError when trying to send email using SMTP with Python
我正在尝试 运行 一个使用 Python 从本地服务器(不是 gmail、office 等)发送电子邮件的脚本
我的代码如下:
message = MIMEMultipart()
message['From'] = 'noreply@test.com'
message['To'] = 'hello@test.com'
msg_body = 'test'
server = SMTP('123.456.78.901', 01)
server.starttls()
server.sendmail(message['From'], message['To'], msg_body)
server.quit()
以下行发生错误:
server.starttls()
内容如下:
SMTPNotSupportedError: STARTTLS extension not supported by server.
当我使用以下代码行通过 gmail 服务器发送电子邮件时,这段代码工作得很好:
server = SMTP('smtp.gmail.com', 587)
不过,我现在正尝试让电子邮件直接从本地服务器发送。感谢任何帮助,谢谢!
这仅仅意味着您的本地服务器不支持 STARTTLS。所以不要试图那样做。只有当您通过不安全的 public 网络连接时,TLS 加密才有意义。
您已经建立了到 SMTP 服务器的连接。如果您从程序中删除 server.starttls()
行,您将继续使用现有连接,不加密。
(STARTTLS 有点 hack;与其他基于 SSL 的协议不同,您从未加密的连接开始,然后升级以在同一电路上建立加密连接(如果服务器支持它并且客户端请求它)。 )
但是, sendmail
的第三个参数应该是有效的 SMTP 消息,而不是随机的自由格式字符串。您已经有一条消息,但您只是想发送一个不同的字符串。
server.sendmail(message['From'], message['To'], msg.as_string()) # not msg_body
升级到 Python 3.6+ 库并使用 EmailMessage
而不是 MIMEMultipart
开始构建消息可能更好。 Python email
examples documentation 包含所有详细信息。
我正在尝试 运行 一个使用 Python 从本地服务器(不是 gmail、office 等)发送电子邮件的脚本
我的代码如下:
message = MIMEMultipart()
message['From'] = 'noreply@test.com'
message['To'] = 'hello@test.com'
msg_body = 'test'
server = SMTP('123.456.78.901', 01)
server.starttls()
server.sendmail(message['From'], message['To'], msg_body)
server.quit()
以下行发生错误:
server.starttls()
内容如下:
SMTPNotSupportedError: STARTTLS extension not supported by server.
当我使用以下代码行通过 gmail 服务器发送电子邮件时,这段代码工作得很好:
server = SMTP('smtp.gmail.com', 587)
不过,我现在正尝试让电子邮件直接从本地服务器发送。感谢任何帮助,谢谢!
这仅仅意味着您的本地服务器不支持 STARTTLS。所以不要试图那样做。只有当您通过不安全的 public 网络连接时,TLS 加密才有意义。
您已经建立了到 SMTP 服务器的连接。如果您从程序中删除 server.starttls()
行,您将继续使用现有连接,不加密。
(STARTTLS 有点 hack;与其他基于 SSL 的协议不同,您从未加密的连接开始,然后升级以在同一电路上建立加密连接(如果服务器支持它并且客户端请求它)。 )
但是, sendmail
的第三个参数应该是有效的 SMTP 消息,而不是随机的自由格式字符串。您已经有一条消息,但您只是想发送一个不同的字符串。
server.sendmail(message['From'], message['To'], msg.as_string()) # not msg_body
升级到 Python 3.6+ 库并使用 EmailMessage
而不是 MIMEMultipart
开始构建消息可能更好。 Python email
examples documentation 包含所有详细信息。