Uso de plantillas para el envío de correo electrónico personalizado con la API de Amazon SES - Amazon Simple Email Service

Uso de plantillas para el envío de correo electrónico personalizado con la API de Amazon SES

En Amazon SES, puede enviar correos electrónicos con plantillas mediante una plantilla almacenada o una plantilla en línea.

  • Plantilla almacenada: hace referencia al recurso Template que se crea y guarda en SES mediante la operación CreateEmailTemplate de la API v2 de Amazon SES. La plantilla contiene el asunto y el cuerpo del correo electrónico y contiene variables (marcadores de posición) en línea con el contenido escrito. El nombre de la plantilla almacenada y los datos dinámicos de las variables de marcador de posición de la plantilla se proporcionan al llamar a las operaciones de la API v2 SendEmail o SendBulkEmail.

    Plantillas almacenadas: se pueden reutilizar fácilmente y pueden ahorrarle tiempo y esfuerzo al enviar tipos de correos electrónicos similares. En lugar de crear cada correo electrónico desde cero, solo necesita crear la estructura base y el diseño una vez y, a continuación, actualizar simplemente el contenido dinámico de la plantilla.

  • Plantilla en línea: no se utiliza el recurso Template, sino que se proporcionan el asunto y el cuerpo del correo electrónico que contiene variables (marcadores de posición) en línea con el contenido escrito, junto con los valores de esas variables de marcador de posición, al llamar a las operaciones de la API v2 SendEmail o SendBulkEmail.

    Las plantillas integradas simplifican el proceso de envío masivo de correos electrónicos al eliminar la necesidad de administrar los recursos de plantillas en su cuenta de SES y simplifican el proceso de integración al permitirle incluir el contenido de la plantilla directamente en la lógica de la aplicación. No se tienen en cuenta en el límite de 20 000 plantillas por Región de AWS.

Se aplican los siguientes límites cuando se utilizan plantillas almacenadas:

  • Puede crear hasta 20 000 plantillas de correo electrónico por cada Región de AWS.

  • Cada plantilla puede tener un tamaño de hasta 500 KB, incluidos el texto y las partes en HTML.

Se aplican los siguientes límites cuando se utilizan plantillas en línea:

  • Cada archivo JSON de entrada puede tener hasta 1 MB de tamaño, incluido el texto y las partes HTML.

Lo siguiente se aplica a las plantillas almacenadas y en línea:

  • No hay límites en cuanto al número de variables de reemplazo que se pueden utilizar.

  • Puede enviar correo electrónico a un máximo de 50 objetos de destino en cada llamada a la operación SendBulkEmail. El objeto Destination puede contener varios destinatarios definidos en ToAddresses, CcAddresses y BccAddresses. El número de destinos con los que puede ponerse en contacto en una única llamada a la API v2 podría estar limitado por la tasa de envío máxima de su cuenta. Para obtener más información, consulte Administración de sus límites de envío de Amazon SES.

En este capítulo se incluyen procedimientos con ejemplos para usar plantillas almacenadas y plantillas en línea.

nota

En los procedimientos que se describen en esta sección, se da por hecho que ya se ha instalado y configurado la AWS CLI. Para obtener más información sobre cómo instalar y configurar la AWS CLI, consulte la Guía del usuario de la AWS Command Line Interface.

(Opcional) Parte 1: configuración de notificaciones de eventos de errores de renderizado

Si envía un correo electrónico que contiene contenido de personalización no válido, Amazon SES puede aceptar inicialmente el mensaje, pero puede no ser capaz de enviarlo. Por este motivo, si tiene previsto enviar correo electrónico personalizado, debe configurar SES para enviar notificaciones de eventos de errores de presentación a través de Amazon SNS. Cuando reciba una notificación de evento de error de presentación, puede identificar qué mensaje incluía el contenido no válido, solucionar los problemas y enviar el mensaje de nuevo.

Es absolutamente recomendable que realice el procedimiento de esta sección, aunque sea opcional.

