Envío de correos electrónicos con Django: Tutorial de EmailMessage
Django incluye un módulo dedicado expresamente a manipular y enviar emails. Dentro encontramos funciones como send_message
para usos simples o la clase EmailMessage
, más sofisticada. En este tutorial, vamos a aprender a utilizar la clase EmailMessage
para enviar correos electrónicos personalizados.
Configuración
Lo primero que debemos hacer es configurar Django para enviar correos electrónicos. Para ello, debemos editar el archivo settings.py
y añadir las siguientes líneas:
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'tu_correo@gmail.com'
EMAIL_HOST_PASSWORD = 'tu_contraseña'
EMAIL_USE_TLS = True
Estas líneas configuran el servidor SMTP de Gmail para enviar correos electrónicos. En lugar de Gmail, también puedes utilizar otro servidor SMTP, como el de tu proveedor de correo electrónico.
Creando un objeto EmailMessage
Para enviar un correo electrónico con Django, debemos crear un objeto de la clase EmailMessage
. Este objeto representa el correo electrónico que queremos enviar.
from django.core.mail import EmailMessage
email = EmailMessage(
subject='Asunto del correo electrónico',
body='Cuerpo del correo electrónico',
from_email='tu_correo@gmail.com',
to_email='destinatario@example.com',
)
Los argumentos de EmailMessage
son los siguientes:
subject
: El título del correo electrónico.body
: El cuerpo del correo electrónico.from_email
: La dirección de correo electrónico del remitente.to_email
: La dirección de correo electrónico del destinatario.
Enviando el correo electrónico
Una vez creado el objeto EmailMessage
, podemos enviarlo utilizando el método send()
.
email.send()
Esto enviará el correo electrónico al destinatario especificado.
Ejercicio
Vamos a crear un pequeño ejemplo para enviar un correo electrónico de bienvenida a un nuevo usuario.
from django.core.mail import EmailMessage
from django.contrib.auth.models import User
def send_welcome_email(user):
email = EmailMessage(
subject='Bienvenido a nuestra página web',
body='Hola {username}, bienvenido a nuestra página web.'.format(username=user.username),
from_email='tu_correo@gmail.com',
to_email=user.email,
)
email.send()
if __name__ == '__main__':
user = User.objects.create_user('username', 'email@example.com', 'password')
send_welcome_email(user)
Este ejemplo crea un objeto User
con el nombre de usuario username
y la dirección de correo electrónico email@example.com
. A continuación, llama a la función send_welcome_email()
, que envía un correo electrónico de bienvenida al usuario.
Personalizando el correo electrónico
Podemos personalizar el correo electrónico utilizando los siguientes métodos:
add_alternative()
: Añade un cuerpo alternativo en formato HTML.bcc_email()
: Añade una dirección de correo electrónico de correo ciego.cc_email()
: Añade una dirección de correo electrónico de copia.reply_to_email()
: Establece la dirección de correo electrónico de respuesta.extra_headers()
: Añade encabezados personalizados al correo electrónico.
Conclusión
Django ofrece una forma sencilla de enviar correos electrónicos. La clase EmailMessage
nos permite crear correos electrónicos personalizados con facilidad.