- Newest
- Most votes
- Most comments
You've identified several important issues with Amazon SES V2 API's handling of email attachments and inline images:
-
Missing ContentTransferEncoding parameter: You're correct that when using base64-encoded content with the SES V2 API, you need to explicitly specify
"ContentTransferEncoding": "BASE64"in the attachment configuration. Without this parameter, the attachment won't render correctly. This should either be documented clearly or the API should assume BASE64 encoding when not specified. -
Incorrect MIME structure for inline images: The current implementation uses a
multipart/mixedcontent type for emails with inline images, which is technically incorrect according to email standards. For inline images referenced in HTML content, the proper MIME structure should usemultipart/relatedinstead. This incorrect implementation can cause rendering issues in email clients that strictly follow MIME standards, such as Thunderbird. -
Improper handling of mixed content types: When combining text/plain, text/html, and inline images, the MIME structure is not properly organized. Inline images should be part of a
multipart/relatedsection alongside the HTML content, not directly under the rootmultipart/mixedsection.
The correct MIME structure for emails with both text and HTML versions plus inline images should follow this hierarchy:
- multipart/mixed (if attachments are present)
- multipart/alternative
- text/plain
- multipart/related
- text/html
- inline images (with Content-Disposition: inline)
- regular attachments (with Content-Disposition: attachment)
Amazon SES introduced attachment support in the V2 API's "Simple" send type in April 2025, making it easier to send emails with attachments without needing to manually construct complex MIME messages. However, these implementation issues can affect how emails render in certain email clients, particularly those that strictly adhere to email standards.
For now, if you need precise control over the MIME structure, you might need to use the raw email sending capabilities of SES instead of the Simple send type, though this requires more complex code to properly construct the email.
Sources
How can I use SES V2 API send email with attachment? | AWS re:Post
Working with email attachments in SES - Amazon Simple Email Service
Sending raw email using the Amazon SES API v2 - Amazon Simple Email Service
Sending raw email using the Amazon SES API - Amazon Simple Email Service
Amazon SES now offers attachments in sending APIs - AWS
answered a year ago
Hello,
Thank you for addressing this issue with our current documentation within SES. While we are still verifying these changes, we have gone ahead and made the decision to update example in the public documentation to the following example.
{
"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"
}
]
}
}
}
Using the above example will allow you to successfully send attachments via Thunderbird without issue.
Please let us know if you have any questions.
answered a year ago
Relevant content
asked 7 months ago
- AWS OFFICIALUpdated a year ago

The suggested hierarchy does not highlight the different nesting levels (regular attachments are on the same level as inline images). Your answer should correctly show the hierarchy of the MIME sections. I will not accept this anwser as-is because of this.