Ir al contenido

SMTP Send

Tipo: smtp-send  ·  Paquete: SMTP / IMAP Email Activities v1.0.5

Envía un correo a través de un servidor SMTP, sin necesidad de Outlook instalado. Soporta varios destinatarios, copia (CC) y copia oculta (BCC), dirección de respuesta, cuerpo en texto o HTML, y adjuntos. Es la actividad para enviar notificaciones, reportes y confirmaciones desde un robot, también en ejecución desatendida.

  1. Arma el mensaje: remitente (from, o el username si no lo das), destinatarios, asunto, cuerpo (texto o HTML según isHtml) y adjuntos. Si falta algún adjunto, falla antes de conectarse, así que no sale un correo incompleto.
  2. Se conecta a host:port con el cifrado de security (por defecto auto en el puerto 587: STARTTLS si el servidor lo ofrece), inicia sesión con username y password, envía y se desconecta.

Los destinatarios (to, cc, bcc) pueden ser un texto con direcciones separadas por coma ("ana@empresa.com, luis@empresa.com") o una lista. Cada dirección puede llevar nombre visible: "Ana Pérez <ana@empresa.com>". Los datos de conexión son los del servidor de envío.

Cada ejecución envía un correo nuevo: si la pones dentro de un Retry, un reintento tras un envío que sí llegó produce un duplicado.

ParámetroTipoPor defectoDescripción
hoststring—Servidor SMTP (ej. smtp.gmail.com).
usernamestring—Usuario con el que se inicia sesión (normalmente el correo completo).
passwordcredential—Contraseña o App Password. Usa credential("nombre")["password"].
tostring | List—Destinatario(s): texto con direcciones separadas por coma, o lista de direcciones. Debe haber al menos una.
subjectstring—Asunto.
bodystring—Cuerpo del correo (texto plano, o HTML con isHtml = true).
ParámetroTipoPor defectoDescripción
portint587Puerto SMTP. Con security = ssl suele ser 465.
fromstringusernameDirección del remitente; admite "Nombre <correo>". Muchos servidores exigen que sea la cuenta con la que inicias sesión o un alias autorizado.
replyTostring—Dirección a la que llegan las respuestas (Reply-To).
isHtmlboolfalseEl body es HTML.
ccstring | List—Copia: texto separado por comas o lista.
bccstring | List—Copia oculta: texto separado por comas o lista.
attachmentsstring | List—Un texto con una ruta de archivo, o una lista de rutas. Todos los archivos deben existir.
securitystring"auto"Cifrado: auto, none, ssl o starttls. Ver Cifrado y puertos.

Esta actividad no devuelve ningún valor. El log indica a cuántos destinatarios (to + cc + bcc) se envió.

MensajeCausa y solución
'host' es obligatorio. (y lo mismo con username, subject, body)Falta el parámetro o la expresión dio null. Para un cuerpo vacío usa "".
Se necesita al menos un destinatario en 'to'.to está vacío o la lista no tiene textos.
No se encontró el archivo adjunto.Una ruta de attachments no existe. Compruébala antes con File Exists; el correo no se envía.
Error al interpretar una direcciónAlguna dirección de from, to, cc, bcc o replyTo no es válida (por ejemplo, separadas con ; en vez de coma).
Error de autenticación del servidorUsuario o contraseña incorrectos, o la cuenta exige una App Password.
Error de conexión o de TLSHost o puerto equivocados, o security no corresponde al puerto (por ejemplo ssl en el 587). Usa 587 + auto/starttls o 465 + ssl.

Enviar una factura adjunta usando credenciales seguras, con copia al área de cartera:

SMTP Send
host = "smtp.gmail.com"
username = credential("correo-bot")["user"]
password = credential("correo-bot")["password"]
from = "Facturación <" + credential("correo-bot")["user"] + ">"
to = cliente.correo
cc = "cartera@empresa.com"
subject = "Factura " + numeroFactura
body = "<p>Adjuntamos su factura <b>" + numeroFactura + "</b>. Gracias por su compra.</p>"
isHtml = true
attachments = arr("C:/facturas/" + numeroFactura + ".pdf")