blob: 045b11930305e8bc5ffa8308a63812f251a1036a [file] [log] [blame]
R David Murray79cf3ba2012-05-27 17:10:36 -04001:mod:`email.policy`: Policy Objects
2-----------------------------------
R David Murray3edd22a2011-04-18 13:59:37 -04003
4.. module:: email.policy
5 :synopsis: Controlling the parsing and generating of messages
6
R David Murray79cf3ba2012-05-27 17:10:36 -04007.. moduleauthor:: R. David Murray <rdmurray@bitdance.com>
8.. sectionauthor:: R. David Murray <rdmurray@bitdance.com>
9
Éric Araujo54dbfbd2011-08-10 21:43:13 +020010.. versionadded:: 3.3
R David Murray6a45d3b2011-04-18 16:00:47 -040011
R David Murray3edd22a2011-04-18 13:59:37 -040012
13The :mod:`email` package's prime focus is the handling of email messages as
14described by the various email and MIME RFCs. However, the general format of
15email messages (a block of header fields each consisting of a name followed by
16a colon followed by a value, the whole block followed by a blank line and an
17arbitrary 'body'), is a format that has found utility outside of the realm of
18email. Some of these uses conform fairly closely to the main RFCs, some do
19not. And even when working with email, there are times when it is desirable to
20break strict compliance with the RFCs.
21
R David Murray6a45d3b2011-04-18 16:00:47 -040022Policy objects give the email package the flexibility to handle all these
23disparate use cases.
R David Murray3edd22a2011-04-18 13:59:37 -040024
25A :class:`Policy` object encapsulates a set of attributes and methods that
26control the behavior of various components of the email package during use.
27:class:`Policy` instances can be passed to various classes and methods in the
28email package to alter the default behavior. The settable values and their
R David Murrayc27e5222012-05-25 15:01:48 -040029defaults are described below.
R David Murray3edd22a2011-04-18 13:59:37 -040030
R David Murrayc27e5222012-05-25 15:01:48 -040031There is a default policy used by all classes in the email package. This
32policy is named :class:`Compat32`, with a corresponding pre-defined instance
33named :const:`compat32`. It provides for complete backward compatibility (in
34some cases, including bug compatibility) with the pre-Python3.3 version of the
35email package.
36
37The first part of this documentation covers the features of :class:`Policy`, an
38:term:`abstract base class` that defines the features that are common to all
39policy objects, including :const:`compat32`. This includes certain hook
40methods that are called internally by the email package, which a custom policy
41could override to obtain different behavior.
42
43When a :class:`~email.message.Message` object is created, it acquires a policy.
44By default this will be :const:`compat32`, but a different policy can be
45specified. If the ``Message`` is created by a :mod:`~email.parser`, a policy
46passed to the parser will be the policy used by the ``Message`` it creates. If
47the ``Message`` is created by the program, then the policy can be specified
48when it is created. When a ``Message`` is passed to a :mod:`~email.generator`,
49the generator uses the policy from the ``Message`` by default, but you can also
50pass a specific policy to the generator that will override the one stored on
51the ``Message`` object.
52
53:class:`Policy` instances are immutable, but they can be cloned, accepting the
54same keyword arguments as the class constructor and returning a new
55:class:`Policy` instance that is a copy of the original but with the specified
56attributes values changed.
R David Murray3edd22a2011-04-18 13:59:37 -040057
58As an example, the following code could be used to read an email message from a
R David Murrayfdfb0052013-07-29 15:49:58 -040059file on disk and pass it to the system ``sendmail`` program on a Unix system:
R David Murray3edd22a2011-04-18 13:59:37 -040060
R David Murrayfdfb0052013-07-29 15:49:58 -040061.. testsetup::
62
63 >>> from unittest import mock
64 >>> mocker = mock.patch('subprocess.Popen')
65 >>> m = mocker.start()
66 >>> proc = mock.MagicMock()
67 >>> m.return_value = proc
68 >>> proc.stdin.close.return_value = None
69 >>> mymsg = open('mymsg.txt', 'w')
70 >>> mymsg.write('To: abc@xyz.com\n\n')
71 17
72 >>> mymsg.flush()
73
74.. doctest::
75
76 >>> from email import message_from_binary_file
R David Murray3edd22a2011-04-18 13:59:37 -040077 >>> from email.generator import BytesGenerator
R David Murrayfdfb0052013-07-29 15:49:58 -040078 >>> from email import policy
R David Murray3edd22a2011-04-18 13:59:37 -040079 >>> from subprocess import Popen, PIPE
R David Murrayfdfb0052013-07-29 15:49:58 -040080 >>> with open('mymsg.txt', 'rb') as f:
81 ... msg = message_from_binary_file(f, policy=policy.default)
82 >>> p = Popen(['sendmail', msg['To'].addresses[0]], stdin=PIPE)
R David Murrayc27e5222012-05-25 15:01:48 -040083 >>> g = BytesGenerator(p.stdin, policy=msg.policy.clone(linesep='\r\n'))
R David Murray3edd22a2011-04-18 13:59:37 -040084 >>> g.flatten(msg)
85 >>> p.stdin.close()
86 >>> rc = p.wait()
87
R David Murray11bfd322013-07-30 14:42:40 -040088.. testsetup::
R David Murrayfdfb0052013-07-29 15:49:58 -040089
90 >>> mymsg.close()
91 >>> mocker.stop()
92 >>> import os
93 >>> os.remove('mymsg.txt')
94
R David Murrayc27e5222012-05-25 15:01:48 -040095Here we are telling :class:`~email.generator.BytesGenerator` to use the RFC
96correct line separator characters when creating the binary string to feed into
97``sendmail's`` ``stdin``, where the default policy would use ``\n`` line
98separators.
Éric Araujofe0472e2011-12-03 16:00:56 +010099
R David Murray3edd22a2011-04-18 13:59:37 -0400100Some email package methods accept a *policy* keyword argument, allowing the
R David Murray6a45d3b2011-04-18 16:00:47 -0400101policy to be overridden for that method. For example, the following code uses
Barry Warsaw904c4812014-12-19 11:20:00 -0500102the :meth:`~email.message.Message.as_bytes` method of the *msg* object from
R David Murrayc27e5222012-05-25 15:01:48 -0400103the previous example and writes the message to a file using the native line
104separators for the platform on which it is running::
R David Murray3edd22a2011-04-18 13:59:37 -0400105
106 >>> import os
R David Murray3edd22a2011-04-18 13:59:37 -0400107 >>> with open('converted.txt', 'wb') as f:
R David Murraybb17d2b2013-08-09 16:15:28 -0400108 ... f.write(msg.as_bytes(policy=msg.policy.clone(linesep=os.linesep)))
109 17
R David Murray3edd22a2011-04-18 13:59:37 -0400110
111Policy objects can also be combined using the addition operator, producing a
112policy object whose settings are a combination of the non-default values of the
113summed objects::
114
R David Murrayfdfb0052013-07-29 15:49:58 -0400115 >>> compat_SMTP = policy.compat32.clone(linesep='\r\n')
116 >>> compat_strict = policy.compat32.clone(raise_on_defect=True)
R David Murrayc27e5222012-05-25 15:01:48 -0400117 >>> compat_strict_SMTP = compat_SMTP + compat_strict
R David Murray3edd22a2011-04-18 13:59:37 -0400118
119This operation is not commutative; that is, the order in which the objects are
120added matters. To illustrate::
121
R David Murrayfdfb0052013-07-29 15:49:58 -0400122 >>> policy100 = policy.compat32.clone(max_line_length=100)
123 >>> policy80 = policy.compat32.clone(max_line_length=80)
124 >>> apolicy = policy100 + policy80
R David Murray3edd22a2011-04-18 13:59:37 -0400125 >>> apolicy.max_line_length
126 80
R David Murrayc27e5222012-05-25 15:01:48 -0400127 >>> apolicy = policy80 + policy100
R David Murray3edd22a2011-04-18 13:59:37 -0400128 >>> apolicy.max_line_length
129 100
130
131
132.. class:: Policy(**kw)
133
R David Murrayc27e5222012-05-25 15:01:48 -0400134 This is the :term:`abstract base class` for all policy classes. It provides
135 default implementations for a couple of trivial methods, as well as the
136 implementation of the immutability property, the :meth:`clone` method, and
137 the constructor semantics.
138
139 The constructor of a policy class can be passed various keyword arguments.
140 The arguments that may be specified are any non-method properties on this
141 class, plus any additional non-method properties on the concrete class. A
142 value specified in the constructor will override the default value for the
143 corresponding attribute.
144
145 This class defines the following properties, and thus values for the
146 following may be passed in the constructor of any policy class:
R David Murray3edd22a2011-04-18 13:59:37 -0400147
148 .. attribute:: max_line_length
149
150 The maximum length of any line in the serialized output, not counting the
151 end of line character(s). Default is 78, per :rfc:`5322`. A value of
152 ``0`` or :const:`None` indicates that no line wrapping should be
153 done at all.
154
155 .. attribute:: linesep
156
157 The string to be used to terminate lines in serialized output. The
R David Murray6a45d3b2011-04-18 16:00:47 -0400158 default is ``\n`` because that's the internal end-of-line discipline used
R David Murrayc27e5222012-05-25 15:01:48 -0400159 by Python, though ``\r\n`` is required by the RFCs.
R David Murray3edd22a2011-04-18 13:59:37 -0400160
R David Murrayc27e5222012-05-25 15:01:48 -0400161 .. attribute:: cte_type
R David Murray3edd22a2011-04-18 13:59:37 -0400162
R David Murrayc27e5222012-05-25 15:01:48 -0400163 Controls the type of Content Transfer Encodings that may be or are
164 required to be used. The possible values are:
165
Georg Brandl44ea77b2013-03-28 13:28:44 +0100166 .. tabularcolumns:: |l|L|
167
R David Murrayc27e5222012-05-25 15:01:48 -0400168 ======== ===============================================================
169 ``7bit`` all data must be "7 bit clean" (ASCII-only). This means that
170 where necessary data will be encoded using either
171 quoted-printable or base64 encoding.
172
173 ``8bit`` data is not constrained to be 7 bit clean. Data in headers is
174 still required to be ASCII-only and so will be encoded (see
175 'binary_fold' below for an exception), but body parts may use
176 the ``8bit`` CTE.
177 ======== ===============================================================
178
179 A ``cte_type`` value of ``8bit`` only works with ``BytesGenerator``, not
180 ``Generator``, because strings cannot contain binary data. If a
181 ``Generator`` is operating under a policy that specifies
182 ``cte_type=8bit``, it will act as if ``cte_type`` is ``7bit``.
R David Murray3edd22a2011-04-18 13:59:37 -0400183
184 .. attribute:: raise_on_defect
185
186 If :const:`True`, any defects encountered will be raised as errors. If
187 :const:`False` (the default), defects will be passed to the
188 :meth:`register_defect` method.
189
R David Murrayfdb23c22015-05-17 14:24:33 -0400190
191
192 .. attribute:: mangle_from\_
193
194 If :const:`True`, lines starting with *"From "* in the body are
195 escaped by putting a ``>`` in front of them. This parameter is used when
196 the message is being serialized by a generator.
197 Default: :const:`False`.
198
199 .. versionadded:: 3.5
200 The *mangle_from_* parameter.
201
R David Murrayc27e5222012-05-25 15:01:48 -0400202 The following :class:`Policy` method is intended to be called by code using
203 the email library to create policy instances with custom settings:
R David Murray6a45d3b2011-04-18 16:00:47 -0400204
R David Murrayc27e5222012-05-25 15:01:48 -0400205 .. method:: clone(**kw)
R David Murray3edd22a2011-04-18 13:59:37 -0400206
207 Return a new :class:`Policy` instance whose attributes have the same
208 values as the current instance, except where those attributes are
209 given new values by the keyword arguments.
210
R David Murrayc27e5222012-05-25 15:01:48 -0400211 The remaining :class:`Policy` methods are called by the email package code,
212 and are not intended to be called by an application using the email package.
213 A custom policy must implement all of these methods.
R David Murray3edd22a2011-04-18 13:59:37 -0400214
R David Murrayc27e5222012-05-25 15:01:48 -0400215 .. method:: handle_defect(obj, defect)
R David Murray3edd22a2011-04-18 13:59:37 -0400216
R David Murrayc27e5222012-05-25 15:01:48 -0400217 Handle a *defect* found on *obj*. When the email package calls this
218 method, *defect* will always be a subclass of
219 :class:`~email.errors.Defect`.
R David Murray3edd22a2011-04-18 13:59:37 -0400220
R David Murrayc27e5222012-05-25 15:01:48 -0400221 The default implementation checks the :attr:`raise_on_defect` flag. If
222 it is ``True``, *defect* is raised as an exception. If it is ``False``
223 (the default), *obj* and *defect* are passed to :meth:`register_defect`.
R David Murray3edd22a2011-04-18 13:59:37 -0400224
R David Murrayc27e5222012-05-25 15:01:48 -0400225 .. method:: register_defect(obj, defect)
R David Murray3edd22a2011-04-18 13:59:37 -0400226
R David Murrayc27e5222012-05-25 15:01:48 -0400227 Register a *defect* on *obj*. In the email package, *defect* will always
228 be a subclass of :class:`~email.errors.Defect`.
R David Murray3edd22a2011-04-18 13:59:37 -0400229
R David Murrayc27e5222012-05-25 15:01:48 -0400230 The default implementation calls the ``append`` method of the ``defects``
231 attribute of *obj*. When the email package calls :attr:`handle_defect`,
232 *obj* will normally have a ``defects`` attribute that has an ``append``
233 method. Custom object types used with the email package (for example,
234 custom ``Message`` objects) should also provide such an attribute,
235 otherwise defects in parsed messages will raise unexpected errors.
R David Murray3edd22a2011-04-18 13:59:37 -0400236
R David Murrayabfc3742012-05-29 09:14:44 -0400237 .. method:: header_max_count(name)
238
239 Return the maximum allowed number of headers named *name*.
240
241 Called when a header is added to a :class:`~email.message.Message`
242 object. If the returned value is not ``0`` or ``None``, and there are
243 already a number of headers with the name *name* equal to the value
244 returned, a :exc:`ValueError` is raised.
245
246 Because the default behavior of ``Message.__setitem__`` is to append the
247 value to the list of headers, it is easy to create duplicate headers
248 without realizing it. This method allows certain headers to be limited
249 in the number of instances of that header that may be added to a
250 ``Message`` programmatically. (The limit is not observed by the parser,
251 which will faithfully produce as many headers as exist in the message
252 being parsed.)
253
254 The default implementation returns ``None`` for all header names.
255
R David Murrayc27e5222012-05-25 15:01:48 -0400256 .. method:: header_source_parse(sourcelines)
R David Murray3edd22a2011-04-18 13:59:37 -0400257
R David Murrayc27e5222012-05-25 15:01:48 -0400258 The email package calls this method with a list of strings, each string
259 ending with the line separation characters found in the source being
260 parsed. The first line includes the field header name and separator.
261 All whitespace in the source is preserved. The method should return the
262 ``(name, value)`` tuple that is to be stored in the ``Message`` to
263 represent the parsed header.
R David Murray3edd22a2011-04-18 13:59:37 -0400264
R David Murrayc27e5222012-05-25 15:01:48 -0400265 If an implementation wishes to retain compatibility with the existing
266 email package policies, *name* should be the case preserved name (all
267 characters up to the '``:``' separator), while *value* should be the
268 unfolded value (all line separator characters removed, but whitespace
269 kept intact), stripped of leading whitespace.
R David Murray3edd22a2011-04-18 13:59:37 -0400270
R David Murrayc27e5222012-05-25 15:01:48 -0400271 *sourcelines* may contain surrogateescaped binary data.
272
273 There is no default implementation
274
275 .. method:: header_store_parse(name, value)
276
277 The email package calls this method with the name and value provided by
278 the application program when the application program is modifying a
279 ``Message`` programmatically (as opposed to a ``Message`` created by a
280 parser). The method should return the ``(name, value)`` tuple that is to
281 be stored in the ``Message`` to represent the header.
282
283 If an implementation wishes to retain compatibility with the existing
284 email package policies, the *name* and *value* should be strings or
285 string subclasses that do not change the content of the passed in
286 arguments.
287
288 There is no default implementation
289
290 .. method:: header_fetch_parse(name, value)
291
292 The email package calls this method with the *name* and *value* currently
293 stored in the ``Message`` when that header is requested by the
294 application program, and whatever the method returns is what is passed
295 back to the application as the value of the header being retrieved.
296 Note that there may be more than one header with the same name stored in
297 the ``Message``; the method is passed the specific name and value of the
298 header destined to be returned to the application.
299
300 *value* may contain surrogateescaped binary data. There should be no
301 surrogateescaped binary data in the value returned by the method.
302
303 There is no default implementation
304
305 .. method:: fold(name, value)
306
307 The email package calls this method with the *name* and *value* currently
308 stored in the ``Message`` for a given header. The method should return a
309 string that represents that header "folded" correctly (according to the
310 policy settings) by composing the *name* with the *value* and inserting
311 :attr:`linesep` characters at the appropriate places. See :rfc:`5322`
312 for a discussion of the rules for folding email headers.
313
314 *value* may contain surrogateescaped binary data. There should be no
315 surrogateescaped binary data in the string returned by the method.
316
317 .. method:: fold_binary(name, value)
318
319 The same as :meth:`fold`, except that the returned value should be a
320 bytes object rather than a string.
321
322 *value* may contain surrogateescaped binary data. These could be
323 converted back into binary data in the returned bytes object.
324
325
326.. class:: Compat32(**kw)
327
328 This concrete :class:`Policy` is the backward compatibility policy. It
329 replicates the behavior of the email package in Python 3.2. The
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +0300330 :mod:`~email.policy` module also defines an instance of this class,
R David Murrayc27e5222012-05-25 15:01:48 -0400331 :const:`compat32`, that is used as the default policy. Thus the default
332 behavior of the email package is to maintain compatibility with Python 3.2.
333
R David Murrayfdb23c22015-05-17 14:24:33 -0400334 The following attributes have values that are different from the
335 :class:`Policy` default:
336
337 .. attribute:: mangle_from_
338
339 The default is ``True``.
340
R David Murrayc27e5222012-05-25 15:01:48 -0400341 The class provides the following concrete implementations of the
342 abstract methods of :class:`Policy`:
343
344 .. method:: header_source_parse(sourcelines)
345
346 The name is parsed as everything up to the '``:``' and returned
347 unmodified. The value is determined by stripping leading whitespace off
348 the remainder of the first line, joining all subsequent lines together,
349 and stripping any trailing carriage return or linefeed characters.
350
351 .. method:: header_store_parse(name, value)
352
353 The name and value are returned unmodified.
354
355 .. method:: header_fetch_parse(name, value)
356
357 If the value contains binary data, it is converted into a
358 :class:`~email.header.Header` object using the ``unknown-8bit`` charset.
359 Otherwise it is returned unmodified.
360
361 .. method:: fold(name, value)
362
363 Headers are folded using the :class:`~email.header.Header` folding
364 algorithm, which preserves existing line breaks in the value, and wraps
365 each resulting line to the ``max_line_length``. Non-ASCII binary data are
366 CTE encoded using the ``unknown-8bit`` charset.
367
368 .. method:: fold_binary(name, value)
369
370 Headers are folded using the :class:`~email.header.Header` folding
371 algorithm, which preserves existing line breaks in the value, and wraps
372 each resulting line to the ``max_line_length``. If ``cte_type`` is
373 ``7bit``, non-ascii binary data is CTE encoded using the ``unknown-8bit``
374 charset. Otherwise the original source header is used, with its existing
Terry Jan Reedy0f847642013-03-11 18:34:00 -0400375 line breaks and any (RFC invalid) binary data it may contain.
R David Murray0b6f6c82012-05-25 18:42:14 -0400376
377
R David Murrayfdb23c22015-05-17 14:24:33 -0400378An instance of :class:`Compat32` is provided as a module constant:
379
380.. data:: compat32
381
382 An instance of :class:`Compat32`, providing backward compatibility with the
383 behavior of the email package in Python 3.2.
384
385
R David Murray0b6f6c82012-05-25 18:42:14 -0400386.. note::
387
R David Murrayea976682012-05-27 15:03:38 -0400388 The documentation below describes new policies that are included in the
389 standard library on a :term:`provisional basis <provisional package>`.
390 Backwards incompatible changes (up to and including removal of the feature)
391 may occur if deemed necessary by the core developers.
R David Murray0b6f6c82012-05-25 18:42:14 -0400392
393
394.. class:: EmailPolicy(**kw)
395
396 This concrete :class:`Policy` provides behavior that is intended to be fully
397 compliant with the current email RFCs. These include (but are not limited
398 to) :rfc:`5322`, :rfc:`2047`, and the current MIME RFCs.
399
400 This policy adds new header parsing and folding algorithms. Instead of
R David Murray3da240f2013-10-16 22:48:40 -0400401 simple strings, headers are ``str`` subclasses with attributes that depend
R David Murray0b6f6c82012-05-25 18:42:14 -0400402 on the type of the field. The parsing and folding algorithm fully implement
403 :rfc:`2047` and :rfc:`5322`.
404
405 In addition to the settable attributes listed above that apply to all
406 policies, this policy adds the following additional attributes:
407
R David Murray224ef3e2015-05-17 11:29:21 -0400408 .. attribute:: utf8
409
410 If ``False``, follow :rfc:`5322`, supporting non-ASCII characters in
411 headers by encoding them as "encoded words". If ``True``, follow
412 :rfc:`6532` and use ``utf-8`` encoding for headers. Messages
413 formatted in this way may be passed to SMTP servers that support
414 the ``SMTPUTF8`` extension (:rfc:`6531`).
415
R David Murray0b6f6c82012-05-25 18:42:14 -0400416 .. attribute:: refold_source
417
418 If the value for a header in the ``Message`` object originated from a
419 :mod:`~email.parser` (as opposed to being set by a program), this
420 attribute indicates whether or not a generator should refold that value
421 when transforming the message back into stream form. The possible values
422 are:
423
424 ======== ===============================================================
425 ``none`` all source values use original folding
426
427 ``long`` source values that have any line that is longer than
428 ``max_line_length`` will be refolded
429
430 ``all`` all values are refolded.
431 ======== ===============================================================
432
433 The default is ``long``.
434
435 .. attribute:: header_factory
436
437 A callable that takes two arguments, ``name`` and ``value``, where
438 ``name`` is a header field name and ``value`` is an unfolded header field
R David Murrayea976682012-05-27 15:03:38 -0400439 value, and returns a string subclass that represents that header. A
440 default ``header_factory`` (see :mod:`~email.headerregistry`) is provided
441 that understands some of the :RFC:`5322` header field types. (Currently
442 address fields and date fields have special treatment, while all other
443 fields are treated as unstructured. This list will be completed before
444 the extension is marked stable.)
R David Murray0b6f6c82012-05-25 18:42:14 -0400445
R David Murray3da240f2013-10-16 22:48:40 -0400446 .. attribute:: content_manager
447
448 An object with at least two methods: get_content and set_content. When
449 the :meth:`~email.message.Message.get_content` or
450 :meth:`~email.message.Message.set_content` method of a
451 :class:`~email.message.Message` object is called, it calls the
452 corresponding method of this object, passing it the message object as its
453 first argument, and any arguments or keywords that were passed to it as
454 additional arguments. By default ``content_manager`` is set to
455 :data:`~email.contentmanager.raw_data_manager`.
456
Larry Hastings3732ed22014-03-15 21:13:56 -0700457 .. versionadded:: 3.4
R David Murray3da240f2013-10-16 22:48:40 -0400458
459
R David Murray0b6f6c82012-05-25 18:42:14 -0400460 The class provides the following concrete implementations of the abstract
461 methods of :class:`Policy`:
462
R David Murrayabfc3742012-05-29 09:14:44 -0400463 .. method:: header_max_count(name)
464
465 Returns the value of the
466 :attr:`~email.headerregistry.BaseHeader.max_count` attribute of the
467 specialized class used to represent the header with the given name.
468
R David Murray0b6f6c82012-05-25 18:42:14 -0400469 .. method:: header_source_parse(sourcelines)
470
471 The implementation of this method is the same as that for the
472 :class:`Compat32` policy.
473
474 .. method:: header_store_parse(name, value)
475
476 The name is returned unchanged. If the input value has a ``name``
477 attribute and it matches *name* ignoring case, the value is returned
478 unchanged. Otherwise the *name* and *value* are passed to
R David Murray3da240f2013-10-16 22:48:40 -0400479 ``header_factory``, and the resulting header object is returned as
R David Murray0b6f6c82012-05-25 18:42:14 -0400480 the value. In this case a ``ValueError`` is raised if the input value
481 contains CR or LF characters.
482
483 .. method:: header_fetch_parse(name, value)
484
485 If the value has a ``name`` attribute, it is returned to unmodified.
486 Otherwise the *name*, and the *value* with any CR or LF characters
R David Murray3da240f2013-10-16 22:48:40 -0400487 removed, are passed to the ``header_factory``, and the resulting
R David Murray0b6f6c82012-05-25 18:42:14 -0400488 header object is returned. Any surrogateescaped bytes get turned into
489 the unicode unknown-character glyph.
490
491 .. method:: fold(name, value)
492
493 Header folding is controlled by the :attr:`refold_source` policy setting.
494 A value is considered to be a 'source value' if and only if it does not
495 have a ``name`` attribute (having a ``name`` attribute means it is a
496 header object of some sort). If a source value needs to be refolded
R David Murray3da240f2013-10-16 22:48:40 -0400497 according to the policy, it is converted into a header object by
R David Murray0b6f6c82012-05-25 18:42:14 -0400498 passing the *name* and the *value* with any CR and LF characters removed
R David Murray3da240f2013-10-16 22:48:40 -0400499 to the ``header_factory``. Folding of a header object is done by
R David Murray0b6f6c82012-05-25 18:42:14 -0400500 calling its ``fold`` method with the current policy.
501
502 Source values are split into lines using :meth:`~str.splitlines`. If
503 the value is not to be refolded, the lines are rejoined using the
504 ``linesep`` from the policy and returned. The exception is lines
505 containing non-ascii binary data. In that case the value is refolded
506 regardless of the ``refold_source`` setting, which causes the binary data
507 to be CTE encoded using the ``unknown-8bit`` charset.
508
509 .. method:: fold_binary(name, value)
510
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +0300511 The same as :meth:`fold` if :attr:`~Policy.cte_type` is ``7bit``, except
512 that the returned value is bytes.
R David Murray0b6f6c82012-05-25 18:42:14 -0400513
Serhiy Storchakae0f0cf42013-08-19 09:59:18 +0300514 If :attr:`~Policy.cte_type` is ``8bit``, non-ASCII binary data is
515 converted back
R David Murray0b6f6c82012-05-25 18:42:14 -0400516 into bytes. Headers with binary data are not refolded, regardless of the
517 ``refold_header`` setting, since there is no way to know whether the
518 binary data consists of single byte characters or multibyte characters.
519
520The following instances of :class:`EmailPolicy` provide defaults suitable for
521specific application domains. Note that in the future the behavior of these
Georg Brandl38e0e1e2012-05-27 09:31:10 +0200522instances (in particular the ``HTTP`` instance) may be adjusted to conform even
R David Murray0b6f6c82012-05-25 18:42:14 -0400523more closely to the RFCs relevant to their domains.
524
525.. data:: default
526
527 An instance of ``EmailPolicy`` with all defaults unchanged. This policy
528 uses the standard Python ``\n`` line endings rather than the RFC-correct
529 ``\r\n``.
530
531.. data:: SMTP
532
533 Suitable for serializing messages in conformance with the email RFCs.
534 Like ``default``, but with ``linesep`` set to ``\r\n``, which is RFC
535 compliant.
536
R David Murray1dbee942015-05-17 19:36:16 -0400537.. data:: SMTPUTF8
538
539 The same as ``SMTP`` except that :attr:`~EmailPolicy.utf8` is ``True``.
540 Useful for serializing messages to a message store without using encoded
541 words in the headers. Should only be used for SMTP trasmission if the
542 sender or recipient addresses have non-ASCII characters (the
543 :meth:`smtplib.SMTP.send_message` method handles this automatically).
544
R David Murray0b6f6c82012-05-25 18:42:14 -0400545.. data:: HTTP
546
547 Suitable for serializing headers with for use in HTTP traffic. Like
548 ``SMTP`` except that ``max_line_length`` is set to ``None`` (unlimited).
549
550.. data:: strict
551
552 Convenience instance. The same as ``default`` except that
553 ``raise_on_defect`` is set to ``True``. This allows any policy to be made
554 strict by writing::
555
556 somepolicy + policy.strict
557
558With all of these :class:`EmailPolicies <.EmailPolicy>`, the effective API of
559the email package is changed from the Python 3.2 API in the following ways:
560
561 * Setting a header on a :class:`~email.message.Message` results in that
R David Murray3da240f2013-10-16 22:48:40 -0400562 header being parsed and a header object created.
R David Murray0b6f6c82012-05-25 18:42:14 -0400563
564 * Fetching a header value from a :class:`~email.message.Message` results
R David Murray3da240f2013-10-16 22:48:40 -0400565 in that header being parsed and a header object created and
R David Murray0b6f6c82012-05-25 18:42:14 -0400566 returned.
567
R David Murray3da240f2013-10-16 22:48:40 -0400568 * Any header object, or any header that is refolded due to the
R David Murray0b6f6c82012-05-25 18:42:14 -0400569 policy settings, is folded using an algorithm that fully implements the
570 RFC folding algorithms, including knowing where encoded words are required
571 and allowed.
572
573From the application view, this means that any header obtained through the
R David Murray3da240f2013-10-16 22:48:40 -0400574:class:`~email.message.Message` is a header object with extra
R David Murray0b6f6c82012-05-25 18:42:14 -0400575attributes, whose string value is the fully decoded unicode value of the
576header. Likewise, a header may be assigned a new value, or a new header
577created, using a unicode string, and the policy will take care of converting
578the unicode string into the correct RFC encoded form.
579
R David Murray3da240f2013-10-16 22:48:40 -0400580The header objects and their attributes are described in
R David Murrayea976682012-05-27 15:03:38 -0400581:mod:`~email.headerregistry`.