Nueva guía: cómo calentar una IP dedicada sin dañar tu reputación. Leer ahora →
MigoSMTP
Guías

Integración SMTP

Use cualquier cliente, aplicación o dispositivo SMTP. Copie los valores de conexión de su panel y añada TLS.

Datos de conexión

Use siempre una conexión cifrada. Autentíquese con su usuario SMTP y una clave de API como contraseña. Copie el host y el usuario exactos de la página SMTP de su panel; los valores de abajo muestran el formato.

Host:     YOUR_SMTP_HOST
Port:     587 (STARTTLS) or 465 (implicit TLS)
Username: YOUR_SMTP_USERNAME
Password: YOUR_API_KEY

Qué puerto usar

El puerto 587 con STARTTLS es el puerto de envío estándar y la mejor opción por defecto. El puerto 465 usa TLS desde el primer byte y es adecuado para clientes que lo esperan. Evite el puerto 25 para el envío: está pensado para correo entre servidores y muchos proveedores de hosting lo bloquean.

Pruebe desde la línea de comandos

Confirme la autenticación antes de conectar su aplicación. swaks envía un mensaje de prueba; openssl muestra el handshake TLS si algo falla.

swaks --to you@example.com --from hello@example.com \
  --server YOUR_SMTP_HOST:587 --tls \
  --auth LOGIN --auth-user YOUR_SMTP_USERNAME

openssl s_client -starttls smtp -connect YOUR_SMTP_HOST:587

Ejemplo: Node.js (Nodemailer)

Nodemailer funciona con cualquier servicio SMTP. Guarde las credenciales en variables de entorno.

const nodemailer = require("nodemailer");
const transport = nodemailer.createTransport({
  host: process.env.SMTP_HOST,
  port: 587,
  secure: false, // STARTTLS
  auth: { user: process.env.SMTP_USER, pass: process.env.MIGOSMTP_KEY },
});
await transport.sendMail({ from, to, subject, text });

Ejemplo: Python (smtplib)

La biblioteca estándar basta para un envío sencillo.

import os, smtplib
from email.message import EmailMessage

msg = EmailMessage()
msg["From"], msg["To"], msg["Subject"] = "hello@example.com", "you@example.com", "Hello"
msg.set_content("It works.")
with smtplib.SMTP(os.environ["SMTP_HOST"], 587) as s:
    s.starttls()
    s.login(os.environ["SMTP_USER"], os.environ["MIGOSMTP_KEY"])
    s.send_message(msg)

Cabeceras que conviene definir

Defina un Reply-To si las respuestas deben ir a una dirección distinta de la de from. Para correo masivo o de marketing añada una cabecera List-Unsubscribe, que los proveedores de correo buscan. Use una dirección from de un dominio que haya verificado, o el mensaje podría ser rechazado.

Resultados de entrega

SMTP solo indica que el mensaje fue aceptado. Para saber si se entregó, rebotó o se reportó como spam, use webhooks o la vista de actividad del panel.

SíntomaQué comprobar
535 Authentication failedCompruebe el usuario y que la contraseña sea una clave de API vigente con permiso de envío.
Tiempo de conexión agotadoEs posible que su host bloquee el puerto. Pruebe 587 o 465 y revise las reglas del firewall.
Error de TLS o de certificadoUse STARTTLS en el 587 o TLS implícito en el 465, y mantenga actualizadas las bibliotecas de su cliente.
550 sender rejectedLa dirección from no pertenece a un dominio verificado. Verifique primero el dominio.
Error temporal 421 o 451Reduzca el ritmo y reintente más tarde. No reintente en un bucle cerrado.
¿Le resultó útil esta página?Contactar con soporte

Empieza a enviar en minutos.

Crea una cuenta, añade tu dominio y envía tu primer correo.