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
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
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
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
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);
});odeErrores
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 |
