Настройка Flask-Mail для использования GMail
когда я пытаюсь отправить электронное письмо с помощью Flask-Mail на SMTP-сервер Gmail, используя приведенные ниже настройки, я получаю [Errno -2] Name or service not known
. Как исправить мою конфигурацию для отправки электронной почты с Gmail?
from flask import Flask, render_template, redirect, url_for
from flask_mail import Mail, Message
app = Flask(__name__)
app.config.update(
MAIL_SERVER='smtp@gmail.com',
MAIL_PORT=587,
MAIL_USE_SSL=True,
MAIL_USERNAME = 'ri******a@gmail.com',
MAIL_PASSWORD = 'Ma*****fe'
)
mail = Mail(app)
@app.route('/send-mail/')
def send_mail():
msg = mail.send_message(
'Send Mail tutorial!',
sender='ri******a@gmail.com',
recipients=['ri*********07@msn.com'],
body="Congratulations you've succeeded!"
)
return 'Mail sent'
2 ответов
- сервер "smtp.gmail.com".
- порт должен соответствовать типу используемой защиты.
- при использовании STARTTLS с
MAIL_USE_TLS = True
, а затем использоватьMAIL_PORT = 587
. - при использовании SSL/TLS напрямую с
MAIL_USE_SSL = True
, а затем использоватьMAIL_PORT = 465
. - включить STARTTLS или SSL/TLS, а не оба.
- при использовании STARTTLS с
- в зависимости от настроек безопасности вашей учетной записи Google вам может потребоваться создать и использовать пароль а не пароль учетной записи. Это также может потребовать включения двухэтапной проверки. Тебе все равно стоит это устроить.
MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 465
MAIL_USE_SSL = True
MAIL_USERNAME = 'username@gmail.com'
MAIL_PASSWORD = 'app password generated in step 3'
небольшое, но важное дополнение к ответу давидизма:
вы должны иметь "2-шаг проверки" включен на вашем аккаунте Google, прежде чем вы сможете настроить пароли конкретных приложений.