Para configurar notificaciones de eventos de errores de presentación
  1. Crear un tema de Amazon SNS Para obtener información acerca de los procedimientos, consulte Creación de un tema en la Guía para desarrolladores de Amazon Simple Notification Service.

  2. Suscríbase al tema de Amazon SNS. Por ejemplo, si desea recibir notificaciones de errores de presentación por correo electrónico, suscriba un punto de enlace de correo electrónico (es decir, su dirección de correo electrónico) al tema.

    Para obtener información acerca de los procedimientos, consulte Suscribirse a un tema en la Guía para desarrolladores de Amazon Simple Notification Service.

  3. Realice los procedimientos de Configuración de un destino de eventos de Amazon SNS para la publicación de eventos para configurar los conjuntos de configuración con el objetivo de publicar eventos de errores de presentación en su tema de Amazon SNS.

(Opcional) Parte 2: creación de una plantilla de correo electrónico

Si piensa utilizar una plantilla almacenada, en esta sección se mostrará cómo utilizar la operación de la API v2 de SES CreateEmailTemplate para crear la plantilla. Puede omitir este paso si desea utilizar si desea utilizar una plantilla en línea.

En este procedimiento se presupone que ya ha instalado y configurado la AWS CLI. Para obtener más información sobre cómo instalar y configurar la AWS CLI, consulte la Guía del usuario de la AWS Command Line Interface.

Para crear la plantilla
  1. En un editor de texto, cree un nuevo archivo y pegue el siguiente código para personalizarlo según sus necesidades.

    { "TemplateName": "MyTemplate", "TemplateContent": { "Subject": "Greetings, {{name}}!", "Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.", "Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>" } }

    Este código contiene las siguientes propiedades:

    • TemplateName: nombre del recurso de Template. Cuando envíe el correo electrónico, consulte este nombre.

    • TemplateContent: contenedor para los siguientes atributos:

      • Asunto: el asunto del mensaje de correo electrónico. Esta propiedad podría contener etiquetas de sustitución. Estas etiquetas utilizan el siguiente formato: {{tagname}}. Cuando envíe el correo electrónico, puede especificar un valor para tagname para cada destino.

      • Html: cuerpo HTML del correo electrónico. Esta propiedad podría contener etiquetas de sustitución. El ejemplo anterior incluye dos etiquetas: {{name}} y {{favoriteanimal}}.

      • Text: cuerpo de texto del correo electrónico. Los destinatarios cuyos clientes de correo electrónico no muestran el correo electrónico en HTML ven este contenido del correo electrónico. Esta propiedad podría contener etiquetas de sustitución.

  2. Personalice el ejemplo anterior de acuerdo con sus necesidades y, a continuación, guarde el archivo como mytemplate.json.

  3. En la línea de comandos, escriba el siguiente comando para crear una nueva plantilla utilizando la operación CreateEmailTemplate de la API v2:

    aws sesv2 create-email-template --cli-input-json file://mytemplate.json

Parte 3: Enviar el correo electrónico personalizado

Puede usar las dos operaciones siguientes de la API v2 de SES para enviar correos electrónicos mediante plantillas almacenadas o plantillas en línea:

  • La operación SendEmail es útil para enviar un correo electrónico personalizado a un único objeto de destino. El objeto Destination de la API v2 puede contener las propiedades ToAddresses, CcAddresses y BccAddresses. Se pueden usar en cualquier combinación y pueden contener una o más direcciones de correo electrónico que recibirán el mismo correo electrónico.

  • La operación SendBulkEmail resulta útil para enviar correos electrónicos únicos a varios objetos de destino en una única llamada a la API v2.

Esta sección proporciona ejemplos de cómo utilizar el AWS CLI para enviar correo electrónico de plantilla a través de estas operaciones de envío.

Envío de correo electrónico de plantilla a un único objeto de destino

Puede utilizar la operación SendEmail para enviar un correo electrónico a uno o varios destinatarios definidos en un único objeto de destino. Todos los destinatarios del objeto Destination recibirán el mismo correo electrónico.

