View a markdown version of this page

Arbeiten mit E-Mail-Anhängen in SES - Amazon Simple Email Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit E-Mail-Anhängen in SES

E-Mail-Anhänge in SES sind Dateien, die Sie Ihren E-Mail-Nachrichten beifügen können, wenn Sie die SES-API v2 SendEmail und SendBulkEmail -Operationen verwenden. Mit dieser Funktion können Sie Ihren E-Mail-Inhalt um Dokumente wie PDFs, Word-Dateien, Bilder oder andere Dateitypen erweitern, die den von SES unterstützten MIME-Typen entsprechen. Sie können auch Inline-Bilder hinzufügen, die direkt in den E-Mail-Inhalt gerendert werden, ohne dass die Empfänger sie separat herunterladen müssen. Sie können mehrere Anlagen pro E-Mail hinzufügen, bis zu einer maximalen Nachrichtengröße von 40 MB.

Anmerkung

SendEmailSES API v2 mit Raw Inhaltstyp, SMTP-Schnittstelle und SES API v1 verarbeiten Anhänge weiterhin durch die Erstellung roher MIME-E-Mail-Nachrichten.

Wie funktionieren Anlagen in SES

Es gibt zwei verschiedene Arten der Verschlüsselung, die in unterschiedlichen Phasen beim Senden einer E-Mail mit Anhängen auftreten:

Stufe 1 — Daten an SES senden:

  • Wenn Sie einen Anhang an SES senden möchten, müssen die Binärdaten (wie ein PDF oder ein Bild) in ein Format konvertiert werden, das sicher übertragen werden kann.

  • An dieser Stelle kommt die Base64-Codierung ins Spiel — sie ist erforderlich, da Sie keine rohen Binärdaten in einer JSON-Anfrage senden können.

  • Wenn Sie das AWS SDK verwenden, verarbeitet es diese Kodierung automatisch.

  • Wenn Sie das verwenden AWS CLI, müssen Sie den Anhang selbst mit Base64 codieren, bevor Sie ihn senden.

Stufe 2 — SES erstellt die E-Mail:

  • Sobald SES Ihre Daten erhalten hat, muss es eine tatsächliche E-Mail mit dem Anhang erstellen.

  • Hier kommt das ContentTransferEncoding Setting ins Spiel.

  • SES verwendet die von Ihnen angegebene Kodierungsmethode ContentTransferEncoding , um den Anhang in der endgültigen E-Mail automatisch zu formatieren.

Stellen Sie sich das so vor — es ist vergleichbar mit dem Senden eines Pakets per Post. Zuerst müssen Sie das Paket zur Post bringen (Stufe 1 — Base64-encoding erforderlich), dann verpackt das Postamt es entsprechend für die endgültige Zustellung (Stufe 2 — ContentTransferEncoding).

Struktur des Anhangsobjekts

Wenn Sie eine E-Mail mit Anhängen über SES senden, verarbeitet der Dienst die komplexe MIME-Nachrichtenkonstruktion automatisch. Sie müssen lediglich den Inhalt und die Metadaten des Anhangs über die folgende Attachment Objektstruktur der SES API v2 bereitstellen:

  • FileName(Erforderlich) — Der den Empfängern angezeigte Dateiname (muss die Dateierweiterung enthalten). Falls nicht angegeben, leitet SES a ContentType von der Erweiterung von abFileName.

  • ContentType(Optional) — ID des IANA-compliant Medientyps.

  • ContentDisposition(Optional) — Gibt an, wie der Anhang gerendert werden soll: ATTACHMENT (Standard) oderINLINE.

  • ContentDescription(Optional) — Kurze Beschreibung des Inhalts.

  • RawContent(Erforderlich) — Der tatsächliche Inhalt des Anhangs.

  • ContentTransferEncoding(Optional) — Gibt an, wie die Nutzdaten des Anhangs kodiert werden, wenn sie in die MIME-Nachricht der E-Mail eingefügt werden: SEVEN_BIT (Standard), BASE64 oder. QUOTED_PRINTABLE

Alle angehängten Inhalte müssen in Base64 codiert werden, bevor sie zum Senden an den SES-Endpunkt übertragen werden. Wenn Sie den AWS SDK-Client für API-Aufrufe verwenden, wird dies automatisch für Sie erledigt. Wenn Sie den AWS CLI verwenden oder einen eigenen Client implementiert haben, müssen Sie die Codierung selbst vornehmen, z. B.:

  • Inhalt im Klartext: Text attachment sample content.

  • Base64-kodiert: VGV4dCBhdHRhY2htZW50IHNhbXBsZSBjb250ZW50Lg==

Die folgenden Beispiele zeigen, wie die Anhangsobjektstruktur verwendet wird, wenn Anlagen mit der SES-API v2 SendEmail und SendBulkEmail Operationen mithilfe der AWS CLI Referenzierung einer JSON-Datei, die Anhangsobjektelemente enthält, spezifiziert werden.

Beispiel— SendEmail mit einfachem Inhalt
aws sesv2 send-email --cli-input-json file://request-send-email-simple.json

anfordern-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" } ] } } }
Beispiel— mit einfachem Inhalt und Inline-Anhang SendEmail
aws sesv2 send-email --cli-input-json file://request-send-email-simple-inline-attachment.json

anfordern-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" } ] } } }
Beispiel— mit Vorlageninhalt 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" } ] } } }
Beispiel— mit dem Inhalt des Anhangs SendBulkEmail
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\"}" } } } ] }

Bewährte Methoden

  • Halten Sie die Gesamtgröße der Nachricht (einschließlich Anlagen) unter 40 MB.

  • Lassen Sie SES Inhaltstypen nach Möglichkeit anhand von Dateierweiterungen automatisch erkennen.

  • Geben Sie Inhaltstypen nur dann explizit an, wenn sie nicht zu den gängigen MIME-Typen gehören.

  • Erwägen Sie die Verwendung von Inline-Bildern für eine bessere E-Mail-Wiedergabe.

  • SES unterstützt eine Vielzahl von MIME-Typen für Anlagen, mit Ausnahme der unter aufgeführtenNicht-unterstützte Anhangtypen.

SES unterstützt keine Anhangstypen

Sie können Nachrichten mit Anhängen über Amazon SES versenden, indem Sie den Multipurpose Internet Mail Extensions (MIME)-Standard verwenden. Amazon SES akzeptiert alle Dateianhangstypen mit Ausnahme von Anhängen mit den Dateierweiterungen in der folgenden Liste.

.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

Einige ISPs haben weitere Beschränkungen (z. B. Beschränkungen bezüglich archivierter Anhänge). Daher empfehlen wir Ihnen, Ihren E-Mail-Versand über die wichtigsten ISPs zu testen, bevor Sie Ihre Produktions-E-Mails versenden.