Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
ada:howto:sicoferp:factory:integrations:msadaemailservice [2022/03/22 14:46] administraidor |
ada:howto:sicoferp:factory:integrations:msadaemailservice [2023/06/05 15:10] (actual) 192.168.175.173 [Consideraciones] |
||
---|---|---|---|
Línea 7: | Línea 7: | ||
//*Requiere generación de clave de aplicaciones// | //*Requiere generación de clave de aplicaciones// | ||
+ | |||
+ | ===== Nueva Implementación ===== | ||
+ | Se adiciona soporte API MailerSend para envios masivos por medio de tokens de autorización. Favor ver [[#Liberación Versión 2.0.0 Correos Masivos|Versión 2.0.0]] para más información. A partir de la fecha 05/06/2023 la versión 1.0.0 queda obsoleta y no debe ser utilizada para procesos de producción((Se prevee eliminar el soporte de esa versión en liberaciones posteriores)). | ||
===== Descripción del Servicio ===== | ===== Descripción del Servicio ===== | ||
^Nombre^Descripción^Tipo Servicio^Tecnología^Lenguaje^Tipo Desarrollo^Versión Desarrollo^Archivo de Configuración^ | ^Nombre^Descripción^Tipo Servicio^Tecnología^Lenguaje^Tipo Desarrollo^Versión Desarrollo^Archivo de Configuración^ | ||
- | |AdaEmailServie|Permite el envío de correos electrónicos.|Rest|SpringBoot 2.6.4|Java 11.0.315|Nuevo|11.6.0.1|application.properties| | + | |AdaEmailServie|Permite el envío de correos electrónicos.|Rest|SpringBoot 2.7.6|Java 11.0.315|Nuevo|11.6.0.1|application.properties| |
^Tipo Empaquetado^Gestor de Dependencias^Servidor de Despliegue^IDE Proyecto^Tipo Repositorio^Url Desarrollo^Url Calidad^Url Producción^ | ^Tipo Empaquetado^Gestor de Dependencias^Servidor de Despliegue^IDE Proyecto^Tipo Repositorio^Url Desarrollo^Url Calidad^Url Producción^ | ||
- | |war|Maven 3.8.1|WildFly 20|SpringTools 4.6|Subversión|[[http://adacsc.co:1443/svn/repository/ADA/SICOFERP/fuentes/branches/development/core/Microservicios/AdaEmailService | + | |war|Maven 3.8.1|WildFly 20|SpringTools 4.16.1|Subversión|[[http://adacsc.co:1443/svn/repository/ADA/SICOFERP/fuentes/branches/development/core/Microservicios/AdaEmailService |
|SVN branches]]|[[http://adacsc.co:1443/svn/repository/ADA/SICOFERP/fuentes/trunk/development/core/Microservicios/AdaEmailService | |SVN branches]]|[[http://adacsc.co:1443/svn/repository/ADA/SICOFERP/fuentes/trunk/development/core/Microservicios/AdaEmailService | ||
|SVN trunk]]|[[|SVN tags]]| | |SVN trunk]]|[[|SVN tags]]| | ||
Línea 22: | Línea 25: | ||
|org.springframework.boot|spring-boot-devtools||N/A|runtime|true|Recarga de aplicaciones|| | |org.springframework.boot|spring-boot-devtools||N/A|runtime|true|Recarga de aplicaciones|| | ||
|org.projectlombok|lombok||N/A|N/A|true|API de anotaciones para reducción de código|| | |org.projectlombok|lombok||N/A|N/A|true|API de anotaciones para reducción de código|| | ||
- | |org.springframework.cloud|spring-cloud-sleuth-zipkin||N/A|N/A|true|API de gestión de logs centralizados|| | ||
|org.springframework.boot|spring-boot-starter-test||N/A|test|N/A|Core Springboot|| | |org.springframework.boot|spring-boot-starter-test||N/A|test|N/A|Core Springboot|| | ||
|org.postgresql|webjars-locator-jboss-vfs||0.1.0|N/A|N/A|Plugins para despliegue en Wildfly|| | |org.postgresql|webjars-locator-jboss-vfs||0.1.0|N/A|N/A|Plugins para despliegue en Wildfly|| | ||
Línea 30: | Línea 32: | ||
|org.springframework.boot|spring-boot-starter||N/A|N/A|N/A|Core Springboot|| | |org.springframework.boot|spring-boot-starter||N/A|N/A|N/A|Core Springboot|| | ||
|com.sun.mail|javax.mail||1.6.2|N/A|N/A|Envío de correos|| | |com.sun.mail|javax.mail||1.6.2|N/A|N/A|Envío de correos|| | ||
+ | |org.freemarker|freemarker||N/A|N/A|N/A|Plantillas de Texto|| | ||
+ | |com.mailersend|java-sdk||1.0.0|N/A|N/A|Envío de correos por medio del API MailerSend|| | ||
^Documentación Operaciones^^^^^^^^ | ^Documentación Operaciones^^^^^^^^ | ||
^Tipo^Documentación^^^^^^Visor^ | ^Tipo^Documentación^^^^^^Visor^ | ||
- | |Swagger|[[http://srv-appeon-000-w23.adacsc.co/AdaEmailService/api-docs|Ver Documento Json]]||||||https://editor.swagger.io/| | + | |Swagger|[[https://factory-ws-utilities17.adacsc.co/AdaEmailService/v3/api-docs|Ver Documento Json]]||||||https://editor.swagger.io/| |
|Javadoc|[[http://adacsc.co:1443/svn/repository/ADA/SICOFERP/fuentes/branches/development/core/Microservicios/AdaEmailService/doc|Directorio Javadoc]]||||||Navegador Web| | |Javadoc|[[http://adacsc.co:1443/svn/repository/ADA/SICOFERP/fuentes/branches/development/core/Microservicios/AdaEmailService/doc|Directorio Javadoc]]||||||Navegador Web| | ||
^Ambientes de Despliegue^^^^^^^^ | ^Ambientes de Despliegue^^^^^^^^ | ||
Línea 38: | Línea 42: | ||
|Desarrollo:|http://localhost:8080||Ambiente de desarrollo||||| | |Desarrollo:|http://localhost:8080||Ambiente de desarrollo||||| | ||
|Calidad:|http://srv-appeon-000-w23.adacsc.co/AdaEmailService||Ambiente de validación||||| | |Calidad:|http://srv-appeon-000-w23.adacsc.co/AdaEmailService||Ambiente de validación||||| | ||
- | |Producción:| ||Ambiente de producción||||| | + | |Producción:|https://factory-ws-utilities17.adacsc.co/AdaEmailService||Ambiente de producción||||| |
Línea 57: | Línea 61: | ||
=== Notas === | === Notas === | ||
- | * Debe contar con VPN | + | * URL Base Local - Index: http://localhost:8088 |
- | * Ejemplo de Consumo QA - Index: http://srv-appeon-000-w23.adacsc.co/AdaEmailService | + | * URL Base QA - Index: http://srv-appeon-000-w23.adacsc.co/AdaEmailService |
- | * Ejemplo de consumo QA - Doc Swagger: http://srv-appeon-000-w23.adacsc.co/AdaEmailService/api-docs | + | * URL Base Producción - Index: https://factory-ws-utilities17.adacsc.co/AdaEmailService |
===== Ejemplos de envio de correos ===== | ===== Ejemplos de envio de correos ===== | ||
==== Envio servidor Ionos ==== | ==== Envio servidor Ionos ==== | ||
+ | Esta versión esta Obsoleta. Por favor utilice la [[#Liberación Versión 2.0.0 Correos Masivos|Versión 2.0.0]] | ||
+ | |||
<code yaml> | <code yaml> | ||
+ | //URL: email/v1/send | ||
+ | |||
{ | { | ||
"smtpHost": "smtp.ionos.com", | "smtpHost": "smtp.ionos.com", | ||
Línea 98: | Línea 106: | ||
==== Envio servidor Outlook ==== | ==== Envio servidor Outlook ==== | ||
+ | Esta versión esta Obsoleta. Por favor utilice la [[#Liberación Versión 2.0.0 Correos Masivos|Versión 2.0.0]] | ||
<code yaml> | <code yaml> | ||
+ | //URL: email/v1/send | ||
{ | { | ||
"smtpHost": "smtp.outlook.com", | "smtpHost": "smtp.outlook.com", | ||
Línea 133: | Línea 143: | ||
==== Envio servidor Gmail ==== | ==== Envio servidor Gmail ==== | ||
+ | Esta versión esta Obsoleta. Por favor utilice la [[#Liberación Versión 2.0.0 Correos Masivos|Versión 2.0.0]] | ||
- | <code Yaml> | + | <code yaml> |
+ | //URL: email/v1/send | ||
{ | { | ||
"smtpHost": "smtp.gmail.com", | "smtpHost": "smtp.gmail.com", | ||
Línea 167: | Línea 179: | ||
</code> | </code> | ||
+ | ===== Liberación Versión 2.0.0 Correos Masivos ===== | ||
+ | Se libera versión con soporte de envios masivos sin necesidad de servidor SMTP utilizando el API de envios masivos [[https://app.mailersend.com/|MailerSend]]. | ||
- | [[ada:howto:sicoferp:factory:integrations|←Volver atrás]] | + | ==== Documentación Técnica Javadoc ==== |
+ | Se libera la documentación técnica javadoc la cual puede ser consultada desde la carpeta de documentación del proyecto en la ruta del [[http://adacsc.co:1443/svn/repository/ADA/SICOFERP/fuentes/branches/development/core/Microservicios/AdaEmailService/doc|SVN]] | ||
+ | === Nota === | ||
+ | Debe descargar el proyecto para visualizar la documentación. | ||
+ | ==== Documentación Técnica OpenAPI ==== | ||
+ | Se libera documentación OpenAPI V3 la cual se comparte a continuación y puede ser visualizada en el [[https://editor.swagger.io/|visor swagger]] | ||
+ | |||
+ | === Nota === | ||
+ | Copie el siguiente texto en formato JSON y peguelo en el panel izquierdo del visor [[https://editor.swagger.io/|visor swagger]] | ||
+ | |||
+ | |||
+ | <code yaml> | ||
+ | { | ||
+ | "openapi": "3.0.1", | ||
+ | "info": { | ||
+ | "title": "OpenAPI definition", | ||
+ | "version": "v0" | ||
+ | }, | ||
+ | "servers": [ | ||
+ | { | ||
+ | "url": "http://factory-ws-utilities17.adacsc.co/AdaEmailService", | ||
+ | "description": "Generated server url" | ||
+ | } | ||
+ | ], | ||
+ | "tags": [ | ||
+ | { | ||
+ | "name": "EmailController", | ||
+ | "description": "Controlador que gestiona los envíos de correos electrónicos en las aplicaciones." | ||
+ | } | ||
+ | ], | ||
+ | "paths": { | ||
+ | "/email/v2/send": { | ||
+ | "post": { | ||
+ | "tags": [ | ||
+ | "EmailController" | ||
+ | ], | ||
+ | "summary": "send", | ||
+ | "description": "Envía correos electrónicos utilizando el API de envio masivo MailerSend.", | ||
+ | "operationId": "send", | ||
+ | "parameters": [ | ||
+ | { | ||
+ | "name": "token", | ||
+ | "in": "header", | ||
+ | "description": "Token API utilizado para realiza el envío. Si no se especifica se utiliza uno genérico.", | ||
+ | "required": false, | ||
+ | "schema": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "example": "eyFDSFDSF4%$#%$#%VFDvcxvkxkvljxkljelkrjklcjvklcxjvklxjv" | ||
+ | }, | ||
+ | { | ||
+ | "name": "emailDto", | ||
+ | "in": "query", | ||
+ | "description": "Objeto con la configuración del envio y contenido del correo electrónico que será enviado", | ||
+ | "required": true, | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/EmailDto" | ||
+ | } | ||
+ | } | ||
+ | ], | ||
+ | "responses": { | ||
+ | "500": { | ||
+ | "description": "Se han generado inconsistencias al crear el registro.", | ||
+ | "content": { | ||
+ | "application/json": { | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/GenericResponseDto" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "202": { | ||
+ | "description": "Correo electrónico enviado correctamente.", | ||
+ | "content": { | ||
+ | "application/json": { | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/GenericResponseDto" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "503": { | ||
+ | "description": "No se puede enviar el correo electrónico.", | ||
+ | "content": { | ||
+ | "application/json": { | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/GenericResponseDto" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "/email/v1/send": { | ||
+ | "post": { | ||
+ | "tags": [ | ||
+ | "EmailController" | ||
+ | ], | ||
+ | "summary": "send", | ||
+ | "description": "Envía correos electrónicos.", | ||
+ | "operationId": "send_1", | ||
+ | "parameters": [ | ||
+ | { | ||
+ | "name": "emailConfigDto", | ||
+ | "in": "query", | ||
+ | "description": "Objeto con la configuración del envio y contenido del correo electrónico que será enviado", | ||
+ | "required": true, | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/EmailConfigDto" | ||
+ | }, | ||
+ | "example": { | ||
+ | "smtpHost": "smtp.ionos.com", | ||
+ | "smtpPort": 587, | ||
+ | "smtpAuth": "true", | ||
+ | "smtpMailUser": "email.test@ada.co", | ||
+ | "smtpMailPassword": "password", | ||
+ | "smtpStartTlsEnabled": false, | ||
+ | "smtpSessionDebug": true, | ||
+ | "subject": "Título de Prueba", | ||
+ | "content": "Contenido de prueba", | ||
+ | "html": false, | ||
+ | "toEmail": [ | ||
+ | { | ||
+ | "address": "notififacionTo.test@ada.co", | ||
+ | "persona": "Notificación To" | ||
+ | } | ||
+ | ], | ||
+ | "ccEmail": [ | ||
+ | { | ||
+ | "address": "notififacionCc.test@ada.co", | ||
+ | "persona": "Notificación Cc" | ||
+ | } | ||
+ | ], | ||
+ | "bccEmail": [ | ||
+ | { | ||
+ | "address": "notififacionBcc.test@ada.co", | ||
+ | "persona": "Notificación Bcc" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | ], | ||
+ | "responses": { | ||
+ | "500": { | ||
+ | "description": "Se han generado inconsistencias al crear el registro.", | ||
+ | "content": { | ||
+ | "application/json": { | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/GenericResponseDto" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "202": { | ||
+ | "description": "Correo electrónico enviado correctamente.", | ||
+ | "content": { | ||
+ | "application/json": { | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/GenericResponseDto" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "503": { | ||
+ | "description": "No se puede enviar el correo electrónico.", | ||
+ | "content": { | ||
+ | "application/json": { | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/GenericResponseDto" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "deprecated": true | ||
+ | } | ||
+ | }, | ||
+ | "/email/": { | ||
+ | "get": { | ||
+ | "tags": [ | ||
+ | "EmailController" | ||
+ | ], | ||
+ | "summary": "index", | ||
+ | "description": "Método de validación de estado del microservicio", | ||
+ | "operationId": "index", | ||
+ | "responses": { | ||
+ | "200": { | ||
+ | "description": "Microsericio en linea", | ||
+ | "content": { | ||
+ | "application/json": { | ||
+ | "schema": { | ||
+ | "$ref": "#/components/schemas/EmailController" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "components": { | ||
+ | "schemas": { | ||
+ | "AddressConfigDto": { | ||
+ | "type": "object", | ||
+ | "properties": { | ||
+ | "address": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "persona": { | ||
+ | "type": "string" | ||
+ | } | ||
+ | }, | ||
+ | "description": "Clase Dto que contiene la configuración de la dirección de correo electronico." | ||
+ | }, | ||
+ | "AttachmentConfigDto": { | ||
+ | "type": "object", | ||
+ | "properties": { | ||
+ | "fileName": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "fileContentStringBase64": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "typeContent": { | ||
+ | "type": "string" | ||
+ | } | ||
+ | }, | ||
+ | "description": "Clase Dto que contiene la configuración del archivo que se adjuntará al correo electrónico." | ||
+ | }, | ||
+ | "EmailDto": { | ||
+ | "type": "object", | ||
+ | "properties": { | ||
+ | "from": { | ||
+ | "$ref": "#/components/schemas/AddressConfigDto" | ||
+ | }, | ||
+ | "subject": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "content": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "html": { | ||
+ | "type": "boolean" | ||
+ | }, | ||
+ | "attachmentBase64": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AttachmentConfigDto" | ||
+ | } | ||
+ | }, | ||
+ | "toEmail": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AddressConfigDto" | ||
+ | } | ||
+ | }, | ||
+ | "ccEmail": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AddressConfigDto" | ||
+ | } | ||
+ | }, | ||
+ | "bccEmail": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AddressConfigDto" | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "description": "Clase Dto que contiene la configuración e información del correo electrónico." | ||
+ | }, | ||
+ | "GenericResponseDto": { | ||
+ | "type": "object", | ||
+ | "properties": { | ||
+ | "code": { | ||
+ | "type": "integer", | ||
+ | "format": "int64" | ||
+ | }, | ||
+ | "message": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "content": { | ||
+ | "type": "object" | ||
+ | } | ||
+ | }, | ||
+ | "description": "Dto generico utilizado para respuestas en servicios." | ||
+ | }, | ||
+ | "EmailConfigDto": { | ||
+ | "type": "object", | ||
+ | "properties": { | ||
+ | "smtpHost": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "smtpPort": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "smtpAuth": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "smtpMailUser": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "smtpMailPassword": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "smtpStartTlsEnabled": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "smtpSslTrust": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "smtpSessionDebug": { | ||
+ | "type": "boolean" | ||
+ | }, | ||
+ | "subject": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "content": { | ||
+ | "type": "string" | ||
+ | }, | ||
+ | "html": { | ||
+ | "type": "boolean" | ||
+ | }, | ||
+ | "attachmentBase64": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AttachmentConfigDto" | ||
+ | } | ||
+ | }, | ||
+ | "toEmail": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AddressConfigDto" | ||
+ | } | ||
+ | }, | ||
+ | "ccEmail": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AddressConfigDto" | ||
+ | } | ||
+ | }, | ||
+ | "bccEmail": { | ||
+ | "type": "array", | ||
+ | "items": { | ||
+ | "$ref": "#/components/schemas/AddressConfigDto" | ||
+ | } | ||
+ | } | ||
+ | }, | ||
+ | "description": "Clase Dto que contiene las configuraciones de autenticación y envío del correo electrónico." | ||
+ | }, | ||
+ | "EmailController": { | ||
+ | "type": "object" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== Ejemplo de Consumo ==== | ||
+ | El siguiente es un ejemplo de consumo del nuevo servicio. Los parametros de consumo se describen como se configurarían en un cliente Rest como Postman. | ||
+ | |||
+ | <code yaml> | ||
+ | //Http: POST | ||
+ | //URL: https://factory-ws-utilities17.adacsc.co/AdaEmailService/email/v2/send | ||
+ | //Header: token = Token API utilizado para realiza el envío. Si no se especifica se utiliza uno genérico. | ||
+ | //Parametro en el Body: Ver el json a continuación | ||
+ | |||
+ | { | ||
+ | "from": { | ||
+ | "address": "dirección de correo de origen", | ||
+ | "persona": "Nombre de la cuenta de origen" | ||
+ | }, | ||
+ | "subject": "Asunto del correo", | ||
+ | "content": "Contenido del correo, puede ser un bloque html o texto plano", | ||
+ | "html": true, | ||
+ | "attachmentBase64": [ | ||
+ | { | ||
+ | "fileName": "Nombre del archivo con extensión", | ||
+ | "fileContentStringBase64": "Contenido del archivo en Base64", | ||
+ | "typeContent": "Mime type del archivo Ej: Para un PDF sería application/pdf" | ||
+ | } | ||
+ | ], | ||
+ | "toEmail": [ | ||
+ | { | ||
+ | "address": "Correo de destino", | ||
+ | "persona": "Nombre asociado al correo de destino." | ||
+ | } | ||
+ | ], | ||
+ | "ccEmail": [ | ||
+ | { | ||
+ | "address": "Correo de copia", | ||
+ | "persona": "Nombre asociado al correo de copia." | ||
+ | } | ||
+ | ], | ||
+ | "bccEmail": [ | ||
+ | { | ||
+ | "address": "Correo de copia oculta", | ||
+ | "persona": "Nombre asociado al correo de copoa oculta." | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== Ejemplo de Respuesta exitosa de Consumo ==== | ||
+ | <code yaml> | ||
+ | { | ||
+ | "code": 1, | ||
+ | "message": "Correo electronico enviado correctamente: ID 647a19cc646885576c0b2524", | ||
+ | "content": null | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | ==== Consideraciones ==== | ||
+ | A partir de al fecha el componente está publicado y disponible para envios de correos. Favor tener presente las siguientes consideraciones para el correcto uso del componente. | ||
+ | |||
+ | * Cada aplicación que requiera el uso del envio de correo debe solicitar a TI la generación de un token de autorización con el cual se puede consumir el servicio. De esta forma se puede hacer seguimiento. | ||
+ | * El correo puede hacer envios masivos pero por control el máximo de envio se establece a 100 por correo. | ||
+ | * El API soporta un maximo de 10 correos para copias. | ||
+ | * El API soporta un maximo de 10 correos para copias ocultas. | ||
+ | * Los archivos adjuntos se deben enviar en String Base64 | ||
+ | |||
+ | [[ada:howto:sicoferp:factory:integrations|←Volver atrás]] |