Отправка почты из Flask-Mail (SMTPSenderRefused 530)
Конфигурация приложения, используемая в приложении Flask Mail (следующая книга разработки Miguel Grinberg Flask developlemt):
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('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
Переменные почтового пользователя и пароля установлены правильно и перепроверены. При попытке отправить сообщение, используя следующий код,
from flask.ext.mail import Message
from hello import mail
msg = Message('test subject', sender='same as MAIL_USERNAME', recipients=['[email protected]'])
msg.body = 'text body'
msg.html = '<b>HTML</b> body'
with app.app_context():
mail.send(msg)
При отправке приложение снова и снова приводит к следующей ошибке:
SMTPSenderRefused: (530, '5.5.1 Authentication Required. Learn more at\n5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 qb10sm6828974pbb.9 - gsmtp', u'configured MAIL_USERNAME')
Любое обходное решение для ошибки?
Ответы
Ответ 1
Во время поиска проблем, я перепробовал настройки SMTP для Google,
Изменение
app.config['MAIL_SERVER'] = 'smtp.googlemail.com'
в
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
сделал трюк.
Также убедитесь, что полное имя пользователя используется как имя пользователя SMTP Gmail, то есть [email protected], как показано на изображении выше.
Надеюсь это поможет!!!
Ответ 2
Я также следил за этой книгой и получал ту же проблему, после некоторого копания здесь и там я узнал основную причину проблемы. Однако я не уверен, будет ли это для вас одним и тем же или нет.
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
Поскольку вы можете видеть, что ваше флеш-приложение получает ваши учетные данные электронной почты через os.environ.get(), и если вы временно установите эти переменные среды в своей системе, в моем случае Mac OSX после сеанса терминала они исчезнут, поэтому вы необходимо установить их снова в следующий раз, когда вы войдете в терминал, как показано ниже:
export MAIL_USERNAME=**YOUR EMAIL**
export PASSWORD=**YOUR PASSWORD**
Я получил эту ошибку из-за этого сценария, чтобы установить их навсегда, вам нужно включить эти переменные в файл .bash_profile в вашем домашнем каталоге.
Ответ 3
Вам нужно изменить настройки своей учетной записи Google. На этой странице включите параметр "Разрешить менее безопасные приложения".
Как сказано на этой странице:
Некоторые приложения и устройства используют менее безопасную технологию входа, что делает вашу учетную запись более уязвимой. Вы можете отключить доступ к этим приложениям, который мы рекомендуем, или включить доступ, если вы хотите использовать их, несмотря на риски. Узнать больше
Ответ 4
Сделайте эти 2 вещи, чтобы решить:
-
Используйте эту ссылку и включите "Разрешить менее безопасные приложения" - https://myaccount.google.com/lesssecureapps.
-
Используйте жестко запрограммированное значение для электронной почты и пароля, и все заработало нормально. Просто в файле ' init.py' отредактируйте следующий раздел:
Не используйте os.environ.get
app.config['MAIL_USERNAME'] = '[email protected]'
app.config['MAIL_PASSWORD'] = 'yourpassword'