python-project/python-3.7.4-docs-html/library/email.contentmanager.html

386 lines
30 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>email.contentmanager: Managing MIME Content &#8212; Python 3.7.4 documentation</title>
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/language_data.js"></script>
<script type="text/javascript" src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Python 3.7.4 documentation"
href="../_static/opensearch.xml"/>
<link rel="author" title="About these documents" href="../about.html" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="email: Examples" href="email.examples.html" />
<link rel="prev" title="email.headerregistry: Custom Header Objects" href="email.headerregistry.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
<link rel="canonical" href="https://docs.python.org/3/library/email.contentmanager.html" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/switchers.js"></script>
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
</head><body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="email.examples.html" title="email: Examples"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="email.headerregistry.html" title="email.headerregistry: Custom Header Objects"
accesskey="P">previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li>
<span class="language_switcher_placeholder">en</span>
<span class="version_switcher_placeholder">3.7.4</span>
<a href="../index.html">Documentation </a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="netdata.html" >Internet Data Handling</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="email.html" accesskey="U"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code> — An email and MIME handling package</a> &#187;</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="module-email.contentmanager">
<span id="email-contentmanager-managing-mime-content"></span><h1><a class="reference internal" href="#module-email.contentmanager" title="email.contentmanager: Storing and Retrieving Content from MIME Parts"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.contentmanager</span></code></a>: Managing MIME Content<a class="headerlink" href="#module-email.contentmanager" title="Permalink to this headline"></a></h1>
<p><strong>Source code:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.7/Lib/email/contentmanager.py">Lib/email/contentmanager.py</a></p>
<hr class="docutils" />
<div class="versionadded">
<p><span class="versionmodified added">New in version 3.6: </span><a class="footnote-reference brackets" href="#id2" id="id1">1</a></p>
</div>
<dl class="class">
<dt id="email.contentmanager.ContentManager">
<em class="property">class </em><code class="descclassname">email.contentmanager.</code><code class="descname">ContentManager</code><a class="headerlink" href="#email.contentmanager.ContentManager" title="Permalink to this definition"></a></dt>
<dd><p>Base class for content managers. Provides the standard registry mechanisms
to register converters between MIME content and other representations, as
well as the <code class="docutils literal notranslate"><span class="pre">get_content</span></code> and <code class="docutils literal notranslate"><span class="pre">set_content</span></code> dispatch methods.</p>
<dl class="method">
<dt id="email.contentmanager.ContentManager.get_content">
<code class="descname">get_content</code><span class="sig-paren">(</span><em>msg</em>, <em>*args</em>, <em>**kw</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.get_content" title="Permalink to this definition"></a></dt>
<dd><p>Look up a handler function based on the <code class="docutils literal notranslate"><span class="pre">mimetype</span></code> of <em>msg</em> (see next
paragraph), call it, passing through all arguments, and return the result
of the call. The expectation is that the handler will extract the
payload from <em>msg</em> and return an object that encodes information about
the extracted data.</p>
<p>To find the handler, look for the following keys in the registry,
stopping with the first one found:</p>
<blockquote>
<div><ul class="simple">
<li><p>the string representing the full MIME type (<code class="docutils literal notranslate"><span class="pre">maintype/subtype</span></code>)</p></li>
<li><p>the string representing the <code class="docutils literal notranslate"><span class="pre">maintype</span></code></p></li>
<li><p>the empty string</p></li>
</ul>
</div></blockquote>
<p>If none of these keys produce a handler, raise a <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> for the
full MIME type.</p>
</dd></dl>
<dl class="method">
<dt id="email.contentmanager.ContentManager.set_content">
<code class="descname">set_content</code><span class="sig-paren">(</span><em>msg</em>, <em>obj</em>, <em>*args</em>, <em>**kw</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.set_content" title="Permalink to this definition"></a></dt>
<dd><p>If the <code class="docutils literal notranslate"><span class="pre">maintype</span></code> is <code class="docutils literal notranslate"><span class="pre">multipart</span></code>, raise a <a class="reference internal" href="exceptions.html#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a>; otherwise
look up a handler function based on the type of <em>obj</em> (see next
paragraph), call <a class="reference internal" href="email.message.html#email.message.EmailMessage.clear_content" title="email.message.EmailMessage.clear_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">clear_content()</span></code></a> on the
<em>msg</em>, and call the handler function, passing through all arguments. The
expectation is that the handler will transform and store <em>obj</em> into
<em>msg</em>, possibly making other changes to <em>msg</em> as well, such as adding
various MIME headers to encode information needed to interpret the stored
data.</p>
<p>To find the handler, obtain the type of <em>obj</em> (<code class="docutils literal notranslate"><span class="pre">typ</span> <span class="pre">=</span> <span class="pre">type(obj)</span></code>), and
look for the following keys in the registry, stopping with the first one
found:</p>
<blockquote>
<div><ul class="simple">
<li><p>the type itself (<code class="docutils literal notranslate"><span class="pre">typ</span></code>)</p></li>
<li><p>the types fully qualified name (<code class="docutils literal notranslate"><span class="pre">typ.__module__</span> <span class="pre">+</span> <span class="pre">'.'</span> <span class="pre">+</span>
<span class="pre">typ.__qualname__</span></code>).</p></li>
<li><p>the types qualname (<code class="docutils literal notranslate"><span class="pre">typ.__qualname__</span></code>)</p></li>
<li><p>the types name (<code class="docutils literal notranslate"><span class="pre">typ.__name__</span></code>).</p></li>
</ul>
</div></blockquote>
<p>If none of the above match, repeat all of the checks above for each of
the types in the <a class="reference internal" href="../glossary.html#term-mro"><span class="xref std std-term">MRO</span></a> (<code class="docutils literal notranslate"><span class="pre">typ.__mro__</span></code>). Finally, if no other key
yields a handler, check for a handler for the key <code class="docutils literal notranslate"><span class="pre">None</span></code>. If there is
no handler for <code class="docutils literal notranslate"><span class="pre">None</span></code>, raise a <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> for the fully
qualified name of the type.</p>
<p>Also add a <em class="mailheader">MIME-Version</em> header if one is not present (see
also <a class="reference internal" href="email.message.html#email.message.MIMEPart" title="email.message.MIMEPart"><code class="xref py py-class docutils literal notranslate"><span class="pre">MIMEPart</span></code></a>).</p>
</dd></dl>
<dl class="method">
<dt id="email.contentmanager.ContentManager.add_get_handler">
<code class="descname">add_get_handler</code><span class="sig-paren">(</span><em>key</em>, <em>handler</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.add_get_handler" title="Permalink to this definition"></a></dt>
<dd><p>Record the function <em>handler</em> as the handler for <em>key</em>. For the possible
values of <em>key</em>, see <a class="reference internal" href="#email.contentmanager.get_content" title="email.contentmanager.get_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_content()</span></code></a>.</p>
</dd></dl>
<dl class="method">
<dt id="email.contentmanager.ContentManager.add_set_handler">
<code class="descname">add_set_handler</code><span class="sig-paren">(</span><em>typekey</em>, <em>handler</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.add_set_handler" title="Permalink to this definition"></a></dt>
<dd><p>Record <em>handler</em> as the function to call when an object of a type
matching <em>typekey</em> is passed to <a class="reference internal" href="#email.contentmanager.set_content" title="email.contentmanager.set_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_content()</span></code></a>. For the possible
values of <em>typekey</em>, see <a class="reference internal" href="#email.contentmanager.set_content" title="email.contentmanager.set_content"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_content()</span></code></a>.</p>
</dd></dl>
</dd></dl>
<div class="section" id="content-manager-instances">
<h2>Content Manager Instances<a class="headerlink" href="#content-manager-instances" title="Permalink to this headline"></a></h2>
<p>Currently the email package provides only one concrete content manager,
<a class="reference internal" href="#email.contentmanager.raw_data_manager" title="email.contentmanager.raw_data_manager"><code class="xref py py-data docutils literal notranslate"><span class="pre">raw_data_manager</span></code></a>, although more may be added in the future.
<a class="reference internal" href="#email.contentmanager.raw_data_manager" title="email.contentmanager.raw_data_manager"><code class="xref py py-data docutils literal notranslate"><span class="pre">raw_data_manager</span></code></a> is the
<a class="reference internal" href="email.policy.html#email.policy.EmailPolicy.content_manager" title="email.policy.EmailPolicy.content_manager"><code class="xref py py-attr docutils literal notranslate"><span class="pre">content_manager</span></code></a> provided by
<a class="reference internal" href="email.policy.html#email.policy.EmailPolicy" title="email.policy.EmailPolicy"><code class="xref py py-attr docutils literal notranslate"><span class="pre">EmailPolicy</span></code></a> and its derivatives.</p>
<dl class="data">
<dt id="email.contentmanager.raw_data_manager">
<code class="descclassname">email.contentmanager.</code><code class="descname">raw_data_manager</code><a class="headerlink" href="#email.contentmanager.raw_data_manager" title="Permalink to this definition"></a></dt>
<dd><p>This content manager provides only a minimum interface beyond that provided
by <a class="reference internal" href="email.compat32-message.html#email.message.Message" title="email.message.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> itself: it deals only with text, raw
byte strings, and <a class="reference internal" href="email.compat32-message.html#email.message.Message" title="email.message.Message"><code class="xref py py-class docutils literal notranslate"><span class="pre">Message</span></code></a> objects. Nevertheless, it
provides significant advantages compared to the base API: <code class="docutils literal notranslate"><span class="pre">get_content</span></code> on
a text part will return a unicode string without the application needing to
manually decode it, <code class="docutils literal notranslate"><span class="pre">set_content</span></code> provides a rich set of options for
controlling the headers added to a part and controlling the content transfer
encoding, and it enables the use of the various <code class="docutils literal notranslate"><span class="pre">add_</span></code> methods, thereby
simplifying the creation of multipart messages.</p>
<dl class="method">
<dt id="email.contentmanager.get_content">
<code class="descclassname">email.contentmanager.</code><code class="descname">get_content</code><span class="sig-paren">(</span><em>msg</em>, <em>errors='replace'</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.get_content" title="Permalink to this definition"></a></dt>
<dd><p>Return the payload of the part as either a string (for <code class="docutils literal notranslate"><span class="pre">text</span></code> parts), an
<a class="reference internal" href="email.message.html#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> object (for <code class="docutils literal notranslate"><span class="pre">message/rfc822</span></code>
parts), or a <code class="docutils literal notranslate"><span class="pre">bytes</span></code> object (for all other non-multipart types). Raise
a <a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">KeyError</span></code></a> if called on a <code class="docutils literal notranslate"><span class="pre">multipart</span></code>. If the part is a
<code class="docutils literal notranslate"><span class="pre">text</span></code> part and <em>errors</em> is specified, use it as the error handler when
decoding the payload to unicode. The default error handler is
<code class="docutils literal notranslate"><span class="pre">replace</span></code>.</p>
</dd></dl>
<dl class="method">
<dt id="email.contentmanager.set_content">
<code class="descclassname">email.contentmanager.</code><code class="descname">set_content</code><span class="sig-paren">(</span><em>msg</em>, <em>&lt;'str'&gt;</em>, <em>subtype=&quot;plain&quot;</em>, <em>charset='utf-8' cte=None</em>, <em>disposition=None</em>, <em>filename=None</em>, <em>cid=None</em>, <em>params=None</em>, <em>headers=None</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.set_content" title="Permalink to this definition"></a></dt>
<dt>
<code class="descclassname">email.contentmanager.</code><code class="descname">set_content</code><span class="sig-paren">(</span><em>msg</em>, <em>&lt;'bytes'&gt;</em>, <em>maintype</em>, <em>subtype</em>, <em>cte=&quot;base64&quot;</em>, <em>disposition=None</em>, <em>filename=None</em>, <em>cid=None</em>, <em>params=None</em>, <em>headers=None</em><span class="sig-paren">)</span></dt>
<dt>
<code class="descclassname">email.contentmanager.</code><code class="descname">set_content</code><span class="sig-paren">(</span><em>msg</em>, <em>&lt;'EmailMessage'&gt;</em>, <em>cte=None</em>, <em>disposition=None</em>, <em>filename=None</em>, <em>cid=None</em>, <em>params=None</em>, <em>headers=None</em><span class="sig-paren">)</span></dt>
<dd><p>Add headers and payload to <em>msg</em>:</p>
<p>Add a <em class="mailheader">Content-Type</em> header with a <code class="docutils literal notranslate"><span class="pre">maintype/subtype</span></code>
value.</p>
<blockquote>
<div><ul class="simple">
<li><p>For <code class="docutils literal notranslate"><span class="pre">str</span></code>, set the MIME <code class="docutils literal notranslate"><span class="pre">maintype</span></code> to <code class="docutils literal notranslate"><span class="pre">text</span></code>, and set the
subtype to <em>subtype</em> if it is specified, or <code class="docutils literal notranslate"><span class="pre">plain</span></code> if it is not.</p></li>
<li><p>For <code class="docutils literal notranslate"><span class="pre">bytes</span></code>, use the specified <em>maintype</em> and <em>subtype</em>, or
raise a <a class="reference internal" href="exceptions.html#TypeError" title="TypeError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">TypeError</span></code></a> if they are not specified.</p></li>
<li><p>For <a class="reference internal" href="email.message.html#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a> objects, set the maintype
to <code class="docutils literal notranslate"><span class="pre">message</span></code>, and set the subtype to <em>subtype</em> if it is
specified or <code class="docutils literal notranslate"><span class="pre">rfc822</span></code> if it is not. If <em>subtype</em> is
<code class="docutils literal notranslate"><span class="pre">partial</span></code>, raise an error (<code class="docutils literal notranslate"><span class="pre">bytes</span></code> objects must be used to
construct <code class="docutils literal notranslate"><span class="pre">message/partial</span></code> parts).</p></li>
</ul>
</div></blockquote>
<p>If <em>charset</em> is provided (which is valid only for <code class="docutils literal notranslate"><span class="pre">str</span></code>), encode the
string to bytes using the specified character set. The default is
<code class="docutils literal notranslate"><span class="pre">utf-8</span></code>. If the specified <em>charset</em> is a known alias for a standard
MIME charset name, use the standard charset instead.</p>
<p>If <em>cte</em> is set, encode the payload using the specified content transfer
encoding, and set the <em class="mailheader">Content-Transfer-Encoding</em> header to
that value. Possible values for <em>cte</em> are <code class="docutils literal notranslate"><span class="pre">quoted-printable</span></code>,
<code class="docutils literal notranslate"><span class="pre">base64</span></code>, <code class="docutils literal notranslate"><span class="pre">7bit</span></code>, <code class="docutils literal notranslate"><span class="pre">8bit</span></code>, and <code class="docutils literal notranslate"><span class="pre">binary</span></code>. If the input cannot be
encoded in the specified encoding (for example, specifying a <em>cte</em> of
<code class="docutils literal notranslate"><span class="pre">7bit</span></code> for an input that contains non-ASCII values), raise a
<a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a>.</p>
<blockquote>
<div><ul class="simple">
<li><p>For <code class="docutils literal notranslate"><span class="pre">str</span></code> objects, if <em>cte</em> is not set use heuristics to
determine the most compact encoding.</p></li>
<li><p>For <a class="reference internal" href="email.message.html#email.message.EmailMessage" title="email.message.EmailMessage"><code class="xref py py-class docutils literal notranslate"><span class="pre">EmailMessage</span></code></a>, per <span class="target" id="index-0"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc2046.html"><strong>RFC 2046</strong></a>, raise
an error if a <em>cte</em> of <code class="docutils literal notranslate"><span class="pre">quoted-printable</span></code> or <code class="docutils literal notranslate"><span class="pre">base64</span></code> is
requested for <em>subtype</em> <code class="docutils literal notranslate"><span class="pre">rfc822</span></code>, and for any <em>cte</em> other than
<code class="docutils literal notranslate"><span class="pre">7bit</span></code> for <em>subtype</em> <code class="docutils literal notranslate"><span class="pre">external-body</span></code>. For
<code class="docutils literal notranslate"><span class="pre">message/rfc822</span></code>, use <code class="docutils literal notranslate"><span class="pre">8bit</span></code> if <em>cte</em> is not specified. For
all other values of <em>subtype</em>, use <code class="docutils literal notranslate"><span class="pre">7bit</span></code>.</p></li>
</ul>
</div></blockquote>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>A <em>cte</em> of <code class="docutils literal notranslate"><span class="pre">binary</span></code> does not actually work correctly yet.
The <code class="docutils literal notranslate"><span class="pre">EmailMessage</span></code> object as modified by <code class="docutils literal notranslate"><span class="pre">set_content</span></code> is
correct, but <a class="reference internal" href="email.generator.html#email.generator.BytesGenerator" title="email.generator.BytesGenerator"><code class="xref py py-class docutils literal notranslate"><span class="pre">BytesGenerator</span></code></a> does not
serialize it correctly.</p>
</div>
<p>If <em>disposition</em> is set, use it as the value of the
<em class="mailheader">Content-Disposition</em> header. If not specified, and
<em>filename</em> is specified, add the header with the value <code class="docutils literal notranslate"><span class="pre">attachment</span></code>.
If <em>disposition</em> is not specified and <em>filename</em> is also not specified,
do not add the header. The only valid values for <em>disposition</em> are
<code class="docutils literal notranslate"><span class="pre">attachment</span></code> and <code class="docutils literal notranslate"><span class="pre">inline</span></code>.</p>
<p>If <em>filename</em> is specified, use it as the value of the <code class="docutils literal notranslate"><span class="pre">filename</span></code>
parameter of the <em class="mailheader">Content-Disposition</em> header.</p>
<p>If <em>cid</em> is specified, add a <em class="mailheader">Content-ID</em> header with
<em>cid</em> as its value.</p>
<p>If <em>params</em> is specified, iterate its <code class="docutils literal notranslate"><span class="pre">items</span></code> method and use the
resulting <code class="docutils literal notranslate"><span class="pre">(key,</span> <span class="pre">value)</span></code> pairs to set additional parameters on the
<em class="mailheader">Content-Type</em> header.</p>
<p>If <em>headers</em> is specified and is a list of strings of the form
<code class="docutils literal notranslate"><span class="pre">headername:</span> <span class="pre">headervalue</span></code> or a list of <code class="docutils literal notranslate"><span class="pre">header</span></code> objects
(distinguished from strings by having a <code class="docutils literal notranslate"><span class="pre">name</span></code> attribute), add the
headers to <em>msg</em>.</p>
</dd></dl>
</dd></dl>
<p class="rubric">Footnotes</p>
<dl class="footnote brackets">
<dt class="label" id="id2"><span class="brackets"><a class="fn-backref" href="#id1">1</a></span></dt>
<dd><p>Originally added in 3.4 as a <a class="reference internal" href="../glossary.html#term-provisional-package"><span class="xref std std-term">provisional module</span></a></p>
</dd>
</dl>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.contentmanager</span></code>: Managing MIME Content</a><ul>
<li><a class="reference internal" href="#content-manager-instances">Content Manager Instances</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="email.headerregistry.html"
title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.headerregistry</span></code>: Custom Header Objects</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="email.examples.html"
title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code>: Examples</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">Report a Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.7/Doc/library/email.contentmanager.rst"
rel="nofollow">Show Source
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="email.examples.html" title="email: Examples"
>next</a> |</li>
<li class="right" >
<a href="email.headerregistry.html" title="email.headerregistry: Custom Header Objects"
>previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li>
<span class="language_switcher_placeholder">en</span>
<span class="version_switcher_placeholder">3.7.4</span>
<a href="../index.html">Documentation </a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="netdata.html" >Internet Data Handling</a> &#187;</li>
<li class="nav-item nav-item-3"><a href="email.html" ><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code> — An email and MIME handling package</a> &#187;</li>
<li class="right">
<div class="inline-search" style="display: none" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('.inline-search').show(0);</script>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">Copyright</a> 2001-2019, Python Software Foundation.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
Last updated on Jul 13, 2019.
<a href="../bugs.html">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 2.0.1.
</div>
</body>
</html>