blob: 4eded5b7662bd5d701a4cb28fa83d432031c89a1 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001: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
8.. index::
9 pair: quoted-printable; encoding
10 single: MIME; quoted-printable encoding
11
12This module performs quoted-printable transport encoding and decoding, as
13defined in :rfc:`1521`: "MIME (Multipurpose Internet Mail Extensions) Part One:
14Mechanisms for Specifying and Describing the Format of Internet Message Bodies".
15The quoted-printable encoding is designed for data where there are relatively
16few nonprintable characters; the base64 encoding scheme available via the
17:mod:`base64` module is more compact if there are many such characters, as when
18sending a graphics file.
19
Éric Araujo6e6cb8e2010-11-16 19:13:50 +000020.. seealso::
21
22 Latest version of the :source:`quopri module Python source code
23 <Lib/quopri.py>`
Georg Brandl116aa622007-08-15 14:28:22 +000024
Georg Brandl18244152009-09-02 20:34:52 +000025.. function:: decode(input, output, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000026
27 Decode the contents of the *input* file and write the resulting decoded binary
Antoine Pitrou11cb9612010-09-15 11:11:28 +000028 data to the *output* file. *input* and *output* must be :term:`file objects
29 <file object>`. *input* will be read until ``input.readline()`` returns an
30 empty string. If the optional argument *header* is present and true, underscore
31 will be decoded as space. This is used to decode "Q"-encoded headers as
32 described in :rfc:`1522`: "MIME (Multipurpose Internet Mail Extensions)
33 Part Two: Message Header Extensions for Non-ASCII Text".
Georg Brandl116aa622007-08-15 14:28:22 +000034
35
Georg Brandl18244152009-09-02 20:34:52 +000036.. function:: encode(input, output, quotetabs, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000037
38 Encode the contents of the *input* file and write the resulting quoted-printable
Antoine Pitrou11cb9612010-09-15 11:11:28 +000039 data to the *output* file. *input* and *output* must be :term:`file objects
40 <file object>`. *input* will be read until ``input.readline()`` returns an
41 empty string. *quotetabs* is a flag which controls whether to encode embedded
42 spaces and tabs; when true it encodes such embedded whitespace, and when
43 false it leaves them unencoded. Note that spaces and tabs appearing at the
44 end of lines are always encoded, as per :rfc:`1521`. *header* is a flag
45 which controls if spaces are encoded as underscores as per :rfc:`1522`.
Georg Brandl116aa622007-08-15 14:28:22 +000046
47
Georg Brandl18244152009-09-02 20:34:52 +000048.. function:: decodestring(s, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000049
50 Like :func:`decode`, except that it accepts a source string and returns the
51 corresponding decoded string.
52
53
Georg Brandl18244152009-09-02 20:34:52 +000054.. function:: encodestring(s, quotetabs=False, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000055
56 Like :func:`encode`, except that it accepts a source string and returns the
Georg Brandl18244152009-09-02 20:34:52 +000057 corresponding encoded string. *quotetabs* and *header* are optional
58 (defaulting to ``False``), and are passed straight through to :func:`encode`.
Georg Brandl116aa622007-08-15 14:28:22 +000059
60
61.. seealso::
62
63 Module :mod:`base64`
64 Encode and decode MIME base64 data
65