python - Flask 电子邮件支持 - 发送电子邮件时获取 SSLError [Errno 1]

标签 python email python-2.7 ssl flask

我正在尝试为 Flask 应用程序设置电子邮件服务器。我收到 SSLError。这是我第一次学习任何类型的网络开发。

这是我配置服务器的方式:

# mail server settings
MAIL_SERVER = 'smtp.mail.yahoo.com'
MAIL_PORT = 587
MAIL_USE_TLS = False
MAIL_USE_SSL = True
MAIL_USERNAME = 'email@yahoo.com'
MAIL_PASSWORD = 'password'


# administrator list
ADMINS = ['email@yahoo.com']

这是处理邮件的 init 脚本部分:

app.config.from_object('config')
mail = Mail(app)

这是我尝试发送电子邮件时的错误回溯:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/Users/user/microblog/flask/lib/python2.7/site-packages/flask_mail.py", line 491, in send
    with self.connect() as connection:
  File "/Users/user/microblog/flask/lib/python2.7/site-packages/flask_mail.py", line 144, in __enter__
    self.host = self.configure_host()
  File "/Users/user/microblog/flask/lib/python2.7/site-packages/flask_mail.py", line 156, in configure_host
    host = smtplib.SMTP_SSL(self.mail.server, self.mail.port)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 777, in __init__
    SMTP.__init__(self, host, port, local_hostname, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 250, in __init__
    (code, msg) = self.connect(host, port)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 310, in connect
    self.sock = self._get_socket(host, port, self.timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 783, in _get_socket
    new_socket = ssl.wrap_socket(new_socket, self.keyfile, self.certfile)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 387, in wrap_socket
    ciphers=ciphers)    
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 143, in __init__
    self.do_handshake()    
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 305, in do_handshake
    self._sslobj.do_handshake()   
ssl.SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

谢谢!

最佳答案

MAIL_PORT = 587
MAIL_USE_TLS = False
MAIL_USE_SSL = True

端口 587 用于显式 TLS(STARTTLS 命令),因此您可能必须使用 MAIL_USE_TLS 而不是 MAIL_USE_SSL。 MAIL_USE_SSL 用于隐式 TLS,您可以在端口 465 上直接连接 TLS。

关于python - Flask 电子邮件支持 - 发送电子邮件时获取 SSLError [Errno 1],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27661109/

相关文章:

python - 旋转矩阵

python - 如何在 2.7 中为 'newline' 使用 'open' 关键字参数?

javascript - 如何使用雷鸟插件显示电子邮件正文?

python Selenium : Firefox profile error

python - 使用 Jython/IronPython/Pyjamas 的优点/缺点是什么?

email - odoo 登录 Microsoft 365 失败

ios - 如何在 iOS 5 中使用 HTML 标签发送图像而不是作为附件

python - 如何设置实时视频捕获的时间限制?

Django - 检查模型是否有子级(相关模型)

python - Tornado 导入错误 : 'no named module singledispatch'