2016-01-21 6 views
0

У меня есть приложение для флэков, в котором зарегистрирована Flask-Security, чтобы отправить Flask Mail при регистрации. Я указал конфигурацию почтовой корзины на порту smtp.gmail.com 464 с использованием SSL. Однако, когда приложение пытается отправить почту, он получает smtplib.SMTPAuthenticationError. Если я перейду к google admin page и разрешу «менее безопасным приложениям», а затем отправить работу.Flask Security's Flask Регистрация почты получает smtplib.SMTPAuthenticationError от smtp.gmail.com

Вот трассировки стека, что я получаю, когда посыла терпит неудачу с вышеуказанной ошибкой:

File "~/lib/python3.5/site-packages/flask/app.py", line 1836, in __call__ 
    return self.wsgi_app(environ, start_response) 
File "~/lib/python3.5/site-packages/flask/app.py", line 1820, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
File "~/lib/python3.5/site-packages/flask_restful/__init__.py", line 271, in error_router 
    return original_handler(e) 
File "~/lib/python3.5/site-packages/flask/app.py", line 1403, in handle_exception 
    reraise(exc_type, exc_value, tb) 
File "~/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise 
    raise value 
File "~/lib/python3.5/site-packages/flask/app.py", line 1817, in wsgi_app 
    response = self.full_dispatch_request() 
File "~/lib/python3.5/site-packages/flask/app.py", line 1477, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
File "~/lib/python3.5/site-packages/flask_restful/__init__.py", line 271, in error_router 
    return original_handler(e) 
File "~/lib/python3.5/site-packages/flask/app.py", line 1381, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
File "~/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise 
    raise value 
File "~/lib/python3.5/site-packages/flask/app.py", line 1475, in full_dispatch_request 
    rv = self.dispatch_request() 
File "~/lib/python3.5/site-packages/flask/app.py", line 1461, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
File "~/lib/python3.5/site-packages/flask_security/decorators.py", line 225, in wrapper 
    return f(*args, **kwargs) 
File "~/lib/python3.5/site-packages/flask_security/views.py", line 117, in register 
    user = register_user(**form.to_dict()) 
File "~/lib/python3.5/site-packages/flask_security/registerable.py", line 41, in register_user 
    user=user, confirmation_link=confirmation_link) 
File "~/lib/python3.5/site-packages/flask_security/utils.py", line 341, in send_mail 
    mail.send(msg) 
File "~/lib/python3.5/site-packages/flask_mail.py", line 491, in send 
    with self.connect() as connection: 
File "~/lib/python3.5/site-packages/flask_mail.py", line 144, in __enter__ 
    self.host = self.configure_host() 
File "~/lib/python3.5/site-packages/flask_mail.py", line 165, in configure_host 
    host.login(self.mail.username, self.mail.password) 
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/smtplib.py", line 729, in login 
    raise last_exception 
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/smtplib.py", line 720, in login 
    initial_response_ok=initial_response_ok) 
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/smtplib.py", line 641, in auth 
    raise SMTPAuthenticationError(code, resp) 

Моя почта конфиг:

app.config['MAIL_SERVER'] = 'smtp.gmail.com' 
app.config['MAIL_PORT'] = 465 
app.config['MAIL_USE_SSL'] = True 

Это то, что происходит, когда я Гото Google админа включить TLS для моего приложения:

Not available for your account

Что мне нужно сделать, чтобы сообщить Flask Mail о соответствии стандарту безопасности Google?

+0

Что делает ваш Колба-Mail конфигурации выглядеть? – dirn

+0

Добавлено в OP. Благодаря! –

+0

Вы установили действующий адрес электронной почты с правильным паролем? –

ответ

1

Это потому, что Google хочет, чтобы ваше приложение использовало OAuth2.

To better protect your users, we recommend you upgrade all of your applications to OAuth 2.0. If you choose not to do so, your users will be required to take extra steps in order to keep accessing your applications.

Если вы хотите отправить электронную почту через SMTP, используя Flask-Mail вам нужно будет сделать этот дополнительный шаг и позволить «менее безопасные приложения» в странице администратора Google.

Источник: https://googleonlinesecurity.blogspot.com/2014/04/new-security-measures-will-affect-older.html

0

Вы можете отправить письмо с SMTP-сервер Google вам просто нужно приложение специальный пароль, вы можете получить здесь: https://security.google.com/settings/security/apppasswords

enter image description here

На странице выше выберите другой приложение и введите имя для него, тогда вы получите пароль приложения.

Это приложение работает и отправить по электронной почте:

# Try to send a mail using 

from flask import Flask 
from flask.ext.mail import Mail 
from flask.ext.mail import Message 


app = Flask(__name__) 


app.config['MAIL_SERVER'] = 'smtp.googlemail.com' 
app.config['MAIL_PORT'] = 587 
app.config['MAIL_USE_TLS'] = True 
app.config['MAIL_USERNAME'] = "your gmail username" 
app.config['MAIL_PASSWORD'] = "Your app spesfic password" 
app.config['MAIL_DEFAULT_SENDER'] = 'Default sender name' 

mail = Mail(app) 

@app.route('/') 
def hello_world(): 
    return 'Hello World!' 

@app.route('/send') 
def send_mail(): 
    msg = Message("Hello", 
        sender="[email protected]", 
        recipients=["[email protected]"]) 
    mail.send(msg) 
    return "" 

if __name__ == '__main__': 
    app.run(debug=True) 
+0

Я собирался отметить этот ответ, но посмотрю оригинальное сообщение для скриншота о том, что произошло, когда я пошел в свою учетную запись Google Apps, чтобы включить TLS для приложения. –

+0

перейдите по этому URL-адресу с вашим браузером и попробуйте добавить новое приложение. – itmard

+0

Мы явно не понимаем друг друга. Вы посмотрели на скриншот? Это то, что происходит, когда я нажимаю ссылку, которую вы разместили. –