IMAP Save Attachment
IMAP Save Attachment
Sección titulada «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.
Cómo funciona
Sección titulada «Cómo funciona»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
outputPathno 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ámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
host | string | — | Servidor IMAP. |
username | string | — | Usuario. |
password | credential | — | Contraseña o App Password. Usa credential("nombre")["password"]. |
mailId | string | — | UID del correo (de correo.Id). Debe ser numérico. |
outputPath | string | — | Carpeta local donde se guardan los adjuntos. Se crea si no existe. |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
port | int | 993 | Puerto IMAP. |
folder | string | "INBOX" | Carpeta donde está el correo. |
attachmentName | string | — | Nombre exacto del adjunto a guardar. Si se omite, se guardan todos. |
security | string | "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.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa 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 encontrado | El correo ya no está en folder (se movió o eliminó) o se leyó en otra carpeta. |
| Error de autenticación o de conexión | Igual que en IMAP Read. |
Ejemplo
Sección titulada «Ejemplo»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: correosFor 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.FromActividades relacionadas
Sección titulada «Actividades relacionadas»- IMAP Read — obtener los correos (y sus
mailId). - List Files — revisar lo que quedó en la carpeta.