Как исправить ошибку OSError: [Errno 0] на Python Flask и Flask-Mail - PullRequest
0 голосов
/ 21 января 2019

Я настраиваю конфигурацию Python Flask-Mail с помощью smtp.gmail.com, я правильно следовал инструкциям, но продолжаю получать сообщение об ошибке [Errno 0].

Я использую подсистему Windows дляLinux, я загрузил и Python 2, и Python 3 в часть Linux и, используя Xming Server, для генерации Sublime Text для написания моего кода Python.

Это мой код для конфигурации флеш-почты:

app.config.update(
        MAIL_SERVER = 'smtp.gmail.com',
        MAIL_PORT = 465,
        MAIL_USE_TLS = False,
        MAIL_USE_SSL = True,
        MAIL_USERNAME = os.environ.get('EMAIL_USER'),
        MAIL_PASSWORD = os.environ.get('EMAIL_PASS')
)

mail = Mail(app)

Вот мои функции сброса пароля:

    @users.route("/reset_password", methods=['GET', 'POST'])
    def reset_request():
      if current_user.is_authenticated:
        return redirect(url_for('main.home'))
      form = RequestResetForm()
        if form.validate_on_submit():
           user = User.query.filter_by(email=form.email.data).first()
           send_reset_email(user)
           flash('An email has been sent with instructions to reset your password.', 'info')
           return redirect(url_for('users.login'))
        return render_template('reset_request.html', title='Reset Password', form=form)

      @users.route("/reset_password/<token>", methods=['GET', 'POST'])
      def reset_token(token):
        if current_user.is_authenticated:
          return redirect(url_for('main.home'))
        user = User.verify_reset_token(token)
          if user is None:
            flash('That is an invalid or expired token', 'warning')
            return redirect(url_for('users.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('Your password has been update! You are now able to log in', 'success')
          return redirect(url_for('users.login'))
        return render_template('reset_token.html', title="Reset Passowrd", form=form)

      def send_reset_email(user):
        token = user.get_reset_token()
        msg = Message('Password Reset Request', sender='noreply@demo.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)

И это ошибка, которую я получаю ...

builtins.OSError OSError: [Errno 0] Ошибка

Я пытаюсь сделать пароль сброса, когда пользователь вводит форму восстановления пароля, он должен отправить электронное письмо, но это не работает, и вместо этого я получаю OSError.Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...