No es posible utilizar el campo con copia (CC) ni el campo con copia oculta (BCC) al enviar correos a través del servicio de Email Transaccional mediante API. 📬 Los correos pueden enviarse únicamente a través del campo TO (destinatario principal), y se permite incluir hasta 20 destinatarios en ese campo.
Nombre del servicio
POST https://api.envialosimple.email/api/v1/mail/send
Método de autenticación
Authorization: Bearer <clave API>
Para más detalle de cómo generar la clave API ver: Cómo enviar emails desde la API
Parámetros
Nombre |
Tipo |
Descripción |
from |
string |
Remitente del email. Requerido excepto si el contenido es una plantilla y tiene cargados estos valores en la cabecera. Este campo puede informarse con varios formatos: info@empresa.com Empresa <info@empresa.com> {"email": "info@empresa.com "} {"email": "info@empresa.com ", "name": "Empresa"} |
to |
string |
Destinatario/s del email. Requerido. El destinatario puede informarse con varios formatos: En el caso de múltiples destinatarios, deberán informase con el mismo formato pero en un array. |
reply_to |
string |
Responder a. Opcional. Si el contenido es una plantilla, y tiene cargados estos valores en la cabecera, se toma ese valor. |
subject |
string |
Asunto del correo. Requerido. |
preview_text |
string |
Texto de la vista previa del email. |
html |
string |
Contenido del email en html. Requerido informar el contenido en html o text o templateID. |
text |
string |
Contenido del email en texto plano. Requerido informar el contenido en html o text o templateID. |
templateID |
string |
Contenido del email desde una plantilla. Debe informarse el ID de la plantilla.
Ver servicio “Listar plantillas” para obtener un detalle de las mismas.
Requerido informar el contenido en html o text o templateID. |
attachments |
object[] |
Archivos adjuntos al email. Opcional.
En el contenido del correo electrónico podrán adjuntarse como archivos normales o dejarlos embebidos en el código usando la sintaxis dentro del código html <img src="cid:id"/>.
|
attachments.*.disposition |
string |
Tipo de adjuntos. Requerido. Valores posibles: inline -> Embebidos en el diseño. Sólo para los contenidos html, no puede usasrse en plantillas. attachment -> Adjuntos al email (comunes) |
Attachments.*.id |
string |
Id del adjunto para incorporarlo embebido dentro del html. Sólo requerido para attachments.disposition = inline. |
attachments.*.filename |
string |
Nombre del archivo adjunto. Requerido. |
attachments.*.disposition |
string |
Tipo de adjuntos. Requerido. Valores posibles: inline -> Embebidos en el diseño attachment -> Adjuntos normales (debajo del email) |
attachments.*.content |
string |
Contenido del adjunto en Base64. Máximo: 15MB. Requerido. |
context |
object[] |
Variables. Opcional. (Recomendada) Pueden incluirse todo tipo de variables: escalares, arreglos, objetos, etc. Ejemplo: "context": { "nombre": "Juan", "productos": [ { "nombre": "Producto1", "precio": 3500 }, { "nombre": "Producto2", "precio": 8500 }] } |
substitutions |
object[] |
Variables. Opcional. Estos valores reemplazarán las variables definidas en el contenido. Se puede utilizar en los campos de asunto, html y texto. La etiqueta tendrá el nombre de la variable y dentro el valor con el cual deberá reemplazarse. Solo pueden incluirse variables escalares. Ejemplo: "substitutions": { "nombre": "Juan", "apellido": "Pérez", "monto": "$8500" }
Observaciones: Se recomienda usar “context” para informar las variables ya que es más completo debido a que acepta todo tipo de variables. Pero también se acepta “substitutions” para mantener la retrocompatibilidad con versiones anteriores de la API en las que solo podían utilizarse variables escalares. |
Ejemplos
curl --location 'https://api.envialosimple.email/api/v1/mail/send' \ --header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYX..jE2NzgzOTA0MjYsImV' \ --header 'Content-Type: application/json' \ --data-raw '{ "from": "notificaciones@empresa.com", "to": "cliente@prueba.com", "subject": "Hola {{nombre}} ya está disponible tu factura", "html": "<html><img src=\"cid:logo\"/> <br> <h4> <b>Hola {{nombre}} {{apellido}}</b> </h4> <p> Adjuntamos tu factura del mes {{mes}} </p> </html>", "substitutions": { "nombre": "Juan", "apellido": "Pérez", "mes": "02/2023" }, "attachments": [ { "id": "logo", "filename": "logo.jpg", "disposition": "inline", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" }, { "disposition": "attachment", "filename": "factura.doc", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" } ] }'<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.envialosimple.email/api/v1/mail/send', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{ "from": "notificaciones@empresa.com", "to": "cliente@prueba.com", "subject": "Hola {{nombre}} ya está disponible tu factura", "html": "<html><img src=\\"cid:logo\\"/> <br> <h4> <b>Hola {{nombre}} {{apellido}}</b> </h4> <p> Adjuntamos tu factura del mes {{mes}} </p> </html>", "substitutions": { "nombre": "Juan", "apellido": "Pérez", "mes": "02/2023" }, "attachments": [ { "id": "logo", "filename": "logo.jpg", "disposition": "inline", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" }, { "disposition": "attachment", "filename": "factura.doc", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" } ] }', CURLOPT_HTTPHEADER => array( 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYX..jE2NzgzOTA0MjYsImV', 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); echo $response;import requests import json url = "https://api.envialosimple.email/api/v1/mail/send" payload = json.dumps({ "from": "notificaciones@empresa.com", "to": "cliente@prueba.com", "subject": "Hola {{nombre}} ya está disponible tu factura", "html": "<html><img src=\"cid:logo\"/> <br> <h4> <b>Hola {{nombre}} {{apellido}}</b> </h4> <p> Adjuntamos tu factura del mes {{mes}} </p> </html>", "substitutions": { "nombre": "Juan", "apellido": "Pérez", "mes": "02/2023" }, "attachments": [ { "id": "logo", "filename": "logo.jpg", "disposition": "inline", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" }, { "disposition": "attachment", "filename": "factura.doc", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" } ] }) headers = { 'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYX..jE2NzgzOTA0MjYsImV', 'Content-Type': 'application/json' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)var axios = require('axios'); var data = JSON.stringify({ "from": "notificaciones@empresa.com", "to": "cliente@prueba.com", "subject": "Hola {{nombre}} ya está disponible tu factura", "html": "<html><img src=\"cid:logo\"/> <br> <h4> <b>Hola {{nombre}} {{apellido}}</b> </h4> <p> Adjuntamos tu factura del mes {{mes}} </p> </html>", "substitutions": { "nombre": "Juan", "apellido": "Pérez", "mes": "02/2023" }, "attachments": [ { "id": "logo", "filename": "logo.jpg", "disposition": "inline", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" }, { "disposition": "attachment", "filename": "factura.doc", "content": "UEsDBBQABgAIAAAAIQDfpNJsWgEAACAFAAATAAgCW0Nvb…" } ] }); var config = { method: 'post', maxBodyLength: Infinity, url: 'https://api.envialosimple.email/api/v1/mail/send', headers: { 'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYX..jE2NzgzOTA0MjYsImV', 'Content-Type': 'application/json' }, data : data }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); });ode
Errores
| Error | Descripción |
| json_invalid | El JSON enviado en el body es inválido. |
| domain_invalid | Remitente incorrecto. El dominio no es el autorizado. |
| from_required | Es requerido informar el remitente del email (from). |
| from_invalid | El campo “from” tiene un valor de email inválido. |
| from_email_invalid | Es requerido informar el remitente del email: (from.email) |
| from_email_required | El campo “from.email” tiene un valor de email inválido. |
| to_required | Es requerido indicar el destinatario del email (to). |
| to_invalid | El campo “to” tiene un valor de email inválido. |
| to_array_invalid | El campo “to” es un array inválido. |
| to_email_required | Es requerido indicar el destinatario del email (to.email). |
| to_email_invalid | El campo “to.email” tiene un valor de email inválido. |
| reply_to_is_email | El campo “reply_to” tiene un valor de email inválido. |
| subject_required | Es requerido indicar el asunto del email (subject). |
| preview_text_too_large | El campo "preview_text" supera la cantidad máxima de caracteres permitidos (150). |
| text_html_templateID_required | Es requerido indicar el contenido del email: html y/o text o plantilla. |
| html_invalid |
El campo “html” contiene comentarios sin cerrar {# ... #} |
| text_too_large | El campo "text" supera la cantidad máxima de caracteres permitidos (1M). |
| html_too_large | El campo "html" supera la cantidad máxima de caracteres permitidos (2M). |
| attachments_is_array | Los adjuntos deben informarse en un array. |
| attachments_item_is_object | Cada ítem del array de adjuntos debe ser un objeto. |
| attachments_item_disposition_required | Es requerido indicar el tipo de adjunto (disposition). |
| attachments_item_disposition_invalid | El campo “disposition” del adjunto es inválido. Ver los posibles valores. |
| attachments_item_content_required | Es requerido indicar el contenido (content) para el adjunto. |
| attachments_item_content_too_large | El campo "content" supera la cantidad máxima de caracteres permitidos (15M) para el adjunto. |
| attachments_item_filename_required | Es requerido indicar el nombre del archivo (filename) para el adjunto. |
| attachments_item_content_invalid | El campo "content" no contiene un string base64 válido. |
| attachments_item_id_required | Es requerido indicar el id (id) del adjunto cuando disposition es “inline”. |
| substitutions_is_object | El campo “substitutions” debe ser un objeto. |
| substitutions_item_key_too_large | El nombre de la variable supera el límite establecido de N caracteres (64). |
| substitutions_item_value_too_large | El valor de la variable supera el límite establecido de N caracteres (1024). |
| templateID_exclusive | Sólo debe indicarse un único tipo de contenido: html y/o text o plantilla. |
| template_not_found | No se encontró la plantilla indicada. |
| context_exists_substitutions | Sólo debe indicarse uno de los campos: 'substitutions' o 'context'. |
| context_is_object | El campo context debe ser un objeto. |
| context_too_depth | El objecto context admite hasta 10 niveles anidados. |
| to_array_too_large | Como máximo pueden enviarse a 10 destinatarios. |
| domain_not_allowed | El dominio no está permitido. |
| domain_blocked | El dominio está bloqueado. |
| domain_send_disabled | El dominio tiene los envíos detenidos. |
| account_hourly_limit_reached | Se alcanzó el límite de envíos por hora. |
| account_insufficient_credits | No hay más créditos disponibles. |
| account_suspended | La cuenta está suspendida. |
Comentarios
0 comentarios
El artículo está cerrado para comentarios.