Envoyer des e-mails

L'API Mail permet d'envoyer un e-mail selon deux méthodes : la fonction mail.send_mail() et la classe EmailMessage.

L'envoi est asynchrone : la fonction mail.send_mail() et la méthode EmailMessage.send() transmettent les données du message au service de messagerie, puis affichent le résultat. Le service de messagerie met le message en file d'attente, puis tente de l'envoyer. Si le serveur de messagerie de destination est indisponible, il effectue une nouvelle tentative. Les erreurs et les messages d'erreur automatiques sont envoyés à l'adresse d'expédition de l'e-mail.

Avant de commencer

Vous devez enregistrer vos adresses e-mail d'expédition en tant qu'expéditeurs autorisés. Pour en savoir plus, consultez la section Utilisateurs autorisés à envoyer des e-mails.

Envoyer un e-mail avec mail.send_mail()

Pour envoyer un e-mail à l'aide de la fonction mail.send_mail(), transmettez les champs de cet e-mail en tant que paramètres, y compris l'expéditeur, les destinataires, l'objet et le corps du message. Exemple :

    mail.send_mail(sender=sender_address,
                   to="Albert Johnson <Albert.Johnson@example.com>",
                   subject="Your account has been approved",
                   body="""Dear Albert:

Your example.com account has been approved.  You can now visit
http://www.example.com/ and sign in using your Google Account to
access new features.

Please let us know if you have any questions.

The example.com Team
""")

Envoyer un e-mail avec EmailMessage

Pour envoyer un e-mail à l'aide d'objets dotés de la classe EmailMessage, transmettez les champs de cet e-mail au constructeur EmailMessage et mettez à jour le message à l'aide des attributs de l'instance.

La méthode EmailMessage.send() envoie l'e-mail représenté par les attributs de l'instance. Une application peut réutiliser une instance EmailMessage en modifiant les attributs, puis en rappelant la méthode send().

    message = mail.EmailMessage(
        sender=sender_address,
        subject="Your account has been approved")

    message.to = "Albert Johnson <Albert.Johnson@example.com>"
    message.body = """Dear Albert:

Your example.com account has been approved.  You can now visit
http://www.example.com/ and sign in using your Google Account to
access new features.

Please let us know if you have any questions.

The example.com Team
"""
    message.send()

L'exemple suivant montre comment envoyer un message pour confirmer une adresse e-mail :

class UserSignupHandler(webapp2.RequestHandler):
    """Serves the email address sign up form."""

    def post(self):
        user_address = self.request.get('email_address')

        if not mail.is_email_valid(user_address):
            self.get()  # Show the form again.
        else:
            confirmation_url = create_new_user_confirmation(user_address)
            sender_address = (
                'Example.com Support <{}@appspot.gserviceaccount.com>'.format(
                    app_identity.get_application_id()))
            subject = 'Confirm your registration'
            body = """Thank you for creating an account!
Please confirm your email address by clicking on the link below:

{}
""".format(confirmation_url)
            mail.send_mail(sender_address, user_address, subject, body)

Envoyer des e-mails en masse

Pour en savoir plus sur l'envoi d'e-mails en masse, consultez la page Consignes sur les messages en masse.