Implementación API transaccionales

Soporte Donweb
Soporte Donweb
  • Actualización

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)
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.

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

¿Fue útil este artículo?

Usuarios a los que les pareció útil: 1 de 1

¿Tiene más preguntas? Enviar una solicitud

Comentarios

0 comentarios

El artículo está cerrado para comentarios.