SMTP para Python — correo de su script o app Django
Python trae SMTP integrado: con smtplib envía un mensaje en unas pocas líneas, y Django lo agrupa en su propia capa de correo con los ajustes EMAIL. Lo que no aporta ninguno de los dos es la entregabilidad: eso depende del servidor por el que envía.
Tanto si tiene un script suelto como una aplicación Flask o un proyecto Django, los ajustes son los mismos cinco datos. Los apunta a su relay y el código que compone los mensajes se queda igual.
Por qué falla sin relay
El correo de Python sale a menudo desde el segundo plano: un informe nocturno, una tarea programada que envía facturas, un script que avisa cuando una medición se sale del margen. Nadie está mirando, así que nadie nota que el servidor receptor los rechaza en silencio. En Django se suma la sorpresa clásica al publicar: en desarrollo todo va a la consola y en producción a proveedores reales que sí comprueban la reputación.
Configurar el SMTP en Python
Obtener los datos
Acceda a su cuenta de 2mail y obtenga allí su servidor SMTP, su nombre de usuario y su contraseña.
Introducirlos en Python
En un proyecto Django pone los ajustes EMAIL en la configuración: el backend SMTP como backend de correo, el host del relay, el puerto 587, la opción STARTTLS activada, el usuario y la contraseña, y una dirección de remitente por defecto en su propio dominio. Si trabaja directamente con smtplib, conecta con el host en el puerto 587, llama a starttls, inicia sesión con usuario y contraseña y envía después el mensaje. En ambos casos, lea los datos de variables de entorno y no del código.
Autenticar el dominio
Asegúrese de que SPF, DKIM y DMARC de su dominio son correctos, para que los destinatarios puedan verificar que el correo viene de usted.
Probar
Envíe un mensaje de prueba a una dirección de un gran proveedor y compruebe que llega a la bandeja de entrada y no a la carpeta de spam.
Los campos que pide Python
Cada plataforma los llama de una manera algo distinta, pero siempre son los mismos cinco. Los valores concretos dependen de su cuenta y los encuentra en su cuenta de 2mail: cópielos de ahí para asegurarse de usar los correctos.
| Campo | Qué introducir |
|---|---|
| Servidor SMTP (host) | El nombre del servidor de su cuenta de 2mail. |
| Puerto | El puerto que corresponde al cifrado elegido; su cuenta le indica cuál. |
| Cifrado | TLS. No envíe nunca sin cifrar: de lo contrario sus credenciales viajan en claro. |
| Nombre de usuario | El acceso SMTP de su cuenta de 2mail. |
| Contraseña | La contraseña correspondiente. No use nunca la contraseña del buzón de un empleado. |
Qué correos envía Python
Una vez configurado el relay, todos estos pasan por 2mail: no tiene que configurarlos uno a uno.
Errores frecuentes con Python
La opción TLS y el puerto deben coincidir
Django tiene dos ajustes de TLS distintos: uno para STARTTLS y otro para TLS desde el principio. Active solo el ajuste de STARTTLS, que es el que corresponde al puerto 587. Activar los dos da un error de configuración; no activar ninguno envía su acceso sin cifrar, y un relay rechaza eso con razón.
Una conexión por serie, no por mensaje
Un script que abre una conexión SMTP nueva para cada uno de mil mensajes se comporta como un atacante. Abra una conexión, envíe la serie y ciérrela. Django tiene una función para enviar varios mensajes por una misma conexión.
Errores silenciosos en tareas de fondo
Una excepción en una tarea cron desaparece en un archivo de registro que nadie lee. Capture los errores al enviar y notifíquelos en algún sitio donde se vean, y conecte los webhooks de 2mail para la entrega y el rebote, para ver también lo que falla tras la entrega.
¿Otra plataforma?
SMTP es un protocolo estándar: cualquier sistema que hable SMTP —un CRM, un ERP, una aplicación propia o un servidor— puede enviar a través de 2mail con esos mismos cinco campos.