Enviar correo

La API Mail ofrece dos formas de enviar un mensaje de correo: la función mail.send_mail() y la clase EmailMessage.

El envío es asíncrono: la función mail.send_mail() y el método EmailMessage.send() transmiten los datos del mensaje al servicio de correo y, a continuación, vuelven. El servicio de correo pone el mensaje en cola y, a continuación, intenta enviarlo. Si el servidor de correo de destino no está disponible, vuelve a intentarlo. Los errores y los mensajes de rebote se envían a la dirección del remitente del mensaje de correo.

Antes de empezar

Debes registrar tus correos de remitente como remitentes autorizados. Para obtener más información, consulta quién puede enviar correos.

Enviar correo con mail.send_mail()

Para enviar correo con la función mail.send_mail(), usa los campos del mensaje de correo como parámetros, incluidos el remitente, los destinatarios, el asunto y el cuerpo del mensaje. Por ejemplo:

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

Enviar correo con EmailMessage

Para enviar correo mediante objetos con la clase EmailMessage, pasa los campos del mensaje de correo al constructor EmailMessage y usa los atributos de la instancia para actualizar el mensaje.

El método EmailMessage.send() envía el mensaje de correo representado por los atributos de la instancia. Una aplicación puede reutilizar una instancia de EmailMessage modificando los atributos y volviendo a llamar al método 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()

En el siguiente ejemplo se muestra cómo enviar un mensaje para confirmar una dirección de correo electrónico:

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)

Envío de correo masivo

Consulta las directrices para el correo masivo para obtener información sobre el envío de correos masivos.