blob: 755811adfd84242177490010cb995a3bd22f9b2a [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
Raymond Hettinger05ce0792011-01-10 21:16:07 +000012**Source code:** :source:`Lib/quopri.py`
13
14--------------
15
Georg Brandl116aa622007-08-15 14:28:22 +000016This module performs quoted-printable transport encoding and decoding, as
17defined in :rfc:`1521`: "MIME (Multipurpose Internet Mail Extensions) Part One:
18Mechanisms for Specifying and Describing the Format of Internet Message Bodies".
19The quoted-printable encoding is designed for data where there are relatively
20few nonprintable characters; the base64 encoding scheme available via the
21:mod:`base64` module is more compact if there are many such characters, as when
22sending a graphics file.
23
Georg Brandl18244152009-09-02 20:34:52 +000024.. function:: decode(input, output, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000025
26 Decode the contents of the *input* file and write the resulting decoded binary
Antoine Pitrou11cb9612010-09-15 11:11:28 +000027 data to the *output* file. *input* and *output* must be :term:`file objects
28 <file object>`. *input* will be read until ``input.readline()`` returns an
29 empty string. If the optional argument *header* is present and true, underscore
30 will be decoded as space. This is used to decode "Q"-encoded headers as
31 described in :rfc:`1522`: "MIME (Multipurpose Internet Mail Extensions)
32 Part Two: Message Header Extensions for Non-ASCII Text".
Georg Brandl116aa622007-08-15 14:28:22 +000033
34
Georg Brandl18244152009-09-02 20:34:52 +000035.. function:: encode(input, output, quotetabs, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000036
37 Encode the contents of the *input* file and write the resulting quoted-printable
Antoine Pitrou11cb9612010-09-15 11:11:28 +000038 data to the *output* file. *input* and *output* must be :term:`file objects
39 <file object>`. *input* will be read until ``input.readline()`` returns an
40 empty string. *quotetabs* is a flag which controls whether to encode embedded
41 spaces and tabs; when true it encodes such embedded whitespace, and when
42 false it leaves them unencoded. Note that spaces and tabs appearing at the
43 end of lines are always encoded, as per :rfc:`1521`. *header* is a flag
44 which controls if spaces are encoded as underscores as per :rfc:`1522`.
Georg Brandl116aa622007-08-15 14:28:22 +000045
46
Georg Brandl18244152009-09-02 20:34:52 +000047.. function:: decodestring(s, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000048
49 Like :func:`decode`, except that it accepts a source string and returns the
50 corresponding decoded string.
51
52
Georg Brandl18244152009-09-02 20:34:52 +000053.. function:: encodestring(s, quotetabs=False, header=False)
Georg Brandl116aa622007-08-15 14:28:22 +000054
55 Like :func:`encode`, except that it accepts a source string and returns the
Georg Brandl18244152009-09-02 20:34:52 +000056 corresponding encoded string. *quotetabs* and *header* are optional
57 (defaulting to ``False``), and are passed straight through to :func:`encode`.
Georg Brandl116aa622007-08-15 14:28:22 +000058
59
60.. seealso::
61
62 Module :mod:`base64`
63 Encode and decode MIME base64 data