Ir al contenido principal

EnvíaloSimple Transaccional — API: Enviar emails

L
Escrito por Luciana Parente

Endpoint


Autenticación

Authorization: Bearer <clave API>


No es posible usar los campos CC ni BCC. Los correos solo pueden enviarse a través del campo to, con un máximo de 20 destinatarios.

Parámetros

Nombre

Tipo

Descripción

from

String

Remitente. Requerido (excepto si el contenido es una plantilla con estos valores en la cabecera). Formatos aceptados: [email protected], Empresa <[email protected]>, {"email": "[email protected]"}, {"email": "[email protected]", "name": "Empresa"}

to

String

Destinatario/s. Requerido. Máximo 20 destinatarios. Ver formatos en la sección Ejemplos.

reply_to

String

Responder a. Opcional.

subject

String

Asunto. Requerido.

preview_text

String

Texto de vista previa. Opcional. Máximo 150 caracteres.

html

String

Contenido HTML. Requerido si no se informa text ni templateID.

text

String

Contenido en texto plano. Requerido si no se informa html ni templateID.

templateID

String

ID de plantilla. Requerido si no se informa html ni text. Ver método Listar plantillas.

attachments

Object[]

Archivos adjuntos. Opcional.

attachments.*.disposition

String

Tipo de adjunto. Requerido. inline (embebido en el diseño, solo para HTML) o attachment (adjunto normal).

attachments.*.id

String

ID del adjunto para referenciarlo en el HTML con <img src="cid:id"/>. Requerido solo para disposition=inline.

attachments.*.filename

String

Nombre del archivo. Requerido.

attachments.*.content

String

Contenido del adjunto en Base64. Requerido. Máximo 15 MB.

context

Object[]

Variables para reemplazar en asunto, HTML y texto. Acepta escalares, arreglos y objetos. Recomendado sobre substitutions.

substitutions

Object[]

Variables escalares para reemplazar en asunto, HTML y texto. Mantenido por retrocompatibilidad. No usar junto con context.


Ejemplo cURL

curl --location 'https://api.envialosimple.email/api/v1/mail/send' \
--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYX..jE2NzgzOTA0MjYsImV' \
--header 'Content-Type: application/json' \
--data-raw '{
"from": "[email protected]",
"to": "[email protected]",
"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…"
}
]
}'

Ejemplo php

<?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": "[email protected]",

"to": "[email protected]",

"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;

Ejemplo Python

import requests
import json

url = "https://api.envialosimple.email/api/v1/mail/send"

payload = json.dumps({
"from": "[email protected]",
"to": "[email protected]",
"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)

Ejemplo Nodejs

var axios = require('axios');
var data = JSON.stringify({
"from": "[email protected]",
"to": "[email protected]",
"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

El dominio del remitente no es el autorizado

from_required

El campo from es requerido

from_invalid

El campo from tiene un email inválido

from_email_invalid

El campo from.email tiene un email inválido

from_email_required

El campo from.email es requerido

to_required

El campo to es requerido

to_invalid

El campo to tiene un email inválido

to_array_invalid

El campo to es un array inválido

to_email_required

El campo to.email es requerido

to_email_invalid

El campo to.email tiene un email inválido

to_array_too_large

Máximo 10 destinatarios permitidos

reply_to_is_email

El campo reply_to tiene un email inválido

subject_required

El campo subject es requerido

preview_text_too_large

El campo preview_text supera los 150 caracteres

text_html_templateID_required

Es requerido indicar el contenido: html, text o templateID

html_invalid

El campo html contiene comentarios sin cerrar {# ... #}

text_too_large

El campo text supera 1M de caracteres

html_too_large

El campo html supera 2M de caracteres

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

El campo disposition del adjunto es requerido

attachments_item_disposition_invalid

El campo disposition del adjunto es inválido

attachments_item_content_required

El campo content del adjunto es requerido

attachments_item_content_too_large

El campo content supera 15 MB

attachments_item_filename_required

El campo filename del adjunto es requerido

attachments_item_content_invalid

El campo content no contiene un string Base64 válido

attachments_item_id_required

El campo id es requerido 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 64 caracteres

substitutions_item_value_too_large

El valor de la variable supera 1024 caracteres

templateID_exclusive

Solo puede indicarse un tipo de contenido: html/text o templateID

template_not_found

No se encontró la plantilla indicada

context_exists_substitutions

Solo puede usarse substitutions o context, no ambos

context_is_object

El campo context debe ser un objeto

context_too_depth

El objeto context admite hasta 10 niveles anidados

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 créditos disponibles

account_suspended

La cuenta está suspendida

¿Ha quedado contestada tu pregunta?