Contamos con 5 servicios:
Enviar mails
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 del email. Requerido. Este campo puede informarse con varios formatos:
cliente@prueba.com
Cliente <cliente@prueba.com>{"email":"cliente@prueba.com"}
{"email":"cliente@prueba.com", "name": "Cliente"}
|
subject
|
string
|
Asunto del correo. Requerido.
|
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
|
Missing key 'from'
|
Es requerido indicar el remitente del email (from).
|
Missing key 'to'
|
Es requerido indicar el destinatario del email (to).
|
Missing key 'subject'
|
Es requerido indicar el asunto del email (subject).
|
A key 'text' or 'html' or 'templateID' must be provided.
|
Es requerido indicar el contenido del email: html y/o text o plantilla.
|
Key 'text' too large.
|
El campo "text" supera la cantidad máxima de caracteres permitidos (1M).
|
Key 'html' too large.
|
El campo "html" supera la cantidad máxima de caracteres permitidos (2M).
|
Missing key 'disposition' in attachment N.
|
Es requerido indicar el tipo de adjunto (disposition) para el adjunto N.
|
Missing key 'content' in attachment N.
|
Es requerido indicar el contenido (content) para el adjunto N.
|
Key 'content' too large in attachment N.
|
El campo "content" supera la cantidad máxima de caracteres permitidos (15M) para el adjunto N.
|
Missing key 'filename' in attachment N.
|
Es requerido indicar el contenido (filename) para el adjunto N.
|
Key 'content' is not a valid base64 encoded string in attachment N.
|
El campo "content" no contiene un string base64 válido para el adjunto N.
|
A key 'id' must be provided when content disposition is 'inline' in attachment N.
|
Es requerido indicar el identificador (id) para el adjunto N.
|
Substitution for email <target-email> contains a key name that exceeds the N chars limit.
|
El nombre de la variable supera el límite establecido de N caracteres (64).
|
Substitution for email <target-email> contains a value that exceeds the N chars limit at key '<key-name>'.
|
El valor de la variable supera el límite establecido de N caracterers (1024).
|
A key 'html' or 'templateID' only.
|
Sólo debe indicarse un único tipo de contenido: html y/o text o plantilla.
|
Keys 'substitutions' and 'context' are mutually exclusive. |
Sólo debe indicarse uno de los campos: 'substitutions' o 'context'.
|
Listar plantillas
Nombre del servicio
GET https://api.envialosimple.email/api/v1/templates
Método de autenticación
Authorization: Bearer <clave API>
Para más detalle sobre cómo generar clave API ver: Cómo enviar mails desde la API
Descripción
Devuelve una lista con todas las plantillas disponibles.
Parámetros
Nombre | Tipo | Descripción |
page | Integer | Número de página. Por defecto: 1. |
limit | Integer | Cantidad de registros por página. Por defecto: 10. Máximo: 100. |
sort | string | Ordenar por. Valores posibles: name/created_date/lastsend_date. Por defecto: created_date |
direction | string | Tipo de ordenamiento. Valores posibles: asc/desc. Por defecto: desc. |
filters | string | Expresión para filtrar los registros. Ver detalle de la Generación de expresiones (*). |
Generación de expresiones (*).
La sintaxis es similar a la utilizada por MongoDB, con la diferencia que solo algunas de las operaciones están soportadas.
-
Filtro por un valor exacto:
Para buscar por coincidencia de un valor exacto deberá utilizarse la siguiente sintaxis: {"nombre del campo": "valor del campo"}.
Ejemplo: {"name": "Plantilla confirmación"}. Esta búsqueda traerá todas las plantillas cuyo campo nombre sea exactamente igual a Plantilla confirmación. -
Filtro con operador:
Para buscar utilizando un operador deberá utilizarse la siguiente sintaxis: {"nombre del campo": {“operador": "valor del campo"}}
Ejemplo: {"name": {"$neq": "Plantilla confirmación"}}. Esta búsqueda traerá todas las plantillas cuyo nombre sea distinto a Plantilla confirmación.
Los operadores de comparación soportados son:
Operador Descripción $eq Igual $neq Distinto $gt Mayor $gte: Mayor o Igual $lt Menor $lte: Menor o Igual $in: Es igual a alguno los valores indicados $nin: No es igual a ninguno los valores indicados $regex: Expresión Regular -
Filtro usando casting de variable
Para buscar haciendo casting de una variable fecha deberá utilizarse el operador $ts: Timestamp el cual convierte el valor de fecha en timestamp para luego poder utilizar los operadores disponibles.Ejemplo: {"created_date ": {"$gt": {"$ts":1704974124}}}. Esta búsqueda traerá todas las plantillas con fecha de creación mayor a la fecha indicada en el timestamp
-
Filtro usando expresiones combinadas
Para buscar combinando varias expresiones deberá utilizarse la siguiente sintaxis: {"operador lógico": [expresión1, expresión 2]}.Ejemplo: {"$or": [{"lastsend_date": {"$eq": null}}, {"name": "Plantilla"}]}. Esta búsqueda traerá todas las plantillas que tengan fecha de último envío null más las que tengan nombre = Plantilla.
Los operadores lógicos soportados son:Operador Descripción $and: Operador lógico AND $or: Operador lógico OR $nor: Operador lógico OR negado
Respuesta
Campo | Descripción |
id | ID de plantilla. |
created_date | Fecha de creación. Zona horaria UTC+00:00. |
updated_date | Fecha de modificación. Zona horaria UTC+00:00. |
preview | URL de la vista previa. |
name | Nombre de la plantilla. |
tags |
Etiquetas de la plantilla. Valores posibles: authentication ➔ Autenticación confirmation ➔ Confirmación feedback ➔ Feedback notification ➔ Notificación others ➔ Otros register ➔ Registro |
lastsend_date | Fecha de último envío. Zona horaria UTC+00:00. |
Ejemplos de respuesta
{
"page": 1,
"limit": 2,
"payload": [
{
"id": "650d935447bfb73c8d03cd88",
"created_date": "2023-09-22T13:15:00+00:00",
"updated_date": "2024-01-09T18:24:59+00:00",
"name": "prueba1",
"preview":"/files/Templates/6452a270807877b0d506e2a5/
template_650d935447bfb73c8d03cd88.png",
"tags": [
"others"
],
"lastsend_date": null
},
{
"id": "64c40fec87819d9a480428c2",
"created_date": "2023-07-28T18:58:52+00:00",
"updated_date": "2023-07-28T19:44:59+00:00",
"name": "prueba2",
"preview":"/files/Templates/6452a270807877b0d326e2a5/
template_64c40fec87819d9a480428c2.png",
"tags": [],
"lastsend_date": "2023-07-28T19:44:59+00:00"
}
],
"total": 21
}
Datos generales del dominio
Nombre del servicio
GET https://api.envialosimple.email/api/v1/domains
Método de autenticación
Authorization: Bearer <clave API>
Para más detalle sobre cómo generar clave API ver: Cómo enviar mails desde la API
Descripción
Devuelve los datos generales del dominio.
Respuesta
Campo | Descripción |
id | ID de dominio. |
name | Nombre del dominio. |
created_date | Fecha de creación. Zona horaria UTC+00:00. |
deleted_date | Fecha de eliminación. Zona horaria UTC+00:00. |
counters.mail_processed | Emails procesados. |
health |
Reputación. Valores posibles: unknown > No disponible blocked > Mala warning > Regular good > Excelente |
status |
Estado. Valores posibles: verified > Verificado not_verified > No verificado paused > Pausado deleted > Eliminado |
Ejemplo de respuesta
{
"page": 1,
"limit": 10,
"payload": [
{
"id": "8952a87b807877b0d199e2a8",
"name": "tudominio.com",
"created_date": "2024-03-15T18:08:59+00:00",
"deleted_date": null,
"counters": {
"mail_processed": 132
},
"health": "good",
"status": "verified"
}
],
"total": 1
}
Detalle del dominio
Nombre del servicio
GET https://api.envialosimple.email/api/v1/domains/:domainID
Método de autenticación
Authorization: Bearer <clave API>
Para más detalle sobre cómo generar clave API ver: Cómo enviar mails desde la API
Descripción
Devuelve todo el detalle del dominio
Parámetros
Nombre | Tipo | Descripción |
domainID | String | Id del dominio. Requerido. |
Respuesta
Campo | Descripción |
id | ID de dominio. |
name | Nombre del dominio. |
created_date | Fecha de creación. Zona horaria UTC+00:00. |
deleted_date | Fecha de eliminación. Zona horaria UTC+00:00. |
track_clicks | Seguimiento de aperturas activado |
track_reads | Seguimiento de clics activado |
smtp_username | SMTP Username |
smtp_decrypted_password | SMTP Password |
smtp_host |
Host Método de identificación = Contraseña normal |
smtp_port | Puerto STARTTLS |
smtps_port | Puerto SSL |
counters.bounce_hard | Rebotes duros |
counters.bounce_soft | Rebotes blandos |
counters.mail_processed | Envíos procesados |
counters.mail_delivered | Envíos entregados |
counters.mail_rejected | Envíos rechazados |
counters.track_reads | Aperturas |
counters.track_clicks | Clics |
counters.track_complaints | Quejas |
bounce_rate | Tasa de rebotes |
complaint_rate | Tasa de quejas |
health |
Reputación. Valores posibles: unknown > No disponible blocked > Mala warning > Regular good > Excelente |
status |
Estado. Valores posibles: verified > Verificado not_verified > No verificado paused > Pausado deleted > Eliminado |
extra_data.exclusions. hard | Exclusiones por rebotes duros |
extra_data.exclusions. manual | Exclusiones por queja |
extra_data.exclusions. complaints | Exclusiones creadas manualmente |
Ejemplo de respuesta:
{
"id": "8952a87b807877b0d199e2a8",
"name": "tudominio.com",
"created_date": "2024-03-15T18:08:59+00:00",
"deleted_date": null,
"track_clicks": true,
"track_reads": true,
"smtp_username": "H9mrb8yFdOmxFthE79110cas@tudominio.com",
"smtp_decrypted_password": "X4VnhpkAfnEkJmt9yL6nzFcVUkcbkj9M",
"smtp_host": "smtp.envialosimple.email",
"smtp_port": "587",
"smtps_port": "465",
"counters": {
"bounce_hard": 8,
"bounce_soft": 16,
"mail_processed": 1230,
"mail_delivered": 1206,
"mail_rejected": 24,
"track_reads": 217,
"track_clicks": 44,
"track_complaints": 2
},
"bounce_rate": 0.005,
"complaint_rate": 0.002,
"health": "good",
"status": "verified"
"extra_data": {
"exclusions": {
"hard": 7,
"manual": 5,
"complaint": 2
}
}
}
Listar webhooks
Nombre del servicio
GET https://api.envialosimple.email/api/v1/webhooks
Método de autenticación
Authorization: Bearer <clave API>
Para más detalle sobre cómo generar clave API ver: Cómo enviar mails desde la API
Descripción
Devuelve la lista de los webhooks asociados al dominio.
Parámetros
Nombre | Tipo | Descripción |
page | Integer | Número de página. Por defecto: 1. |
limit | Integer | Cantidad de registros por página. Por defecto: 10. Máximo: 100. |
sort | string | Ordenar por. Valores posibles: name/created_date. Por defecto: created_date. |
direction | string | Tipo de ordenamiento. Valores posibles: asc/desc. Por defecto: desc. |
filters | string | Expresión para filtrar los registros. Ver detalle de la Generación de expresiones (*). |
Respuesta
Campo | Descripción |
id | ID del webhook. |
name | Nombre del webhook. |
url | Dirección para enviar tus notificaciones |
events |
Eventos para recibir notificaciones. Valores: processed > Procesado sent > Entregado read > Abierto rejected_soft > Rebote blando rejected_hard > Rebote duro failed > Falla de envío click > Cliqueado excluded > Excluido complaint > Queja |
security_method | Método de seguridad utilizado. |
created_date | Fecha de creación. Zona horaria UTC+00:00. |
Ejemplo de respuesta
{
"page": 1,
"limit": 10,
"payload": [
{
"id": "65f8793c0bb9be645f0d3192",
"name": "Procesados y enviados",
"url": "https://ejemplo.com",
"events": [
"processed",
"sent"
],
"security_method": "signing_key",
"created_date": "2024-03-18T17:26:20+00:00"
},
{
"id": "64d22e871f411dd843018875",
"name": "Rechazados",
"url": "https://ejemplo.com",
"events": [
"rejected_soft",
"rejected_hard"
],
"security_method": "signing_key",
"created_date": "2023-08-08T12:01:11+00:00"
},
{
"id": "64cd4a73e09db4c0ae00a017",
"name": "Queja",
"url": "https://ejemplo.com",
"events": [
"complaint"
],
"security_method": "signing_key",
"created_date": "2023-08-04T18:58:59+00:00"
}
],
"total": 3
Comentarios
0 comentarios
El artículo está cerrado para comentarios.