Python 2 ya no es compatible con la comunidad. Recomendamos que migres las apps de Python 2 a Python 3.

Envía correos electrónicos

La API de correo electrónico proporciona dos formas de enviar un mensaje de correo electrónico: 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 electrónico y, luego, los muestra. El servicio de correo electrónico pone en cola el mensaje, luego, intenta enviarlo y vuelve a intentarlo si el servidor de correo de destino no está disponible. Los errores y los mensajes de rebote se envían a la dirección del remitente para el mensaje de correo electrónico.

Antes de comenzar

Debes registrar los correos electrónicos de tus remitentes como remitentes autorizados. Para obtener más información, consulta Quiénes pueden enviar correos electrónicos.

Envía correos electrónicos con mail.send_mail()

Para enviar correos electrónicos mediante la función mail.send_mail(), usa los campos del mensaje de correo electrónico 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
""")

Envía correos electrónicos con EmailMessage

Para enviar correos electrónicos mediante objetos con la clase EmailMessage, pasa los campos del mensaje de correo electrónico al constructor EmailMessage y usa los atributos de la instancia a fin de actualizar el mensaje.

El método EmailMessage.send() envía el mensaje de correo electrónico representado por los atributos de la instancia. En una aplicación, se puede volver a usar una instancia EmailMessage si se modifican los atributos y se llama de nuevo 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 demuestra el envío de 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)

Enviar correo masivo

Consulta los Lineamientos para el correo masivo a fin de conocer las consideraciones sobre el envío de correo electrónico masivo.