2017-10-08 15 views
0

J'ai une simple webapp CRUD configurée en Python/Flask, quand une fonction particulière est activée (approbation d'une requête) Je voudrais envoyer une notification par email à l'utilisateur, mais pour Tout ce que j'ai essayé, je ne peux pas obtenir l'email pour envoyer mon code.Envoyer des emails via gmail en utilisant flask-mail

Voici mon fichier de configuration avec toutes les variables d'environnement pertinentes définies (à l'intérieur d'un objet Config):

MAIL_SERVER = 'smtp.gmail.com' 
MAIL_PORT=465 
MAIL_USE_SSL=True 
MAIL_USERNAME = '**@gmail.com' 
MAIL_PASSWORD = '**' 

J'ai aussi essayé d'appeler app.config.update (ces valeurs) dans mon application/init fichier .py Voici le code actuel pour le faire

mail = Mail() 

def create_app(config_name): 
    app = Flask(__name__, instance_relative_config=True) 
    app.config.from_object(app_config[config_name]) 
    app.config.from_pyfile('./config.py') 
    app.config.update(
    MAIL_SERVER='smtp.gmail.com', 
    MAIL_PORT=465, 
    MAIL_USE_SSL=True, 
    MAIL_USE_TLS=False, 
    MAIL_USERNAME = '**@gmail.com', 
    MAIL_PASSWORD = '**') 

    mail.init_app(app) 

Et le code est enfin là où je tente effectivement d'envoyer l'e-mail:

msg = Message(html=html, sender='**@gmail.com', subject='Your Reservation for %s' % reservation.item.name, recipients=['**']) 
mail.send(msg) 

De plus, il échoue en silence et je ne sais pas comment pour voir même quelle erreur se produit. Toute aide est très appréciée!

+0

Pour plus d'informations, consultez cette page: https://stackoverflow.com/a/17985896/7699045 –

+0

De même, assurez-vous d'autoriser "Applications moins sécurisées" dans les paramètres de votre compte Google si vous ne l'avez pas déjà fait. – BrettJ

+1

@BrettJ merci beaucoup! c'était en effet le problème! – Wasdo

Répondre

1

Ma suggestion dans les commentaires était en effet la réponse à la question.

L'activation des "applications moins sécurisées" dans les paramètres du compte Google était l'étape nécessaire pour corriger le blocage de l'OP. This link de la page d'assistance de Google explique comment activer cette option.

0

Je pense, vous devriez changer votre protocole envoyer à TLS

c'est échantillon de mon projet

MAIL_SERVER='smtp.gmail.com', 
MAIL_PORT=587, 
MAIL_USE_TLS=True, 
MAIL_USERNAME = '**@gmail.com', 
MAIL_PASSWORD = '**' 

pour moi cela fonctionne très bien.