2017-10-17 3 views
2

J'ai activé sendmail en utilisant l'option --enable_sendmail=yes comme décrit dans the GAE docs et je ne reçois toujours aucun email (bien que les emails apparaissent dans les messages de connexion). Le code simplifié ressemble à:Sendmail ne fonctionne pas pour le serveur local de développement local GAE

from google.appengine.api import mail 

SENDER_EMAIL_ADDRESS = "[email protected]" 

msg = "Test message" 

subject = "Test subject" 

recipient = "{} <{}>".format('username', '[email protected]') 

mail.send_mail(sender=SENDER_EMAIL_ADDRESS, 
       to=recipient, 
       subject=subject, 
       body=msg) 

Qu'est-ce que je fais de mal?

Répondre

2

Si vous spécifiez une adresse De, elle doit correspondre à votre machine locale. La fonction de traitement sendmail dans la Stub Mail que Google prévoit son serveur de développement ressemble à:

... 
try: 
    child.stdin.write(mime_message.as_string()) 
    child.stdin.close() 
... 

Le problème est que l'adresse de l'expéditeur passé à la méthode send_mail est en mime_message têtes. L'ajout de la ligne suivante en tant que première ligne dans le bloc try supprime cet en-tête du message mime. Cela permet sendmail d'utiliser une adresse De par défaut:

mime_message._headers = [x for x in mime_message._headers if x[0] != 'From'] 

Le fichier avec cette fonction se trouve à /path/to/google_cloud_sdk/platform/google_appengine/google/appengine/api/mail_stub.py