Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo degli allegati e-mail in SES
Gli allegati e-mail in SES sono file che è possibile includere nei messaggi e-mail quando si utilizzano l'API SES v2 SendEmail e le operazioni. SendBulkEmail Questa funzionalità consente di arricchire il contenuto delle e-mail includendo documenti come PDF, file Word, immagini o altri tipi di file conformi ai tipi MIME supportati da SES. È inoltre possibile includere immagini in linea che vengono visualizzate direttamente nel contenuto dell'e-mail senza che i destinatari le scarichino separatamente. Puoi includere più allegati per e-mail, fino al limite di dimensione totale del messaggio di 40 MB.
Nota
SendEmailL'API SES v2 con tipo di Raw contenuto, interfaccia SMTP e API SES v1 continua a gestire gli allegati tramite la costruzione di messaggi e-mail MIME non elaborati.
Come funzionano gli allegati in SES
Esistono due diversi tipi di codifica che avvengono in fasi diverse dell'invio di un'e-mail con allegati:
Fase 1 — Invio di dati a SES:
-
Quando si desidera inviare un allegato a SES, i dati binari (come un PDF o un'immagine) devono essere convertiti in un formato che possa essere trasmesso in modo sicuro.
-
È qui che entra in gioco la codifica base64: è necessaria perché non è possibile inviare dati binari grezzi in una richiesta JSON.
-
Se stai usando l' AWS SDK, gestisce questa codifica automaticamente.
-
Se stai usando il AWS CLI, devi codificare tu stesso l'allegato in base 64 prima di inviarlo.
Fase 2 — Creazione dell'email da parte di SES:
-
Una volta ricevuti i dati, SES deve creare un'e-mail effettiva con l'allegato.
-
È qui che entra in gioco l'ContentTransferEncodingimpostazione.
-
SES utilizzerà qualsiasi metodo di codifica specificato ContentTransferEncoding per formattare automaticamente l'allegato nell'e-mail finale.
Vedila in questo modo: è simile all'invio di un pacco tramite posta. Innanzitutto, devi portare il pacco all'ufficio postale (Fase 1 - Base64-encoding obbligatoria), quindi l'ufficio postale lo imballerà in modo appropriato per la consegna finale (Fase 2 -). ContentTransferEncoding
Struttura dell'oggetto allegato
Quando si invia un'e-mail con allegati tramite SES, il servizio gestisce automaticamente la complessa costruzione dei messaggi MIME. È sufficiente fornire il contenuto e i metadati degli allegati tramite la seguente struttura a oggetti dell'API SES v2: Attachment
-
FileName(Obbligatorio): il nome del file visualizzato dai destinatari (deve includere l'estensione del file). Se non viene fornito, SES ricaverà unContentTypedall'estensione di.FileName -
ContentType(Facoltativo) — identificatore del tipo diIANA-compliant supporto. -
ContentDisposition(Facoltativo) — Specifica come deve essere visualizzato l'allegato:ATTACHMENT(impostazione predefinita) o.INLINE -
ContentDescription(Facoltativo): breve descrizione del contenuto. -
RawContent(Obbligatorio): il contenuto effettivo dell'allegato. -
ContentTransferEncoding(Facoltativo): specifica come viene codificato il payload dell'allegato quando viene assemblato nel messaggio MIME dell'email:SEVEN_BIT(predefinito) o.BASE64QUOTED_PRINTABLE
Tutti i contenuti allegati devono essere codificati in base64 prima di essere trasferiti all'endpoint SES per l'invio. Se stai usando il client AWS SDK per effettuare chiamate API, questo viene gestito automaticamente per te. Se stai usando o hai implementato un tuo client, dovrai eseguire tu stesso la codifica, ad esempio: AWS CLI
-
Contenuto in testo normale:
Text attachment sample content. -
Codificato in Base64:
VGV4dCBhdHRhY2htZW50IHNhbXBsZSBjb250ZW50Lg==
Gli esempi seguenti mostrano come utilizzare la struttura degli oggetti allegati quando si specificano gli allegati con l'API SES v2 SendEmail e SendBulkEmail le operazioni utilizzando il AWS CLI riferimento a un file JSON contenente elementi dell'oggetto allegato.
Esempio— con contenuti semplici SendEmail
aws sesv2 send-email --cli-input-json file://request-send-email-simple.json
richiesta-invio-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" } ] } } }
Esempio— con contenuti semplici e allegati in linea SendEmail
aws sesv2 send-email --cli-input-json file://request-send-email-simple-inline-attachment.json
richiesta-invio-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" } ] } } }
Esempio— con contenuto del modello 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" } ] } } }
Esempio— con il contenuto degli allegati SendBulkEmail
aws sesv2 send-bulk-email --cli-input-json file://request-send-bulk-email.json
richiesta-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\"}" } } } ] }
Best practice
-
Mantieni la dimensione totale dei messaggi (inclusi gli allegati) al di sotto dei 40 MB.
-
Consenti a SES di rilevare automaticamente i tipi di contenuto in base alle estensioni dei file, quando possibile.
-
Specifica esplicitamente i tipi di contenuto solo quando non rientrano nei tipi MIME comuni.
-
Prendi in considerazione l'utilizzo di immagini in linea per una migliore resa delle email.
-
SES supporta un'ampia gamma di tipi MIME per gli allegati, ad eccezione di quelli elencati in. Tipi di allegati non supportati
Tipi di allegati SES non supportati
È possibile inviare messaggi con allegati tramite Amazon SES utilizzando lo standard Multipurpose Internet Mail Extensions (MIME). Amazon SES accetta tutti i tipi di file allegati ad eccezione degli allegati con le estensioni di file elencate di seguito.
.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 |
Alcuni ISP presentano restrizioni ulteriori (ad esempio restrizioni riguardanti gli allegati archiviati), per cui ti consigliamo di testare l'e-mail effettuando invii attraverso gli ISP principali prima di inviare e-mail di produzione.