TimeoutError: [Errno 110] 连接超时

时间:2021-01-13 17:26:41

标签: python flask smtp gmail

我已将我的网站部署到 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

0 个答案:

没有答案