Invio della posta

L'API mail fornisce 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, quindi ritornano. Il servizio di posta mette in coda il messaggio, quindi tenta di inviarlo, riprova se il server di posta di destinazione non è disponibile. Gli errori e i messaggi di ritorno vengono inviati all'indirizzo del mittente del messaggio email.

Prima di iniziare

Devi registrare i tuoi indirizzi email come mittenti autorizzati. Per ulteriori informazioni, consulta Chi può inviare email.

Invio di email con mail.send_mail()

Per inviare email utilizzando 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 email 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 mostra 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 email collettive

Consulta le linee guida per la posta inviata in blocco per informazioni sull'invio di email collettive.