blob: 165011de9c19b0ae87b83968b111b56f46b30acc [file] [log] [blame]
R David Murray79cf3ba2012-05-27 17:10:36 -04001:mod:`email.mime`: Creating email and MIME objects from scratch
2---------------------------------------------------------------
Georg Brandl116aa622007-08-15 14:28:22 +00003
4.. module:: email.mime
Georg Brandl48310cd2009-01-03 21:18:54 +00005 :synopsis: Build MIME messages.
Georg Brandl116aa622007-08-15 14:28:22 +00006
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007**Source code:** :source:`Lib/email/mime/`
8
9--------------
Georg Brandl116aa622007-08-15 14:28:22 +000010
11Ordinarily, you get a message object structure by passing a file or some text to
12a parser, which parses the text and returns the root message object. However
13you can also build a complete message structure from scratch, or even individual
Georg Brandl3638e482009-04-27 16:46:17 +000014:class:`~email.message.Message` objects by hand. In fact, you can also take an
15existing structure and add new :class:`~email.message.Message` objects, move them
16around, etc. This makes a very convenient interface for slicing-and-dicing MIME
17messages.
Georg Brandl116aa622007-08-15 14:28:22 +000018
Georg Brandl3638e482009-04-27 16:46:17 +000019You can create a new object structure by creating :class:`~email.message.Message`
20instances, adding attachments and all the appropriate headers manually. For MIME
21messages though, the :mod:`email` package provides some convenient subclasses to
22make things easier.
Georg Brandl116aa622007-08-15 14:28:22 +000023
24Here are the classes:
25
Benjamin Peterson75edad02009-01-01 15:05:06 +000026.. currentmodule:: email.mime.base
Georg Brandl116aa622007-08-15 14:28:22 +000027
R David Murray56b1f1b2016-09-07 16:48:35 -040028.. class:: MIMEBase(_maintype, _subtype, *, policy=compat32, **_params)
Georg Brandl116aa622007-08-15 14:28:22 +000029
30 Module: :mod:`email.mime.base`
31
Georg Brandl3638e482009-04-27 16:46:17 +000032 This is the base class for all the MIME-specific subclasses of
33 :class:`~email.message.Message`. Ordinarily you won't create instances
34 specifically of :class:`MIMEBase`, although you could. :class:`MIMEBase`
35 is provided primarily as a convenient base class for more specific
36 MIME-aware subclasses.
Georg Brandl116aa622007-08-15 14:28:22 +000037
38 *_maintype* is the :mailheader:`Content-Type` major type (e.g. :mimetype:`text`
39 or :mimetype:`image`), and *_subtype* is the :mailheader:`Content-Type` minor
40 type (e.g. :mimetype:`plain` or :mimetype:`gif`). *_params* is a parameter
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +030041 key/value dictionary and is passed directly to :meth:`Message.add_header
42 <email.message.Message.add_header>`.
Georg Brandl116aa622007-08-15 14:28:22 +000043
R David Murray56b1f1b2016-09-07 16:48:35 -040044 If *policy* is specified, (defaults to the
45 :class:`compat32 <email.policy.Compat32>` policy) it will be passed to
46 :class:`~email.message.Message`.
47
Georg Brandl116aa622007-08-15 14:28:22 +000048 The :class:`MIMEBase` class always adds a :mailheader:`Content-Type` header
49 (based on *_maintype*, *_subtype*, and *_params*), and a
50 :mailheader:`MIME-Version` header (always set to ``1.0``).
51
R David Murray56b1f1b2016-09-07 16:48:35 -040052 .. versionchanged:: 3.6
53 Added *policy* keyword-only parameter.
54
Georg Brandl116aa622007-08-15 14:28:22 +000055
Benjamin Peterson75edad02009-01-01 15:05:06 +000056.. currentmodule:: email.mime.nonmultipart
57
Georg Brandl116aa622007-08-15 14:28:22 +000058.. class:: MIMENonMultipart()
59
60 Module: :mod:`email.mime.nonmultipart`
61
Georg Brandl3638e482009-04-27 16:46:17 +000062 A subclass of :class:`~email.mime.base.MIMEBase`, this is an intermediate base
63 class for MIME messages that are not :mimetype:`multipart`. The primary
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +030064 purpose of this class is to prevent the use of the
65 :meth:`~email.message.Message.attach` method, which only makes sense for
66 :mimetype:`multipart` messages. If :meth:`~email.message.Message.attach`
Georg Brandl3638e482009-04-27 16:46:17 +000067 is called, a :exc:`~email.errors.MultipartConversionError` exception is raised.
Georg Brandl116aa622007-08-15 14:28:22 +000068
Georg Brandl116aa622007-08-15 14:28:22 +000069
Benjamin Peterson75edad02009-01-01 15:05:06 +000070.. currentmodule:: email.mime.multipart
71
R David Murray56b1f1b2016-09-07 16:48:35 -040072.. class:: MIMEMultipart(_subtype='mixed', boundary=None, _subparts=None, \
73 *, policy=compat32, **_params)
Georg Brandl116aa622007-08-15 14:28:22 +000074
75 Module: :mod:`email.mime.multipart`
76
Georg Brandl3638e482009-04-27 16:46:17 +000077 A subclass of :class:`~email.mime.base.MIMEBase`, this is an intermediate base
78 class for MIME messages that are :mimetype:`multipart`. Optional *_subtype*
79 defaults to :mimetype:`mixed`, but can be used to specify the subtype of the
80 message. A :mailheader:`Content-Type` header of :mimetype:`multipart/_subtype`
81 will be added to the message object. A :mailheader:`MIME-Version` header will
82 also be added.
Georg Brandl116aa622007-08-15 14:28:22 +000083
84 Optional *boundary* is the multipart boundary string. When ``None`` (the
R. David Murray101f2782010-01-10 19:18:27 +000085 default), the boundary is calculated when needed (for example, when the
86 message is serialized).
Georg Brandl116aa622007-08-15 14:28:22 +000087
88 *_subparts* is a sequence of initial subparts for the payload. It must be
89 possible to convert this sequence to a list. You can always attach new subparts
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +030090 to the message by using the :meth:`Message.attach
91 <email.message.Message.attach>` method.
Georg Brandl116aa622007-08-15 14:28:22 +000092
R David Murray56b1f1b2016-09-07 16:48:35 -040093 Optional *policy* argument defaults to :class:`compat32 <email.policy.Compat32>`.
94
Georg Brandl116aa622007-08-15 14:28:22 +000095 Additional parameters for the :mailheader:`Content-Type` header are taken from
96 the keyword arguments, or passed into the *_params* argument, which is a keyword
97 dictionary.
98
R David Murray56b1f1b2016-09-07 16:48:35 -040099 .. versionchanged:: 3.6
100 Added *policy* keyword-only parameter.
Georg Brandl116aa622007-08-15 14:28:22 +0000101
Benjamin Peterson75edad02009-01-01 15:05:06 +0000102.. currentmodule:: email.mime.application
103
R David Murray56b1f1b2016-09-07 16:48:35 -0400104.. class:: MIMEApplication(_data, _subtype='octet-stream', \
105 _encoder=email.encoders.encode_base64, \
106 *, policy=compat32, **_params)
Georg Brandl116aa622007-08-15 14:28:22 +0000107
108 Module: :mod:`email.mime.application`
109
Georg Brandl3638e482009-04-27 16:46:17 +0000110 A subclass of :class:`~email.mime.nonmultipart.MIMENonMultipart`, the
111 :class:`MIMEApplication` class is used to represent MIME message objects of
112 major type :mimetype:`application`. *_data* is a string containing the raw
113 byte data. Optional *_subtype* specifies the MIME subtype and defaults to
114 :mimetype:`octet-stream`.
Georg Brandl116aa622007-08-15 14:28:22 +0000115
116 Optional *_encoder* is a callable (i.e. function) which will perform the actual
117 encoding of the data for transport. This callable takes one argument, which is
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +0300118 the :class:`MIMEApplication` instance. It should use
119 :meth:`~email.message.Message.get_payload` and
120 :meth:`~email.message.Message.set_payload` to change the payload to encoded
121 form. It should also add
Georg Brandl116aa622007-08-15 14:28:22 +0000122 any :mailheader:`Content-Transfer-Encoding` or other headers to the message
123 object as necessary. The default encoding is base64. See the
124 :mod:`email.encoders` module for a list of the built-in encoders.
125
R David Murray56b1f1b2016-09-07 16:48:35 -0400126 Optional *policy* argument defaults to :class:`compat32 <email.policy.Compat32>`.
127
Georg Brandl116aa622007-08-15 14:28:22 +0000128 *_params* are passed straight through to the base class constructor.
129
R David Murray56b1f1b2016-09-07 16:48:35 -0400130 .. versionchanged:: 3.6
131 Added *policy* keyword-only parameter.
Georg Brandl116aa622007-08-15 14:28:22 +0000132
Benjamin Peterson75edad02009-01-01 15:05:06 +0000133.. currentmodule:: email.mime.audio
134
R David Murray56b1f1b2016-09-07 16:48:35 -0400135.. class:: MIMEAudio(_audiodata, _subtype=None, \
136 _encoder=email.encoders.encode_base64, \
137 *, policy=compat32, **_params)
Georg Brandl116aa622007-08-15 14:28:22 +0000138
139 Module: :mod:`email.mime.audio`
140
Georg Brandl3638e482009-04-27 16:46:17 +0000141 A subclass of :class:`~email.mime.nonmultipart.MIMENonMultipart`, the
142 :class:`MIMEAudio` class is used to create MIME message objects of major type
143 :mimetype:`audio`. *_audiodata* is a string containing the raw audio data. If
144 this data can be decoded by the standard Python module :mod:`sndhdr`, then the
145 subtype will be automatically included in the :mailheader:`Content-Type` header.
146 Otherwise you can explicitly specify the audio subtype via the *_subtype*
Ezio Melotti93115e02013-03-20 13:53:32 +0200147 argument. If the minor type could not be guessed and *_subtype* was not given,
Georg Brandl3638e482009-04-27 16:46:17 +0000148 then :exc:`TypeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000149
150 Optional *_encoder* is a callable (i.e. function) which will perform the actual
151 encoding of the audio data for transport. This callable takes one argument,
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +0300152 which is the :class:`MIMEAudio` instance. It should use
153 :meth:`~email.message.Message.get_payload` and
154 :meth:`~email.message.Message.set_payload` to change the payload to encoded
155 form. It should also add
Georg Brandl116aa622007-08-15 14:28:22 +0000156 any :mailheader:`Content-Transfer-Encoding` or other headers to the message
157 object as necessary. The default encoding is base64. See the
158 :mod:`email.encoders` module for a list of the built-in encoders.
159
R David Murray56b1f1b2016-09-07 16:48:35 -0400160 Optional *policy* argument defaults to :class:`compat32 <email.policy.Compat32>`.
161
Georg Brandl116aa622007-08-15 14:28:22 +0000162 *_params* are passed straight through to the base class constructor.
163
R David Murray56b1f1b2016-09-07 16:48:35 -0400164 .. versionchanged:: 3.6
165 Added *policy* keyword-only parameter.
Georg Brandl116aa622007-08-15 14:28:22 +0000166
Benjamin Peterson75edad02009-01-01 15:05:06 +0000167.. currentmodule:: email.mime.image
168
R David Murray56b1f1b2016-09-07 16:48:35 -0400169.. class:: MIMEImage(_imagedata, _subtype=None, \
170 _encoder=email.encoders.encode_base64, \
171 *, policy=compat32, **_params)
Georg Brandl116aa622007-08-15 14:28:22 +0000172
173 Module: :mod:`email.mime.image`
174
Georg Brandl3638e482009-04-27 16:46:17 +0000175 A subclass of :class:`~email.mime.nonmultipart.MIMENonMultipart`, the
176 :class:`MIMEImage` class is used to create MIME message objects of major type
177 :mimetype:`image`. *_imagedata* is a string containing the raw image data. If
178 this data can be decoded by the standard Python module :mod:`imghdr`, then the
179 subtype will be automatically included in the :mailheader:`Content-Type` header.
180 Otherwise you can explicitly specify the image subtype via the *_subtype*
Ezio Melotti93115e02013-03-20 13:53:32 +0200181 argument. If the minor type could not be guessed and *_subtype* was not given,
Georg Brandl3638e482009-04-27 16:46:17 +0000182 then :exc:`TypeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000183
184 Optional *_encoder* is a callable (i.e. function) which will perform the actual
185 encoding of the image data for transport. This callable takes one argument,
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +0300186 which is the :class:`MIMEImage` instance. It should use
187 :meth:`~email.message.Message.get_payload` and
188 :meth:`~email.message.Message.set_payload` to change the payload to encoded
189 form. It should also add
Georg Brandl116aa622007-08-15 14:28:22 +0000190 any :mailheader:`Content-Transfer-Encoding` or other headers to the message
191 object as necessary. The default encoding is base64. See the
192 :mod:`email.encoders` module for a list of the built-in encoders.
193
R David Murray56b1f1b2016-09-07 16:48:35 -0400194 Optional *policy* argument defaults to :class:`compat32 <email.policy.Compat32>`.
195
Georg Brandl3638e482009-04-27 16:46:17 +0000196 *_params* are passed straight through to the :class:`~email.mime.base.MIMEBase`
197 constructor.
Georg Brandl116aa622007-08-15 14:28:22 +0000198
R David Murray56b1f1b2016-09-07 16:48:35 -0400199 .. versionchanged:: 3.6
200 Added *policy* keyword-only parameter.
Georg Brandl116aa622007-08-15 14:28:22 +0000201
Benjamin Peterson75edad02009-01-01 15:05:06 +0000202.. currentmodule:: email.mime.message
203
R David Murray56b1f1b2016-09-07 16:48:35 -0400204.. class:: MIMEMessage(_msg, _subtype='rfc822', *, policy=compat32)
Georg Brandl116aa622007-08-15 14:28:22 +0000205
206 Module: :mod:`email.mime.message`
207
Georg Brandl3638e482009-04-27 16:46:17 +0000208 A subclass of :class:`~email.mime.nonmultipart.MIMENonMultipart`, the
209 :class:`MIMEMessage` class is used to create MIME objects of main type
210 :mimetype:`message`. *_msg* is used as the payload, and must be an instance
211 of class :class:`~email.message.Message` (or a subclass thereof), otherwise
212 a :exc:`TypeError` is raised.
Georg Brandl116aa622007-08-15 14:28:22 +0000213
214 Optional *_subtype* sets the subtype of the message; it defaults to
215 :mimetype:`rfc822`.
216
R David Murray56b1f1b2016-09-07 16:48:35 -0400217 Optional *policy* argument defaults to :class:`compat32 <email.policy.Compat32>`.
218
219 .. versionchanged:: 3.6
220 Added *policy* keyword-only parameter.
Georg Brandl116aa622007-08-15 14:28:22 +0000221
Benjamin Peterson75edad02009-01-01 15:05:06 +0000222.. currentmodule:: email.mime.text
223
R David Murray56b1f1b2016-09-07 16:48:35 -0400224.. class:: MIMEText(_text, _subtype='plain', _charset=None, *, policy=compat32)
Georg Brandl116aa622007-08-15 14:28:22 +0000225
226 Module: :mod:`email.mime.text`
227
Georg Brandl3638e482009-04-27 16:46:17 +0000228 A subclass of :class:`~email.mime.nonmultipart.MIMENonMultipart`, the
229 :class:`MIMEText` class is used to create MIME objects of major type
230 :mimetype:`text`. *_text* is the string for the payload. *_subtype* is the
231 minor type and defaults to :mimetype:`plain`. *_charset* is the character
Ezio Melotti93115e02013-03-20 13:53:32 +0200232 set of the text and is passed as an argument to the
Georg Brandl3638e482009-04-27 16:46:17 +0000233 :class:`~email.mime.nonmultipart.MIMENonMultipart` constructor; it defaults
Georg Brandl3be472b2015-01-14 08:26:30 +0100234 to ``us-ascii`` if the string contains only ``ascii`` code points, and
Berker Peksagfe21e4d2014-09-27 00:57:29 +0300235 ``utf-8`` otherwise. The *_charset* parameter accepts either a string or a
236 :class:`~email.charset.Charset` instance.
R David Murray14b01242013-03-19 18:18:55 -0400237
Ezio Melotti93115e02013-03-20 13:53:32 +0200238 Unless the *_charset* argument is explicitly set to ``None``, the
R David Murray14b01242013-03-19 18:18:55 -0400239 MIMEText object created will have both a :mailheader:`Content-Type` header
240 with a ``charset`` parameter, and a :mailheader:`Content-Transfer-Endcoding`
241 header. This means that a subsequent ``set_payload`` call will not result
242 in an encoded payload, even if a charset is passed in the ``set_payload``
243 command. You can "reset" this behavior by deleting the
244 ``Content-Transfer-Encoding`` header, after which a ``set_payload`` call
245 will automatically encode the new payload (and add a new
246 :mailheader:`Content-Transfer-Encoding` header).
Berker Peksagfe21e4d2014-09-27 00:57:29 +0300247
R David Murray56b1f1b2016-09-07 16:48:35 -0400248 Optional *policy* argument defaults to :class:`compat32 <email.policy.Compat32>`.
249
Berker Peksagfe21e4d2014-09-27 00:57:29 +0300250 .. versionchanged:: 3.5
251 *_charset* also accepts :class:`~email.charset.Charset` instances.
R David Murray56b1f1b2016-09-07 16:48:35 -0400252
253 .. versionchanged:: 3.6
254 Added *policy* keyword-only parameter.