Cómo enviar un correo electrónico de plantilla a un objeto de destino único
  1. Dependiendo de si desea utilizar una plantilla almacenada o una plantilla en línea, seleccione el ejemplo de código correspondiente para pegarlo en un editor de texto y personalícelo según sus necesidades.

    Stored template code example

    Observe que se hace referencia a la plantilla que ha creado en el paso anterior, MyTemplate, como valor del parámetro TemplateName.

    { "FromEmailAddress": "Mary Major <mary.major@example.com>", "Destination": { "ToAddresses": [ "alejandro.rosalez@example.com", "jimmy.jet@example.com" ] }, "Content": { "Template": { "TemplateName": "MyTemplate", "TemplateData": "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }" } }, "ConfigurationSetName": "ConfigSet" }

    Este código contiene las siguientes propiedades:

    • FromEmailAddress: dirección de correo electrónico del remitente.

    • Destination: objeto que contiene los destinatarios de correo electrónico definidos en las propiedades ToAddresses, CcAddresses y BccAddresses. Se pueden usar en cualquier combinación y pueden contener una o más direcciones de correo electrónico que recibirán el mismo correo electrónico.

    • TemplateName: nombre del recurso Template que se debe aplicar al correo electrónico.

    • TemplateData: cadena JSON que contiene pares de clave-valor. Las claves corresponden a las variables definidas en las propiedades TemplateContent de la plantilla almacenada, por ejemplo, {{name}}. Los valores representan el contenido que sustituye a las variables.

    • ConfigurationSetName: el nombre del conjunto de configuración que se va a usar al enviar el correo electrónico.

      nota

      Le recomendamos que utilice un conjunto de configuración que esté configurado para publicar eventos de errores de presentación en Amazon SNS. Para obtener más información, consulte (Opcional) Parte 1: configuración de notificaciones de eventos de errores de renderizado.

    Inline template code example

    Observe que las propiedades TemplateContent (que normalmente se definirían en una plantilla almacenada) se definen en línea junto con la propiedad TemplateData, lo que la convierte en una plantilla en línea.

    { "FromEmailAddress": "Mary Major <mary.major@example.com>", "Destination": { "ToAddresses": [ "alejandro.rosalez@example.com", "jimmy.jet@example.com" ] }, "Content": { "Template": { "TemplateContent": { "Subject": "Greetings, {{name}}!", "Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.", "Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>" }, "TemplateData": "{ \"name\":\"Alejandro\", \"favoriteanimal\": \"alligator\" }" } }, "ConfigurationSetName": "ConfigSet" }

    Este código contiene las siguientes propiedades:

    • FromEmailAddress: dirección de correo electrónico del remitente.

    • Destination: objeto que contiene los destinatarios de correo electrónico definidos en las propiedades ToAddresses, CcAddresses y BccAddresses. Se pueden usar en cualquier combinación y pueden contener una o más direcciones de correo electrónico que recibirán el mismo correo electrónico.

    • TemplateContent: contenedor para los siguientes atributos:

      • Asunto: el asunto del mensaje de correo electrónico. Esta propiedad podría contener etiquetas de sustitución. Estas etiquetas utilizan el siguiente formato: {{tagname}}. Cuando envíe el correo electrónico, puede especificar un valor para tagname para cada destino.

      • Html: cuerpo HTML del correo electrónico. Esta propiedad podría contener etiquetas de sustitución. El ejemplo anterior incluye dos etiquetas: {{name}} y {{favoriteanimal}}.

      • Text: cuerpo de texto del correo electrónico. Los destinatarios cuyos clientes de correo electrónico no muestran el correo electrónico en HTML ven este contenido del correo electrónico. Esta propiedad podría contener etiquetas de sustitución.

    • TemplateData: cadena JSON que contiene pares de clave-valor. Las claves corresponden a las variables definidas en las propiedades TemplateContent de este archivo, por ejemplo, {{name}}. Los valores representan el contenido que sustituye a las variables.

    • ConfigurationSetName: el nombre del conjunto de configuración que se va a usar al enviar el correo electrónico.

      nota

      Le recomendamos que utilice un conjunto de configuración que esté configurado para publicar eventos de errores de presentación en Amazon SNS. Para obtener más información, consulte (Opcional) Parte 1: configuración de notificaciones de eventos de errores de renderizado.

  2. Personalice el ejemplo anterior para adaptarse a sus necesidades y, a continuación, guarde el archivo como myemail.json.

  3. En la línea de comandos, escriba el siguiente comando de la API v2 para enviar el correo electrónico:

    aws sesv2 send-email --cli-input-json file://myemail.json

