Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de archivos adjuntos de correo electrónico en SES
Los archivos adjuntos de correo electrónico de SES son archivos que puede incluir en sus mensajes de correo electrónico cuando utilice las operaciones SendEmail y SendBulkEmail de la API v2 de SES. Esta función le permite enriquecer el contenido de su correo electrónico al incluir documentos como archivos de Word PDFs, imágenes u otros tipos de archivos que cumplen con los tipos de MIME compatibles con SES. También puede incluir imágenes en línea que se renderizan directamente en el contenido del correo electrónico sin que los destinatarios tengan que descargarlas por separado. Puedes incluir varios archivos adjuntos por correo electrónico, hasta el límite de 40 MB del tamaño total del mensaje.
nota
La API v2 de SES SendEmail con el tipo de contenido Raw, la interfaz SMTP y la API v1 de SES siguen tratando los archivos adjuntos mediante un constructo de mensajes MIME de correo electrónico sin procesar.
Cómo funcionan los archivos adjuntos en SES
Hay dos tipos diferentes de codificación que se producen en diferentes etapas al enviar un correo electrónico con archivos adjuntos:
Etapa 1: envío de datos a SES:
-
Cuando desee enviar un archivo adjunto a SES, los datos binarios (como un PDF o una imagen) deben convertirse a un formato que pueda transmitirse de forma segura.
-
Aquí es donde entra en juego la codificación base64, necesaria porque no se pueden enviar datos binarios sin procesar en una solicitud JSON.
-
Si utilizas el AWS SDK, este gestiona esta codificación automáticamente.
-
Si utilizas el AWS CLI, tendrás que codificar tú mismo el archivo adjunto en base64 antes de enviarlo.
Etapa 2: SES crea el correo electrónico:
-
Una vez que SES reciba sus datos, tendrá que crear un correo electrónico real con el archivo adjunto.
-
Aquí es donde entra en juego la ContentTransferEncodingconfiguración.
-
SES utilizará cualquier método de codificación que especifique ContentTransferEncoding para formatear automáticamente el archivo adjunto del correo electrónico final.
Puede compararse con el envío de un paquete por correo. En primer lugar, debe llevar el paquete a la oficina de correos (fase 1: se requiere la codificación en Base64) y, a continuación, la oficina de correos lo empaquetará adecuadamente para su entrega final (fase 2:). ContentTransferEncoding
Estructura de objetos de archivos adjuntos
Cuando envía un correo electrónico con archivos adjuntos a través de SES, el servicio trata automáticamente la compleja construcción de los mensajes MIME. Solo tiene que proporcionar el contenido y los metadatos del archivo adjunto a través de la siguiente estructura de objetos Attachment de la API v2 de SES:
-
FileName(Obligatorio): nombre del archivo que se muestra a los destinatarios (debe incluir la extensión de archivo). Si no se proporciona, SES generará unContentTypepartir de la extensión delFileName. -
ContentType(Opcional): identificador de tipo de medio compatible con IANA. -
ContentDisposition(Opcional): especifica cómo se debe renderizar el archivo adjunto:ATTACHMENT(predeterminado) oINLINE. -
ContentDescription(Opcional): descripción breve del contenido. -
RawContent(Obligatorio): contenido real del archivo adjunto. -
ContentTransferEncoding(Opcional): especifica cómo se codifica la carga útil del archivo adjunto cuando se ensambla en el mensaje MIME del correo electrónico:SEVEN_BIT(predeterminado),BASE64oQUOTED_PRINTABLE.
Todo el contenido adjunto debe codificarse en base64 antes de transferirse al punto de conexión de SES para su envío. Si utilizas el cliente del AWS SDK para realizar llamadas a la API, esto se gestionará automáticamente. Si utilizas el AWS CLI cliente o lo has implementado tú mismo, tendrás que realizar la codificación tú mismo, por ejemplo:
-
Contenido de texto sin formato:
Text attachment sample content. -
Codificación Base64:
VGV4dCBhdHRhY2htZW50IHNhbXBsZSBjb250ZW50Lg==
Los siguientes ejemplos muestran cómo utilizar la estructura de objetos adjuntos al especificar adjuntos con la API v2 de SES SendEmaily SendBulkEmaillas operaciones que utilizan la AWS CLI referencia a un archivo JSON que contiene elementos del objeto adjunto.
ejemplo — SendEmail con contenido sencillo
aws sesv2 send-email --cli-input-json file://request-send-email-simple.json
request-send-email-simple.json
{ "FromEmailAddress": "sender@example.com", "Destination": { "ToAddresses": [ "recipient@example.com" ] }, "Content": { "Simple": { "Subject": { "Data": "Email with attachment" }, "Body": { "Text": { "Data": "Please see attached document." }, "Html": { "Data": "Please see attached <b>document</b>." } }, "Attachments": [ { "RawContent": "<base64-encoded-content>", "ContentDisposition": "ATTACHMENT", "FileName": "document.pdf", "ContentDescription": "PDF Document Attachment", "ContentTransferEncoding": "BASE64" } ] } } }
ejemplo — SendEmail con contenido simple y archivos adjuntos en línea
aws sesv2 send-email --cli-input-json file://request-send-email-simple-inline-attachment.json
request-send-email-simple-inline-attachment.json
{ "FromEmailAddress": "sender@example.com", "Destination": { "ToAddresses": [ "recipient@example.com" ] }, "Content": { "Simple": { "Subject": { "Data": "Email with attachment" }, "Body": { "Html": { "Data": "<html><body>Our logo:<br><img src=\"cid:logo123\" alt=\"Company Logo\"></body></html>" } }, "Attachments": [ { "RawContent": "<base64-encoded-content>", "ContentDisposition": "INLINE", "FileName": "logo.png", "ContentId": "logo123", "ContentTransferEncoding": "BASE64" } ] } } }
ejemplo — con contenido de plantilla SendEmail
aws sesv2 send-email --cli-input-json file://request-send-email-template.json
request-send-email-template.json
{ "FromEmailAddress": "sender@example.com", "Destination": { "ToAddresses": [ "recipient@example.com" ] }, "Content": { "Template": { "TemplateName": "MyTemplate", "TemplateData": "{\"name\":\"John\"}", "Attachments": [ { "RawContent": "<base64-encoded-content>", "ContentDisposition": "ATTACHMENT", "FileName": "document.pdf", "ContentDescription": "PDF Document Attachment", "ContentTransferEncoding": "BASE64" } ] } } }
ejemplo — SendBulkEmail con contenido adjunto
aws sesv2 send-bulk-email --cli-input-json file://request-send-bulk-email.json
request-send-bulk-email.json
{ "FromEmailAddress": "sender@example.com", "DefaultContent": { "Template": { "TemplateName": "MyTemplate", "TemplateData": "{}", "Attachments": [ { "RawContent": "<base64-encoded-content>", "ContentDisposition": "ATTACHMENT", "FileName": "document.pdf", "ContentDescription": "PDF Document Attachment", "ContentTransferEncoding": "BASE64" } ] } }, "BulkEmailEntries": [ { "Destination": { "ToAddresses": [ "recipient@example.com" ] }, "ReplacementEmailContent": { "ReplacementTemplate": { "ReplacementTemplateData": "{\"name\":\"John\"}" } } } ] }
Prácticas recomendadas
-
Mantenga el tamaño total del mensaje (incluidos los archivos adjuntos) en menos de 40 MB.
-
Deje que SES detecte automáticamente los tipos de contenido en función de las extensiones de archivo siempre que sea posible.
-
Especifique explícitamente los tipos de contenido solo cuando no coincidan con los tipos MIME comunes
. -
Considere la posibilidad de utilizar imágenes en línea para obtener una mejor renderización del correo electrónico.
-
SES admite una amplia gama de tipos de MIME para archivos adjuntos, excepto los que se indican en Tipos de adjuntos no admitidos.
Tipos de archivos adjuntos que no admite SES
Puede enviar mensajes con archivos adjuntos a través de Amazon SES utilizando el estándar Multipurpose Internet Mail Extensions (MIME). Amazon SES acepta todos los tipos de archivos adjuntos excepto los archivos adjuntos con las extensiones de archivo de la siguiente lista.
.ade .adp .app .asp .bas .bat .cer .chm .cmd .com .cpl .crt .csh .der .exe .fxp .gadget .hlp |
.hta .inf .ins .isp .its .js .jse .ksh .lib .lnk .mad .maf .mag .mam .maq .mar .mas .mat |
.mau .mav .maw .mda .mdb .mde .mdt .mdw .mdz .msc .msh .msh1 .msh2 .mshxml .msh1xml .msh2xml .msi .msp |
.mst .ops .pcd .pif .plg .prf .prg .reg .scf .scr .sct .shb .shs .sys .ps1 .ps1xml .ps2 .ps2xml |
.psc1 .psc2 .tmp .url .vb .vbe .vbs .vps .vsmacros .vss .vst .vsw .vxd .ws .wsc .wsf .wsh .xnk |
Algunos ISPs tienen restricciones adicionales (como las restricciones relativas a los archivos adjuntos), por lo que te recomendamos que pruebes el envío del correo electrónico a través de Major ISPs antes de enviar el correo electrónico de producción.