我已将我的网站部署到 Linode 上的 Ubuntu 20.10 发行版。除了“忘记密码”功能外,我的博客网站的所有功能都可以完美运行。它在我的本地机器上工作得很好,但是,在服务器上它超时了。在回溯中,它显示它到达了 mail.send(msg)。导致此错误的原因是什么?
import json
with open('/etc/config.json') as config_file:
config = json.load(config_file)
MAIL_SERVER = 'smtp.googlemail.com'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USERNAME = config.get('EMAIL_USERNAME')
MAIL_PASSWORD = config.get('EMAIL_PASSWORD')
import os
import secrets
from PIL import Image
from flask import url_for, current_app
from flask_mail import Message
from flaskblog import mail
# ============== Save Picture Function ============== #
def save_picture(form_picture):
random_hex = secrets.token_hex(8)
_, f_ext = os.path.splitext(form_picture.filename)
picture_fn = random_hex + f_ext
picture_path = os.path.join(current_app.root_path, 'static/img/profile_pics', picture_fn)
output_size = (125, 125)
i = Image.open(form_picture)
i.thumbnail(output_size)
i.save(picture_path)
return picture_fn
# ============== Reset Email Function ============== #
def send_reset_email(user):
token = user.get_reset_token()
msg = Message('Password Reset Request', sender='noreply.fantasyfootball.blogspot@gmail.com',
recipients=[user.email])
msg.body = f''' To reset your password, visit the following link:
{url_for('users.reset_token', token=token, _external=True)}
If you did not make this request then simply ignore this email and no changes will be made.
'''
mail.send(msg)
回溯调用
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/jcole2236/FF-BlogSpot/flaskblog/users/routes.py", line 87, in reset_request
send_reset_email(user)
File "/home/jcole2236/FF-BlogSpot/flaskblog/users/utils.py", line 32, in send_reset_email
mail.send(msg)
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask_mail.py", line 491, in send
with self.connect() as connection:
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask_mail.py", line 144, in __enter__
self.host = self.configure_host()
File "/home/jcole2236/FF-BlogSpot/venv/lib/python3.8/site-packages/flask_mail.py", line 158, in configure_host
host = smtplib.SMTP(self.mail.server, self.mail.port)
File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.8/smtplib.py", line 339, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.8/smtplib.py", line 308, in _get_socket
return socket.create_connection((host, port), timeout,
File "/usr/lib/python3.8/socket.py", line 808, in create_connection
raise err
File "/usr/lib/python3.8/socket.py", line 796, in create_connection
sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out