Python SMTPServerDisconnected:连接意外关闭

Python SMTPServerDisconnected:连接意外关闭,python,flask,flask-mail,Python,Flask,Flask Mail,这里是我用来发送邮件重置密码的主要flask邮件代码,以防用户忘记,但当我运行并编写代码时,它看到了我 smtplib.SMTPServerDisconnected:连接意外关闭 下面是\uuuu init\uuuuu.py文件代码 import os from flask_mail import Mail from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_bcrypt import Bcrypt

这里是我用来发送邮件重置密码的主要flask邮件代码,以防用户忘记,但当我运行并编写代码时,它看到了我 smtplib.SMTPServerDisconnected:连接意外关闭

下面是\uuuu init\uuuuu.py文件代码

import os
from flask_mail import Mail
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager

app = Flask(__name__)

app.config['SECRET_KEY'] = '7f09c01a4f942b0812be4cb86e065f77'
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///site.db'

db=SQLAlchemy(app)
bcrypt=Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view='login'
login_manager.login_message_category='info'

app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'sender@gmail.com'
app.config['MAIL_PASSWORD'] = 'password'

mail = Mail(app)

from index import routes
routes.py文件

import os
import binascii
from PIL import Image
from flask import render_template,url_for, flash, redirect, request, abort
from index import app,db,bcrypt,mail
from index.forms import (RegistrationForm,LoginForm,UpdateAccountForm,PostForm,
                        RequestResetForm,ResetPasswordForm)
from index.models import User, Post
from flask_login import login_user, current_user, logout_user, login_required
from flask_mail import Message

token = user.get_reset_token()
    msg = Message('Password Reset Request',
                  sender="ketansuthar899@gmail.com",
                  recipients=[user.email])
    msg.body = '''To reset your password, visit the following link:{}
If you did not make this request then simply ignore this email and no changes will be made.
'''.format((url_for('reset_token', token=token, _external=True)))

    mail.send(msg)
下面是获取重置令牌方法:

from datetime import datetime
from index import db, login_manager,app
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from flask_login import UserMixin

def get_reset_token(self, expires_sec=1800):
        s = Serializer(app.config['SECRET_KEY'], expires_sec)
        return s.dumps({'user_id': self.id}).decode('utf-8')
我还看到了下面关于StackOverflow的代码,但这也不起作用

app.config['MAIL_USE_SSL'] = True
app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'sender@gmail.com'
app.config['MAIL_PASSWORD'] = 'password'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True

我觉得还可以。你试过使用“smtp.gmail.com”吗。否则,如果您使用双因素身份验证,则除非您在gmail的“管理面板”控件中设置应用程序密码,否则这将不起作用。显然你的用户名和密码必须输入正确,但我想你已经知道了!