Como enviar e-mails

A API Mail fornece duas maneiras de enviar uma mensagem de e-mail: a função mail.send_mail() e a classe EmailMessage.

O envio é assíncrono: a função mail.send_mail() e o método EmailMessage.send() transmitem os dados da mensagem para o serviço de e-mail e retornam. O serviço de e-mail enfileira a mensagem e tenta enviá-la, repetindo se o servidor de e-mail de destino não estiver disponível. Erros e mensagens de retorno são enviados ao endereço do remetente da mensagem de e-mail.

Antes de começar

Você precisa registrar seus remetentes de e-mails como remetentes autorizados. Para mais informações, consulte quem pode enviar e-mails.

Como enviar e-mails com mail.send_mail()

Para enviar e-mails usando a função mail.send_mail(), utilize os campos da mensagem de e-mail como parâmetros, incluindo o remetente, os destinatários, o assunto e o corpo da mensagem. Por exemplo:

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

Como enviar e-mails com EmailMessage

Para enviar e-mails usando objetos com a classe EmailMessage, transmita os campos da mensagem de e-mail para o construtor EmailMessage e use os atributos da instância para atualizar a mensagem.

O método EmailMessage.send() envia a mensagem de e-mail representada pelos atributos da instância. Um aplicativo pode reutilizar uma instância EmailMessage ao modificar atributos e chamar o método send() novamente.

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

No exemplo a seguir, veja como enviar uma mensagem para confirmar um endereço de 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)

Como enviar e-mails em massa

Consulte as diretrizes de e-mail em massa para considerações sobre como enviar e-mails em massa.