Я читаю книгу Мигеля Гринберга о веб-разработке Flask и столкнулся с проблемой в его главе об электронной почте.
Вот его конфигурации:
import os
# ...
app.config["MAIL_SERVER"] = "smtp.googlemail.com"
app.config["MAIL_PORT"] = 587
app.config["MAIL_USE_TLS"] = True
app.config["MAIL_USERNAME"] = os.environ.get("MAIL_USERNAME")
app.config["MAIL_PASSWORD"] = os.environ.get("MAIL_PASSWORD")
После того, как я установил переменные среды, я захожу в оболочку и пытаюсь запустить следующий код:
(venv) $ flask shell
>>> from flask_mail import Message
>>> from hello import mail
>>> msg = Message("test email", sender="[email protected]", recipients=["[email protected]])
>>> msg.body = "This is plain text body"
>>> msg.html = "This is <b>HTML</b> body"
>>> with app.app_context():
... mail.send(msg)
...
Мой Gmail настроен правильно, я следовал tutorial и выполнил все указанные шаги.
Мой код выдал следующую ошибку:
Traceback (most recent call last):
File "<console>", line 2, in <module>
File "c:\...\flasky\venv\lib\site-packages\flask_mail.py", line 491, in send
with self.connect() as connection:
File "c:\...\flasky\venv\lib\site-packages\flask_mail.py", line 144, in __enter__
self.host = self.configure_host()
File "c:\...\flasky\venv\lib\site-packages\flask_mail.py", line 158, in configure_host
host = smtplib.SMTP(self.mail.server, self.mail.port)
File "C:\...\Python\Python37\lib\smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
File "C:\...\Python\Python37\lib\smtplib.py", line 336, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "C:\...\Python\Python37\lib\smtplib.py", line 307, in _get_socket
self.source_address)
File "C:\...\Python\Python37\lib\socket.py", line 727, in create_connection
raise err
File "C:\...\Python\Python37\lib\socket.py", line 716, in create_connection
sock.connect(sa)
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or
established connection failed because connected host has failed to respond
Я нашел еще один вопрос, который был поднят о том же и Я попробовал пару вещей, которые были предложены там:
я изменил строку
app.config["MAIL_SERVER"] = "smtp.googlemail.com"
to
app.config["MAIL_SERVER"] = "smtp.gmail.com"
и я жестко запрограммировал переменные «MAIL_USERNAME» и «MAIL_PASSWORD», но снова получил ту же ошибку.
Из-за того, что ничего не работает, и предыдущий вопрос об этом был очень старым (4 года), я подумал, что, возможно, стоит поднять его снова.
Если кто-нибудь знает, что я делаю неправильно, пожалуйста, дайте мне знать.
Спасибо.