View a markdown version of this page

Utilisation des pièces jointes d'e-mails dans SES - Amazon Simple Email Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation des pièces jointes d'e-mails dans SES

Les pièces jointes aux e-mails dans SES sont des fichiers que vous pouvez inclure dans vos messages électroniques lorsque vous utilisez l'API SES v2 SendEmail et ses SendBulkEmail opérations. Cette fonctionnalité vous permet d'enrichir le contenu de vos e-mails en incluant des documents tels que des PDF, des fichiers Word, des images ou d'autres types de fichiers conformes aux types MIME pris en charge par SES. Vous pouvez également inclure des images intégrées qui s'affichent directement dans le contenu de l'e-mail sans que les destinataires n'aient à les télécharger séparément. Vous pouvez inclure plusieurs pièces jointes par e-mail, jusqu'à la limite de 40 Mo de taille totale des messages.

Note

SendEmailL'API SES v2 avec type de Raw contenu, interface SMTP et SES API v1 continuent de gérer les pièces jointes via la construction de messages MIME de courrier électronique brut.

Comment fonctionnent les pièces jointes dans SES

Il existe deux types de codage différents qui se produisent à différentes étapes lors de l'envoi d'un e-mail contenant des pièces jointes :

Étape 1 — Envoi de données à SES :

  • Lorsque vous souhaitez envoyer une pièce jointe à SES, les données binaires (comme un PDF ou une image) doivent être converties dans un format qui peut être transmis en toute sécurité.

  • C'est là qu'intervient le codage base64. Il est obligatoire car vous ne pouvez pas envoyer de données binaires brutes dans une requête JSON.

  • Si vous utilisez le AWS SDK, il gère automatiquement cet encodage.

  • Si vous utilisez le AWS CLI, vous devez encoder vous-même la pièce jointe en base64 avant de l'envoyer.

Étape 2 — Création de l'e-mail par SES :

  • Une fois que SES reçoit vos données, elle doit créer un véritable e-mail avec la pièce jointe.

  • C'est là que le ContentTransferEncoding décor entre en jeu.

  • SES utilisera la méthode de codage que vous aurez spécifiée ContentTransferEncoding pour formater automatiquement la pièce jointe du dernier e-mail.

Pensez-y comme ceci : c'est comme envoyer un colis par la poste. Tout d'abord, vous devez envoyer le colis au bureau de poste (étape 1 - Base64-encoding obligatoire), puis le bureau de poste l'emballera de manière appropriée pour la livraison finale (étape 2 - ContentTransferEncoding).

Structure de l'objet attaché

Lorsque vous envoyez un e-mail avec des pièces jointes via SES, le service gère automatiquement la construction complexe des messages MIME. Il vous suffit de fournir le contenu de la pièce jointe et les métadonnées via la structure d'Attachmentobjet de l'API SES v2 suivante :

  • FileName(Obligatoire) — Le nom du fichier affiché aux destinataires (doit inclure l'extension du fichier). S'il n'est pas fourni, SES déduira un ContentType de l'extension duFileName.

  • ContentType(Facultatif) — identifiant du type de IANA-compliant média.

  • ContentDisposition(Facultatif) — Spécifie la manière dont la pièce jointe doit être affichée : ATTACHMENT (par défaut) ouINLINE.

  • ContentDescription(Facultatif) — Brève description du contenu.

  • RawContent(Obligatoire) — Le contenu réel de la pièce jointe.

  • ContentTransferEncoding(Facultatif) — Spécifie comment la charge utile de la pièce jointe est codée lorsqu'elle est assemblée dans le message MIME de l'e-mail : SEVEN_BIT (par défaut), BASE64 ou. QUOTED_PRINTABLE

Tout le contenu joint doit être encodé en base64 avant d'être transféré vers le point de terminaison SES pour envoi. Si vous utilisez le client AWS SDK pour effectuer des appels d'API, cela est automatiquement géré pour vous. Si vous utilisez le AWS CLI client ou si vous avez implémenté votre propre client, vous devrez effectuer l'encodage vous-même, par exemple :

  • Contenu en texte brut : Text attachment sample content.

  • Encodé en Base64 : VGV4dCBhdHRhY2htZW50IHNhbXBsZSBjb250ZW50Lg==

Les exemples suivants montrent comment utiliser la structure d'objet de pièce jointe lors de la spécification de pièces jointes avec l'API SES v2 SendEmail et SendBulkEmail des opérations utilisant le AWS CLI référencement d'un fichier JSON contenant des éléments d'objet de pièce jointe.

Exemple— SendEmail avec un contenu simple
aws sesv2 send-email --cli-input-json file://request-send-email-simple.json

demande-envoie-courriel-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" } ] } } }
Exemple— SendEmail avec un contenu simple et une pièce jointe en ligne
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" } ] } } }
Exemple— SendEmail avec contenu de modèle
aws sesv2 send-email --cli-input-json file://request-send-email-template.json

demande-envoi-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" } ] } } }
Exemple— SendBulkEmail avec contenu en pièce jointe
aws sesv2 send-bulk-email --cli-input-json file://request-send-bulk-email.json

demande-envoie-mail-groupé.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\"}" } } } ] }

Bonnes pratiques

  • Veillez à ce que la taille totale des messages (y compris les pièces jointes) soit inférieure à 40 Mo.

  • Laissez SES détecter automatiquement les types de contenu en fonction des extensions de fichiers lorsque cela est possible.

  • Spécifiez explicitement les types de contenu uniquement lorsqu'ils ne font pas partie des types MIME courants.

  • Envisagez d'utiliser des images intégrées pour un meilleur rendu des e-mails.

  • SES prend en charge un large éventail de types MIME pour les pièces jointes, à l'exception de ceux répertoriés dansTypes de pièces jointes non pris en charge.

Types de pièces jointes SES non pris en charge

Vous pouvez envoyer des messages avec des pièces jointes via Amazon SES en utilisant le standard Multipurpose Internet Mail Extensions (MIME). Amazon SES accepte tous les types de pièces jointes à l'exception des pièces jointes dont l'extension de fichier figure dans la liste qui suit.

.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

Certains fournisseurs de services Internet (ISP) ayant d'autres restrictions (par exemple, en matière de pièces jointes archivées), nous vous recommandons de tester votre envoi d'e-mails via les principaux ISP avant d'envoyer votre e-mail de production.