Ir al contenido

IMAP Save Attachment

Tipo: imap-save-attachment  ·  Paquete: SMTP / IMAP Email Activities v1.0.5  ·  Salida: List<string>

Descarga y guarda los adjuntos de un correo en una carpeta local, con su nombre original. Clave en procesos que reciben documentos por correo (facturas, planillas) para luego procesarlos, sin tener que cargar los bytes en memoria con IMAP Read.

A partir del mailId de un correo (el .Id que devuelve IMAP Read), abre la carpeta folder en solo lectura, descarga el mensaje y guarda sus adjuntos en outputPath:

  • Si outputPath no existe, se crea.
  • Si indicas attachmentName, guarda solo los adjuntos con ese nombre exacto (sin distinguir mayúsculas); si lo omites, guarda todos.
  • Cada archivo se guarda con su nombre original (sin rutas); un adjunto sin nombre se guarda como attachment_N. Si ya existe un archivo con ese nombre, se sobrescribe.
  • No cambia el estado del correo (sigue no leído si lo estaba).

Usa la misma folder con la que leíste el correo: el UID solo es válido dentro de su carpeta.

ParámetroTipoPor defectoDescripción
hoststring—Servidor IMAP.
usernamestring—Usuario.
passwordcredential—Contraseña o App Password. Usa credential("nombre")["password"].
mailIdstring—UID del correo (de correo.Id). Debe ser numérico.
outputPathstring—Carpeta local donde se guardan los adjuntos. Se crea si no existe.
ParámetroTipoPor defectoDescripción
portint993Puerto IMAP.
folderstring"INBOX"Carpeta donde está el correo.
attachmentNamestring—Nombre exacto del adjunto a guardar. Si se omite, se guardan todos.
securitystring"ssl"Cifrado: auto, none, ssl o starttls.

Devuelve una List<string> con la ruta completa de cada adjunto guardado, en el orden en que vienen en el correo. Si no se guardó ninguno, la lista está vacía. El log indica cuántos adjuntos se guardaron; si indicaste attachmentName y no está en el correo, avisa El adjunto solicitado no está en el correo. Desde la versión 1.0.5 la salida se declara y el Designer ofrece dónde guardarla.

MensajeCausa y solución
'mailId' no es válido. Debe ser el UID numérico que devuelve imap-read.mailId no es un número (por ejemplo, un .Id de Outlook o un texto vacío). Pasa correo.Id de IMAP Read.
'mailId' es obligatorio. / 'outputPath' es obligatorio.Falta el parámetro o la expresión dio null.
Error de mensaje no encontradoEl correo ya no está en folder (se movió o eliminó) o se leyó en otra carpeta.
Error de autenticación o de conexiónIgual que en IMAP Read.

Guardar los adjuntos de cada correo en su propia carpeta y revisar qué llegó:

IMAP Read host = "imap.gmail.com" username = credential("correo-bot")["user"] password = credential("correo-bot")["password"]
subject = "Factura" hasAttachments = true → output: correos
For Each items = correos itemVariable = correo
└─ activities:
IMAP Save Attachment
host = "imap.gmail.com" username = credential("correo-bot")["user"] password = credential("correo-bot")["password"]
mailId = correo.Id outputPath = "C:/facturas/" + correo.Id → output: archivos
Log message = count(archivos) + " archivo(s) de " + correo.From
  • IMAP Read — obtener los correos (y sus mailId).
  • List Files — revisar lo que quedó en la carpeta.