【发布时间】:2020-08-19 12:12:01
【问题描述】:
初始化.py
>from flask_wtf import FlaskForm
from wtforms import StringField,SubmitField,PasswordField
from wtforms.validators import DataRequired,Length,Email
from flask import Flask
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
from flask_sqlalchemy import SQLAlchemy
from flask_mail import Mail
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = 'r3t058rf3409tyh2g-rwigGWRIGh[g'
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('EMAIL_USER')
app.config['MAIL_PASSWORD']=os.environ.get('EMAIL_PASS')
mail=Mail(app)
db = SQLAlchemy(app)
logMg=LoginManager(app)
logMg.login_view='login'
logMg.login_message_category='info'
bcrypt=Bcrypt()
from portfolio import routes
Routes.py
>def send_reset_email(user):
token=user.get_reset_token()
msg=Message('Password Reset Request',sender='noreply@demo.com',recipients=[user.email])
msg.body=''' To reset your password visit the following link:
{ url_for('reset_token',token=token,_external=True) }
If you did not Make request please contact our Team
'''
mail.send(msg)
@app.route("/reset_password",methods=['GET','POST'])
def reset_request():
if current_user.is_authenticated:
return redirect(url_for('admin'))
form=RequestResetForm()
if form.validate_on_submit():
user=User.query.filter_by(email=form.email.data).first()
send_reset_email(user)
flash('Reset Email Link Sent')
return redirect(url_for('login'))
return render_template("reset_request.html",form=form,legend='Edit Post')
@app.route("/reset_password/<token>",methods=['GET','POST'])
def reset_token():
if current_user.is_authenticated:
return redirect(url_for('admin'))
user=User.verify_reset_token(token)
if user is None:
flash('Invalid or Expired Token','warning')
return redirect(url_for(reset_request))
form=ResetPasswordForm()
if form.validate_on_submit():
hashed_password=bcrypt.generate_password_hash(form.password.data).decode('utf-8')
user.password=hashed_password
db.session.commit()
flash('Password Changed!','success')
return redirect(url_for('Login'))
return render_template('reset_token',form=form,legend='Reset Password Form')
不断收到此错误以验证发件人我已尝试更改为我的电子邮件并启用 IMAP 设置,但没有成功
返回
smtplib.SMTPSenderRefused smtplib.SMTPSenderRefused:(530,b'5.7.0 需要身份验证。了解更多信息:\n5.7.0 https://support.google.com/mail/?p=WantAuthError t20sm2139075wmi.2 - gsmtp', 'noreply@demo.com')
Traceback(最近一次调用最后一次) 调用中的文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 2464 行 return self.wsgi_app(environ, start_response)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 2450 行,在 wsgi_app response = self.handle_exception(e)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 1867 行,在 handle_exception reraise(exc_type, exc_value, tb)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask_compat.py”,第 39 行,重新提出 提升价值
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 2447 行,在 wsgi_app 响应 = self.full_dispatch_request()
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 1952 行,在 full_dispatch_request rv = self.handle_user_exception(e)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 1821 行,在 handle_user_exception reraise(exc_type, exc_value, tb)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask_compat.py”,第 39 行,重新提出 提升价值
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 1950 行,在 full_dispatch_request rv = self.dispatch_request()
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask\app.py”,第 1936 行,在 dispatch_request 中 返回 self.view_functionsrule.endpoint
文件“C:\Dev\Visual Studio 2019\Projects\portfolio\portfolio\routes.py”,第 177 行,在 reset_request send_reset_email(用户)
文件“C:\Dev\Visual Studio 2019\Projects\portfolio\portfolio\routes.py”,第 168 行,在 send_reset_email 中 mail.send(msg)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask_mail.py”,第 492 行,在发送中 message.send(连接)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask_mail.py”,第 427 行,在发送中 connection.send(self)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\site-packages\flask_mail.py”,第 192 行,在发送中 message.rcpt_options)
文件“C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\smtplib.py”,第 867 行,在 sendmail 中 raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused:(530,b'5.7.0 需要身份验证。了解更多信息:\n5.7.0 https://support.google.com/mail/?p=WantAuthError t20sm2139075wmi.2 - gsmtp', 'noreply@demo.com')
【问题讨论】:
标签: python flask smtp email-verification