Envío de correo electrónico con plantilla a varios objetos de destino

Puede utilizar la operación SendBulkEmail para enviar un correo electrónico a varios destinos en una llamada única al API v2 de SES. SES envía un correo electrónico único al destinatario o destinatarios en cada objeto de Destination.

Cómo enviar un correo electrónico de plantilla a varios objetos de destino
  1. Dependiendo de si desea utilizar una plantilla almacenada o una plantilla en línea, seleccione el ejemplo de código correspondiente para pegarlo en un editor de texto y personalícelo según sus necesidades.

    Stored template code example

    Observe que se hace referencia a la plantilla que ha creado en el paso anterior, MyTemplate, como valor del parámetro TemplateName.

    { "FromEmailAddress": "Mary Major <mary.major@example.com>", "DefaultContent": { "Template": { "TemplateName": "MyTemplate", "TemplateData": "{ \"name\":\"friend\", \"favoriteanimal\":\"unknown\" }" } }, "BulkEmailEntries": [ { "Destination": { "ToAddresses": [ "anaya.iyengar@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{ \"name\":\"Anaya\", \"favoriteanimal\":\"angelfish\" }" } } }, { "Destination": { "ToAddresses": [ "liu.jie@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{ \"name\":\"Liu\", \"favoriteanimal\":\"lion\" }" } } }, { "Destination": { "ToAddresses": [ "shirley.rodriguez@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{ \"name\":\"Shirley\", \"favoriteanimal\":\"shark\" }" } } }, { "Destination": { "ToAddresses": [ "richard.roe@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{}" } } } ], "ConfigurationSetName": "ConfigSet" }

    Este código contiene las siguientes propiedades:

    • FromEmailAddress: dirección de correo electrónico del remitente.

    • DefaultContent: objeto JSON que contiene los objetos TemplateName y TemplateData.

    • TemplateName: nombre del recurso Template que se debe aplicar al correo electrónico.

    • TemplateData: contiene pares clave-valor que se utilizarán si el objeto ReplacementEmailContent contiene un objeto {} JSON vacío, en la propiedad ReplacementTemplateData.

    • BulkMailEntries: matriz que contiene uno o más objetos Destination.

    • Destination: objeto que contiene los destinatarios de correo electrónico definidos en las propiedades ToAddresses, CcAddresses y BccAddresses. Se pueden usar en cualquier combinación y pueden contener una o más direcciones de correo electrónico que recibirán el mismo correo electrónico.

    • ReplacementTemplateData: cadena JSON con caracteres de escape que contiene pares de clave-valor. Las claves corresponden a las variables de la plantilla, por ejemplo, {{name}}. Los valores representan el contenido que sustituye las variables en el correo electrónico. (Si la cadena JSON aquí está vacía, lo que se indica mediante {}, se utilizarán los pares clave-valor definidos en la propiedad TemplateData dentro del objeto DefaultContent).

    • ConfigurationSetName: el nombre del conjunto de configuración que se va a usar al enviar el correo electrónico.

      nota

      Le recomendamos que utilice un conjunto de configuración que esté configurado para publicar eventos de errores de presentación en Amazon SNS. Para obtener más información, consulte (Opcional) Parte 1: configuración de notificaciones de eventos de errores de renderizado.

    Inline template code example

    Observe que las propiedades TemplateContent (que normalmente se definirían en una plantilla almacenada) se definen en línea junto con la propiedad TemplateData, lo que la convierte en una plantilla en línea.

    { "FromEmailAddress": "Mary Major <mary.major@example.com>", "DefaultContent": { "Template": { "TemplateContent": { "Subject": "Greetings, {{name}}!", "Text": "Dear {{name}},\r\nYour favorite animal is {{favoriteanimal}}.", "Html": "<h1>Hello {{name}},</h1><p>Your favorite animal is {{favoriteanimal}}.</p>" }, "TemplateData": "{ \"name\":\"friend\", \"favoriteanimal\":\"unknown\" }" } }, "BulkEmailEntries": [ { "Destination": { "ToAddresses": [ "anaya.iyengar@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{ \"name\":\"Anaya\", \"favoriteanimal\":\"angelfish\" }" } } }, { "Destination": { "ToAddresses": [ "liu.jie@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{ \"name\":\"Liu\", \"favoriteanimal\":\"lion\" }" } } }, { "Destination": { "ToAddresses": [ "shirley.rodriguez@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{ \"name\":\"Shirley\", \"favoriteanimal\":\"shark\" }" } } }, { "Destination": { "ToAddresses": [ "richard.roe@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{}" } } } ], "ConfigurationSetName": "ConfigSet" }

    Este código contiene las siguientes propiedades:

    • FromEmailAddress: dirección de correo electrónico del remitente.

    • DefaultContent: objeto JSON que contiene los objetos TemplateContent y TemplateData.

    • TemplateContent: contenedor para los siguientes atributos:

      • Asunto: el asunto del mensaje de correo electrónico. Esta propiedad podría contener etiquetas de sustitución. Estas etiquetas utilizan el siguiente formato: {{tagname}}. Cuando envíe el correo electrónico, puede especificar un valor para tagname para cada destino.

      • Html: cuerpo HTML del correo electrónico. Esta propiedad podría contener etiquetas de sustitución. El ejemplo anterior incluye dos etiquetas: {{name}} y {{favoriteanimal}}.

      • Text: cuerpo de texto del correo electrónico. Los destinatarios cuyos clientes de correo electrónico no muestran el correo electrónico en HTML ven este contenido del correo electrónico. Esta propiedad podría contener etiquetas de sustitución.

    • TemplateData: contiene pares clave-valor que se utilizarán si el objeto ReplacementEmailContent contiene un objeto {} JSON vacío, en la propiedad ReplacementTemplateData.

    • BulkMailEntries: matriz que contiene uno o más objetos Destination.

    • Destination: objeto que contiene los destinatarios de correo electrónico definidos en las propiedades ToAddresses, CcAddresses y BccAddresses. Se pueden usar en cualquier combinación y pueden contener una o más direcciones de correo electrónico que recibirán el mismo correo electrónico.

    • ReplacementTemplateData: cadena JSON con caracteres de escape que contiene pares de clave-valor. Las claves corresponden a las variables definidas en las propiedades TemplateContent de este archivo, por ejemplo, {{name}}. Los valores representan el contenido que sustituye las variables en el correo electrónico. (Si la cadena JSON aquí está vacía, lo que se indica mediante {}, se utilizarán los pares clave-valor definidos en la propiedad TemplateData dentro del objeto DefaultContent).

    • ConfigurationSetName: el nombre del conjunto de configuración que se va a usar al enviar el correo electrónico.

      nota

      Le recomendamos que utilice un conjunto de configuración que esté configurado para publicar eventos de errores de presentación en Amazon SNS. Para obtener más información, consulte (Opcional) Parte 1: configuración de notificaciones de eventos de errores de renderizado.

  2. Cambie los valores del código del paso anterior según sus necesidades y, a continuación, guarde el archivo como mybulkemail.json.

  3. En la línea de comandos, escriba el siguiente comando de la API v2 para enviar el correo masivo:

    aws sesv2 send-bulk-email --cli-input-json file://mybulkemail.json