Flask-mail无法使用TLS发送邮件,但是Flask-mail不使用TLS成功发送邮件,smtplib使用TLS成功发送邮件。我尝试了很长时间,包括在Internet上搜索各种方式,但是仍然找不到发送失败的原因,希望有人可以帮助我。
这是烧瓶配置:
SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
MAIL_SERVER = os.environ.get('MAIL_SERVER', 'smtp.126.com')
# MAIL_PORT = int(os.environ.get('MAIL_PORT', '465'))
MAIL_PORT = int(os.environ.get('MAIL_PORT', '25'))
# set MAIL_USE_TLS = True is failed
# MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'true').lower in ['true', 'on', '1']
MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', 'false').lower in ['false', 'off', '0']
MAIL_USERNAME = os.environ.get('MAIL_USERNAME') or 'ljyjunye@126.com'
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD') or '***'
FLASK_MAIL_SUBJECT_PREFIX = '[Flasky]'
FLASK_MAIL_SENDER = os.environ.get('MAIL_USERNAME') or 'ljyjunye@126.com'
SQLALCHEMY_TRACK_MODIFICATIONS = False
这是发送邮件失败的错误:
Exception in thread Thread-7:
Traceback (most recent call last):
File "d:\anaconda3\envs\blog_env\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "d:\anaconda3\envs\blog_env\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "D:\vs-python-project\blog\app\email.py", line 9, in send_async_email
mail.send(msg)
File "d:\anaconda3\envs\blog_env\lib\site-packages\flask_mail.py", line 491, in send
with self.connect() as connection:
File "d:\anaconda3\envs\blog_env\lib\site-packages\flask_mail.py", line 144, in __enter__
self.host = self.configure_host()
File "d:\anaconda3\envs\blog_env\lib\site-packages\flask_mail.py", line 158, in configure_host
host = smtplib.SMTP(self.mail.server, self.mail.port)
File "d:\anaconda3\envs\blog_env\lib\smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
File "d:\anaconda3\envs\blog_env\lib\smtplib.py", line 338, in connect
(code, msg) = self.getreply()
File "d:\anaconda3\envs\blog_env\lib\smtplib.py", line 394, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed