#python #html #sqlite #flask #sqlalchemy
Вопрос:
Поэтому я написал некоторый код, чтобы, когда кто-то вводит свой адрес электронной почты, ему отправлялось электронное письмо с кодом, и когда он вводит этот код на веб-страницу, он проверяет свою учетную запись, отмечая столбец в базе данных под названием проверено как 1 (по умолчанию установлено значение 0). Но когда я набираю электронное письмо и нажимаю «Отправить», оно не работает, в нем говорится о внутренней ошибке сервера.Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Либо сервер перегружен, либо в приложении произошла ошибка. Итак, я просмотрел сообщение об ошибке в visual studio, и вот оно :
[2021-06-22 09:50:55,369] ERROR in app: Exception on /verify [POST]
Traceback (most recent call last):
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflaskapp.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflaskapp.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflaskapp.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflask_compat.py", line 39, in reraise
raise value
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflaskapp.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflaskapp.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:UsersuSDDEiptutorialapproutes.py", line 507, in verify
mail.send(msg)
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflask_mail.py", line 491, in send
with self.connect() as connection:
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflask_mail.py", line 144, in __enter__
self.host = self.configure_host()
File "C:UsersuSDDEAppDataRoamingPythonPython38site-packagesflask_mail.py", line 165, in configure_host
host.login(self.mail.username, self.mail.password)
File "C:Program FilesPython38libsmtplib.py", line 721, in login
(code, resp) = self.auth(
File "C:Program FilesPython38libsmtplib.py", line 633, in auth
(code, resp) = self.docmd("AUTH", mechanism " " response)
File "C:Program FilesPython38libsmtplib.py", line 423, in docmd
return self.getreply()
File "C:Program FilesPython38libsmtplib.py", line 396, in getreply
raise SMTPServerDisconnected("Connection unexpectedly closed")
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
Вот мой код для в моем init.py файл:
from flask_mail import Mail
from random import *
app = Flask(__name__)
app.config.from_object(Config)
mail = Mail(app)
app.config["MAIL_SERVER"]='smtp.gmail.com'
app.config["MAIL_PORT"] = 465
app.config["MAIL_USERNAME"] = 'username@gmail.com'
app.config['MAIL_PASSWORD'] = '*************'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)
Вот код в моем файле маршрутов:
@app.route('/verify',methods = ["POST"])
def verify():
code = randint(000000,999999)
mail = Mail(app)
email = request.form["email"]
msg = Message('code',sender = 'username@gmail.com', recipients = [email])
msg.body = str(code)
mail.send(msg)
return render_template('emailverification.html')
@app.route('/validate',methods=["POST"])
def validate():
user_code = request.form['code']
if code == int(user_code):
user = User2(username='kayla', email='kayla@example.com',firstname='Kayla',surname='Horan',type='student',password='kayla123',confirmed='1',timestamp=datetime.now())
user.set_password('kayla123')
db.session.add(user)
db.session.commit()
flash('You are now a registered user!')
Это код на странице настроек:
<form action="/verify" method="POST">
<tr><td style="width:220px"> <label style="margin-right:6.3%">Enter email address:</label></td><td><input style="margin-right:2%;width:260px" type="email" name="email"></td></tr>
<tr><td> <input type="submit" value="Send verification email"></td></tr></form>
Это код на странице подтверждения электронной почты:
<form action = "/validate" method="post">
<h4> The verification code has been sent to the email address. Please check the email for the confirmation.</h4>
Enter confirmation code: <input type="text" name="code">
<input type="submit" value="Submit">
</form>
Так почему же это не работает?? Что не так с моим кодом??
Комментарии:
1. Это проблема не с вашим кодом, а с настройками gmail: support.google.com/accounts/answer/6010255?hl=en#zippy=