Enviar mails

Soporte Donweb
Soporte Donweb
  • Actualización

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.
Puede informarse uno o más destinatarios. Máximo 10 destinatarios.

El destinatario puede informarse con varios formatos:
- "juan@prueba.com"
- "Juan R. < juan@prueba.com >"
- {"email":"juan@prueba.com", "name": "Juan R."}
- {"email": "Juan R. <juan@prueba.com>"}

En el caso de múltiples destinatarios, deberán informase con el mismo formato pero en un array.
[
{"email": "Juan Manuel <juan@prueba.com>"},
{"email": "maria@prueba.com",
"name": "María R."},
{ "email": "pedro@prueba.com"}
]

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

¿Fue útil este artículo?

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

¿Tiene más preguntas? Enviar una solicitud

Comentarios

0 comentarios

El artículo está cerrado para comentarios.