Python 2.7 has reached end of support
and will be
deprecated
on January 31, 2026. After deprecation, you won't be able to deploy Python 2.7
applications, even if your organization previously used an organization policy to
re-enable deployments of legacy runtimes. Your existing Python
2.7 applications will continue to run and receive traffic after their
deprecation date. We recommend that
you
migrate to the latest supported version of Python.
Mail with Headers or Attachments
Stay organized with collections
Save and categorize content based on your preferences.
When you send mail using the Mail API,
there are some restrictions on the headers that you can use and the types of
files you can attach.
An outgoing email has headers that provide details about the message, such as
the sender, recipient, date, and subject. Each header has a name and a value.
You can also include the following headers in an outgoing email; for security
purposes, other headers are not allowed:
- In-Reply-To
- List-Id
- List-Unsubscribe
- On-Behalf-Of
- References
- Resent-Date
- Resent-From
- Resent-To
Mail with attachments
An outgoing email message can have file attachments. Each attachment has a
filename and file data. The file data can come from any source, such as an
application data file or the datastore.
Filename extensions that are prohibited
As a security measure to protect against viruses, email attachments cannot use
the following filename extensions, and ZIP files cannot contain files with the
following filename extensions:
- ade
- adp
- bat
- chm
- cmd
- com
- cpl
- exe
- hta
- ins
- isp
- jse
- lib
- mde
- msc
- msp
- mst
- pif
- scr
- sct
- shb
- sys
- vb
- vbe
- vbs
- vxd
- wsc
- wsf
- wsh
Attachments and Multipurpose Internet Mail Extensions (MIME) types
The MIME type of an attachment is determined from the file's extension. The MIME
type identifies the type of content that is being sent, and can determine how
that data is transferred.
The following is a list of MIME types and their corresponding filename
extensions. You are not limited to these extensions, but if you use an unknown
extension, App Engine will assign it the MIME type application/octet-stream
.
MIME type |
Filename extensions |
application/msword |
doc, docx |
application/pdf |
pdf |
application/rss+xml |
rss |
application/vnd.google-earth.kml+xml |
kml |
application/vnd.google-earth.kmz |
kmz |
application/vnd.ms-excel |
xls, xlsx |
application/vnd.ms-powerpoint |
pps, ppt, pptx |
application/vnd.oasis.opendocument.presentation |
odp |
application/vnd.oasis.opendocument.spreadsheet |
ods |
application/vnd.oasis.opendocument.text |
odt |
application/vnd.sun.xml.calc |
sxc |
application/vnd.sun.xml.writer |
sxw |
application/x-gzip |
gzip |
application/zip |
zip |
audio/basic |
au snd |
audio/flac |
flac |
audio/mid |
mid, rmi |
audio/mp4 |
m4a |
audio/mpeg |
mp3 |
audio/ogg |
oga, ogg |
audio/x-aiff |
aif, aifc, aiff |
audio/x-wav |
wav |
image/gif |
gif |
image/jpeg |
jpeg, jpg, jpe |
image/png |
png |
image/tiff |
tiff, tif |
image/vnd.wap.wbmp |
wbmp |
image/x-ms-bmp |
bmp |
text/calendar |
ics |
text/comma-separated-values |
csv |
text/css |
css |
text/html |
htm, html |
text/plain |
asc, c, diff, log, patch, pot, text, txt |
text/x-vcard |
vcf |
video/mp4 |
mp4 |
video/mpeg |
mpeg, mpg, mpe |
video/ogg |
ogv |
video/quicktime |
qt, mov |
video/x-msvideo |
avi |
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-29 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[[["\u003cp\u003eWhen using the Mail API, specific headers like \u003ccode\u003eIn-Reply-To\u003c/code\u003e, \u003ccode\u003eList-Unsubscribe\u003c/code\u003e, and \u003ccode\u003eResent-Date\u003c/code\u003e are permitted for outgoing emails, while others are restricted for security reasons.\u003c/p\u003e\n"],["\u003cp\u003eOutgoing emails can include file attachments, with the file data being sourced from various locations such as application data files or the datastore.\u003c/p\u003e\n"],["\u003cp\u003eCertain filename extensions are prohibited in email attachments and within ZIP files to prevent virus transmission, including extensions like \u003ccode\u003e.exe\u003c/code\u003e, \u003ccode\u003e.bat\u003c/code\u003e, and \u003ccode\u003e.vbs\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe MIME type of an attachment, which dictates the content type and transfer method, is determined by its file extension, and files with unknown extensions are assigned the \u003ccode\u003eapplication/octet-stream\u003c/code\u003e MIME type.\u003c/p\u003e\n"],["\u003cp\u003eThe Mail API is supported for first-generation runtimes and can also be used when upgrading to corresponding second-generation runtimes, following the provided migration guide.\u003c/p\u003e\n"]]],[],null,["# Mail with Headers or Attachments\n\nWhen you send mail using the [Mail API](/appengine/docs/legacy/standard/python/mail),\nthere are some restrictions on the headers that you can use and the types of\nfiles you can attach.\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n| python3\n|\n| /services/access). If you are updating to the App Engine Python 3 runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/python-differences) to learn about your migration options for legacy bundled services.\n\nOptional headers you can use\n----------------------------\n\nAn outgoing email has headers that provide details about the message, such as\nthe sender, recipient, date, and subject. Each header has a name and a value.\nYou can also include the following headers in an outgoing email; for security\npurposes, other headers are not allowed:\n\n- In-Reply-To\n- List-Id\n- List-Unsubscribe\n- On-Behalf-Of\n- References\n- Resent-Date\n- Resent-From\n- Resent-To\n\nMail with attachments\n---------------------\n\nAn outgoing email message can have file attachments. Each attachment has a\nfilename and file data. The file data can come from any source, such as an\napplication data file or the datastore.\n\n### Filename extensions that are prohibited\n\nAs a security measure to protect against viruses, email attachments cannot use\nthe following filename extensions, and ZIP files cannot contain files with the\nfollowing filename extensions:\n\n- ade\n- adp\n- bat\n- chm\n- cmd\n- com\n- cpl\n- exe\n- hta\n- ins\n- isp\n- jse\n- lib\n- mde\n- msc\n- msp\n- mst\n- pif\n- scr\n- sct\n- shb\n- sys\n- vb\n- vbe\n- vbs\n- vxd\n- wsc\n- wsf\n- wsh\n\n### Attachments and Multipurpose Internet Mail Extensions (MIME) types\n\nThe MIME type of an attachment is determined from the file's extension. The MIME\ntype identifies the type of content that is being sent, and can determine how\nthat data is transferred.\n\nThe following is a list of MIME types and their corresponding filename\nextensions. You are not limited to these extensions, but if you use an unknown\nextension, App Engine will assign it the MIME type `application/octet-stream`."]]