What are the Attachment and Email Size Limits?

Emails and attachments have size limits for both sending outbound messages through Postmark or receiving messages as JSON with inbound processing. This help article will make you aware of what size limits are in place for both outbound sending and inbound processing, which will be useful for troubleshooting sending or inbound processing errors and advising your application’s users of best practices.

Sending Size Limits

  • TextBody and HtmlBody can each be up to 5 MB each
  • Total message size, including attachments, can be 10 MB
  • Batch endpoint total payload size, including attachments, cannot exceed 50 MB

If you attempt to send an email that exceeds any of these size requirements, the message will be rejected. We calculate the size of the email after it has been base64 encoded, so please keep in mind your final email size may be larger after being encoded.

Inbound Size Limits

  • Total cumulative size for all Inbound attachment files may not exceed 35 MB

To check the total size of an inbound webhook notification, you can use the Content-Length header of the POST request received. Now that you know the size limits in place, you can advise your users of best practices around sending and receiving emails with your application.

Retrieving Attachments

Attachments are not retrievable via the Postmark UI, API, or webhooks as Postmark does not host the attachment in any way.

When you retrieve the JSON using the API it will include the full JSON but will not include the base64 bytes for the attachment. If you need the attachment bytes, you can retrieve those from the Postmark UI. Open the message within your Postmark UI and then click the Raw Source tab. There, you’ll find the bytes for the attachments received near the bottom.

We do not store the entire base64 bytes for larger attachments over 1MB and instead you’ll see the [Message Truncated] note in the Raw Source. The only way to ensure you are getting the full bytes for all attachments would be to log it in your application when receiving the webhook for later access in case the processing fails in your application.

Last updated September 23rd, 2021

Still need some help?

Our customer success team has your back!