Invio della posta

L'API mail offre due modi per inviare un messaggio email: la funzione mail.send_mail() e la classe EmailMessage.

L'invio è asincrono: la funzione mail.send_mail() e il metodo EmailMessage.send() trasmettono i dati del messaggio al servizio di posta e poi ritornano. Il servizio di posta mette in coda il messaggio, quindi tenta di inviarlo, riprovando se il server di posta di destinazione non è disponibile. Errori e messaggi di mancato recapito vengono inviati all'indirizzo del mittente del messaggio email.

Prima di iniziare

Devi registrare i tuoi indirizzi email come mittenti autorizzati. Per scoprire di più, consulta l'articolo su chi può inviare email.

Invio di email con mail.send_mail()

Per inviare email con la funzione mail.send_mail(), utilizza i campi del messaggio email come parametri, inclusi il mittente, i destinatari, l'oggetto e il corpo del messaggio. Ad esempio:

    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
""")

Invio di email con EmailMessage

Per inviare posta utilizzando oggetti con la classe EmailMessage, passa i campi del messaggio email al costruttore EmailMessage e utilizza gli attributi dell'istanza per aggiornare il messaggio.

Il metodo EmailMessage.send() invia il messaggio email rappresentato dagli attributi dell'istanza. Un'applicazione può riutilizzare un'istanza EmailMessage modificando gli attributi e richiamando di nuovo il metodo 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'esempio seguente illustra l'invio di un messaggio per confermare un indirizzo email:

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)

Invio di messaggi collettivi

Per considerazioni sull'invio di email collettive, consulta le linee guida per la posta collettiva.