Outlook 365 Mail Activities
Outlook 365 Mail Activities
Sección titulada «Outlook 365 Mail Activities»Versión: 1.0.5 · ID: zoan-packages-outlook365 · Autor: Zoan Software
El paquete Outlook 365 envía, busca, lee y organiza correos de un buzón de Microsoft 365 a través de Microsoft Graph, mediante conexiones OAuth2 de Zoan Cloud. Es el equivalente en la nube del paquete Outlook de escritorio: no necesita Outlook instalado ni una sesión de Windows abierta, así que funciona igual en robots atendidos y desatendidos.
Concepto 1: la conexión y sus permisos
Sección titulada «Concepto 1: la conexión y sus permisos»Las actividades usan una conexión OAuth de Microsoft 365 de Zoan Cloud, que se referencia por su nombre clave en Connect (credential = credential("m365-soporte")). Zoan Cloud guarda y renueva el token; el robot nunca ve la contraseña de la cuenta.
| Permiso de Microsoft Graph | Para qué |
|---|---|
Mail.ReadWrite | Buscar, leer, descargar adjuntos, mover, marcar, categorizar y eliminar. |
Mail.Send | Enviar, responder y reenviar. |
Mail.ReadWrite.Shared / Mail.Send.Shared | Lo mismo sobre buzones compartidos, con acceso delegado. |
La autenticación (delegada o solo de aplicación) la define la conexión. Con acceso delegado, sin mailbox, se trabaja sobre el buzón del usuario que autorizó la conexión; para buzones compartidos o acceso solo de aplicación, indica mailbox en Connect.
Concepto 2: la sesión
Sección titulada «Concepto 2: la sesión»Connect abre una sesión (ZoanOutlookMailSession) sobre un buzón:
- Con
body: las actividades de dentro la heredan y se cierra sola al terminar. - Sin
body: guárdala en una variable, pásala porsessiony ciérrala con Close.
La sesión usa el token vigente al conectar, que dura alrededor de una hora: en procesos largos, trabaja por lotes y conecta en cada lote.
Concepto 3: el correo como diccionario
Sección titulada «Concepto 3: el correo como diccionario»Get emails, Get email by ID y Move devuelven cada correo como un Dictionary<string,object> con las claves id, subject, from, fromName, to, cc, receivedDateTime, preview, isRead, hasAttachments, categories, webLink, body y bodyType (el detalle está en Get emails). Lee cada dato por su clave: correo["subject"].
El id es la entrada de todas las demás actividades. Cambia cuando el correo se mueve de carpeta: haz las operaciones sobre el correo antes de moverlo, o usa el id que devuelve Move.
Actividades
Sección titulada «Actividades»| Actividad | Tipo | Salida | Descripción |
|---|---|---|---|
| Outlook 365 — Connect | outlook365-connect | ZoanOutlookMailSession | Abre una sesión autenticada con Outlook 365 vía Microsoft Graph |
| Outlook 365 — Send | outlook365-send | — | Envía un correo desde el buzón de la sesión |
| Outlook 365 — Reply | outlook365-reply | — | Responde a un correo existente manteniendo el hilo |
| Outlook 365 — Forward | outlook365-forward | — | Reenvía un correo a otros destinatarios |
| Outlook 365 — Get emails | outlook365-get-emails | List<Dictionary<string,object>> | Busca correos en el buzón o en una carpeta, por asunto, texto, filtro o no leídos |
| Outlook 365 — Get email by ID | outlook365-get-email | Dictionary<string,object> | Trae un correo completo por su ID, con el cuerpo |
| Outlook 365 — Download attachments | outlook365-download-attachments | List<string> | Descarga los adjuntos de un correo a una carpeta |
| Outlook 365 — Move | outlook365-move | Dictionary<string,object> | Mueve un correo a otra carpeta |
| Outlook 365 — Mark read/unread | outlook365-mark-read | — | Marca un correo como leído o no leído |
| Outlook 365 — Set categories | outlook365-set-categories | — | Establece las categorías de un correo (reemplaza las existentes) |
| Outlook 365 — Delete | outlook365-delete | — | Elimina un correo |
| Outlook 365 — Close | outlook365-close | — | Cierra una sesión de Outlook 365 |
Ejemplo de proceso completo
Sección titulada «Ejemplo de proceso completo»Outlook 365 — Connect credential = credential("m365-facturas") └─ body: Outlook 365 — Get emails folder = "inbox" subject = "Factura" unreadOnly = true → output: pendientes For each correo in pendientes └─ Outlook 365 — Download attachments id = correo["id"] folder = "C:\facturas\entrada" Outlook 365 — Reply id = correo["id"] body = "Recibimos tu factura; la registraremos en los próximos días." Outlook 365 — Move id = correo["id"] destination = "archive"