1:mod:`quopri` --- Encode and decode MIME quoted-printable data
2==============================================================
3
4.. module:: quopri
5   :synopsis: Encode and decode files using the MIME quoted-printable encoding.
6
7**Source code:** :source:`Lib/quopri.py`
8
9.. index::
10   pair: quoted-printable; encoding
11   single: MIME; quoted-printable encoding
12
13--------------
14
15This module performs quoted-printable transport encoding and decoding, as
16defined in :rfc:`1521`: "MIME (Multipurpose Internet Mail Extensions) Part One:
17Mechanisms for Specifying and Describing the Format of Internet Message Bodies".
18The quoted-printable encoding is designed for data where there are relatively
19few nonprintable characters; the base64 encoding scheme available via the
20:mod:`base64` module is more compact if there are many such characters, as when
21sending a graphics file.
22
23.. function:: decode(input, output, header=False)
24
25   Decode the contents of the *input* file and write the resulting decoded binary
26   data to the *output* file. *input* and *output* must be :term:`binary file objects
27   <file object>`.  If the optional argument *header* is present and true, underscore
28   will be decoded as space. This is used to decode "Q"-encoded headers as
29   described in :rfc:`1522`: "MIME (Multipurpose Internet Mail Extensions)
30   Part Two: Message Header Extensions for Non-ASCII Text".
31
32
33.. function:: encode(input, output, quotetabs, header=False)
34
35   Encode the contents of the *input* file and write the resulting quoted-printable
36   data to the *output* file. *input* and *output* must be
37   :term:`binary file objects <file object>`. *quotetabs*, a
38   non-optional flag which controls whether to encode embedded spaces
39   and tabs; when true it encodes such embedded whitespace, and when
40   false it leaves them unencoded.
41   Note that spaces and tabs appearing at the end of lines are always encoded,
42   as per :rfc:`1521`.  *header* is a flag which controls if spaces are encoded
43   as underscores as per :rfc:`1522`.
44
45
46.. function:: decodestring(s, header=False)
47
48   Like :func:`decode`, except that it accepts a source :class:`bytes` and
49   returns the corresponding decoded :class:`bytes`.
50
51
52.. function:: encodestring(s, quotetabs=False, header=False)
53
54   Like :func:`encode`, except that it accepts a source :class:`bytes` and
55   returns the corresponding encoded :class:`bytes`. By default, it sends a
56   ``False`` value to *quotetabs* parameter of the :func:`encode` function.
57
58
59
60.. seealso::
61
62   Module :mod:`base64`
63      Encode and decode MIME base64 data
64