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 invialo, 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 posta utilizzando oggetti con classe EmailMessage, passa i campi del messaggio email alla il costruttore EmailMessage e utilizza gli attributi dell'istanza per aggiornare per creare un nuovo messaggio email.

Il metodo EmailMessage.send() invia il messaggio email rappresentati 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 messaggi collettivi

Per considerazioni sull'invio di messaggi collettivi, consulta le linee guida per messaggi collettivi email.