13.11. Creando un proyecto Django: enviando correos electrónicos
Al crear un sistema con Python y Django, una de las características más útiles que puedes implementar es la capacidad de enviar correos electrónicos. Ya sea para notificar a los usuarios sobre actualizaciones, confirmar suscripciones o restablecer contraseñas, el envío de correos electrónicos es una herramienta esencial para cualquier aplicación web. En este capítulo, exploraremos cómo configurar Django para enviar correos electrónicos.
Configuración del servidor de correo electrónico
Para enviar correo electrónico con Django, necesita un servidor de correo SMTP. Django admite muchos servidores de correo como Gmail, SendGrid, Amazon SES y otros. Para los fines de este tutorial, usaremos Gmail.
Primero, debe configurar los ajustes de correo electrónico en su archivo settings.py. A continuación se muestra un ejemplo de cómo configurar Gmail:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = Verdadero EMAIL_HOST_USER = 'tucorreo@gmail.com' EMAIL_HOST_PASSWORD = 'tu contraseña'
Las configuraciones anteriores se explican por sí solas. EMAIL_HOST y EMAIL_PORT son la configuración del servidor SMTP de Gmail. EMAIL_USE_TLS está configurado en Verdadero porque Gmail usa TLS. EMAIL_HOST_USER y EMAIL_HOST_PASSWORD son su correo electrónico y contraseña de Gmail respectivamente.
Envío de correos electrónicos
Con la configuración de su servidor de correo electrónico configurada, ahora puede enviar correos electrónicos. Django proporciona una función llamada send_mail para enviar correos electrónicos. A continuación se muestra un ejemplo de cómo utilizar la función send_mail:
desde django.core.mail importar send_mail enviar correo( 'Asunto del email', 'Cuerpo del correo electronico', 'de@ejemplo.com', ['a@ejemplo.com'], fail_silfully=Falso, )
La función send_mail acepta cinco parámetros. El primero es el asunto del correo electrónico. El segundo es el cuerpo del correo electrónico. El tercero es la dirección de correo electrónico del remitente. El cuarto es una lista de las direcciones de correo electrónico de los destinatarios. El último parámetro, fail_silfully, es booleano. Si se establece en Verdadero, la función no generará excepciones si no se puede enviar el correo electrónico. Si es falso, la función generará excepciones si no se puede enviar el correo electrónico.
Enviar correos electrónicos con HTML
Django también admite el envío de correos electrónicos HTML. Para enviar un correo electrónico con HTML, puede utilizar la función EmailMessage. A continuación se muestra un ejemplo de cómo utilizar la función EmailMessage para enviar un correo electrónico con HTML:
desde django.core.mail importar mensaje de correo electrónico correo electrónico = mensaje de correo electrónico ( 'Hola', 'El cuerpo va aquí', 'de@ejemplo.com', ['a@ejemplo.com'], ['bcc@ejemplo.com'], respuesta_a=['otro@ejemplo.com'], encabezados = {'ID del mensaje': 'foo'}, ) Enviar correo electrónico()
La función EmailMessage acepta varios parámetros. Los primeros cuatro son iguales a la función send_mail. El quinto parámetro es una lista de direcciones de correo electrónico para CCO. El sexto parámetro es una lista de direcciones de correo electrónico para la respuesta. El último parámetro es un diccionario de encabezados adicionales para el correo electrónico.
Para agregar HTML al correo electrónico, puede utilizar el método content_subtype del objeto EmailMessage. Aquí tienes un ejemplo:
correo electrónico = EmailMessage('Hola', 'El cuerpo va aquí', 'de@ejemplo.com', ['a@ejemplo.com']) correo electrónico.content_subtype="html" Enviar correo electrónico()
Espero que este capítulo te haya dado una buena comprensión de cómo enviar correos electrónicos con Django. En el próximo capítulo, exploraremos cómo integrar Django con bases de datos.