Files
hustoj/web/python-docs/library/email.contentmanager.html
2025-03-09 17:10:56 +08:00

384 lines
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>email.contentmanager: 管理 MIME 内容 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="email: 示例" href="email.examples.html" />
<link rel="prev" title="email.headerregistry: 自定义标头对象" href="email.headerregistry.html" />
<link rel="canonical" href="https://docs.python.org/3/library/email.contentmanager.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h3><a href="../contents.html">目录</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>: 管理 MIME 内容</a><ul>
<li><a class="reference internal" href="#content-manager-instances">内容管理器实例</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="email.headerregistry.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.headerregistry</span></code>: 自定义标头对象</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="email.examples.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code>: 示例</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/email.contentmanager.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/library/email.contentmanager.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="email.examples.html" title="email: 示例"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="email.headerregistry.html" title="email.headerregistry: 自定义标头对象"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="netdata.html" >互联网数据处理</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> --- 电子邮件与 MIME 处理包</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<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>: 管理 MIME 内容<a class="headerlink" href="#module-email.contentmanager" title="永久链接至标题"></a></h1>
<p><strong>源代码:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.8/Lib/email/contentmanager.py">Lib/email/contentmanager.py</a></p>
<hr class="docutils" />
<div class="versionadded">
<p><span class="versionmodified added">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="sig-prename descclassname">email.contentmanager.</code><code class="sig-name descname">ContentManager</code><a class="headerlink" href="#email.contentmanager.ContentManager" title="永久链接至目标"></a></dt>
<dd><p>内容管理器的基类。 提供注册 MIME 内容和其他表示形式间转换器的标准注册机制,以及 <code class="docutils literal notranslate"><span class="pre">get_content</span></code><code class="docutils literal notranslate"><span class="pre">set_content</span></code> 发送方法。</p>
<dl class="method">
<dt id="email.contentmanager.ContentManager.get_content">
<code class="sig-name descname">get_content</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kw</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.get_content" title="永久链接至目标"></a></dt>
<dd><p>基于 <em>msg</em><code class="docutils literal notranslate"><span class="pre">mimetype</span></code> 查找处理函数(参见下一段),调用该函数,传递所有参数,并返回调用的结果。 期望的效果是处理程序将从 <em>msg</em> 中提取有效载荷并返回编码了有关被提取数据信息的对象。</p>
<p>要找到处理程序,将在注册表中查找以下键,找到第一个键即停止:</p>
<blockquote>
<div><ul class="simple">
<li><p>表示完整 MIME 类型的字符串 (<code class="docutils literal notranslate"><span class="pre">maintype/subtype</span></code>)</p></li>
<li><p>表示 <code class="docutils literal notranslate"><span class="pre">maintype</span></code> 的字符串</p></li>
<li><p>空字符串</p></li>
</ul>
</div></blockquote>
<p>如果这些键都没有产生处理程序,则为完整 MIME 类型引发一个 <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></p>
</dd></dl>
<dl class="method">
<dt id="email.contentmanager.ContentManager.set_content">
<code class="sig-name descname">set_content</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">obj</em>, <em class="sig-param">*args</em>, <em class="sig-param">**kw</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.set_content" title="永久链接至目标"></a></dt>
<dd><p>如果 <code class="docutils literal notranslate"><span class="pre">maintype</span></code><code class="docutils literal notranslate"><span class="pre">multipart</span></code>,则引发 <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>;否则基于 <em>obj</em> 的类型(参见下一段)查找处理函数,在 <em>msg</em> 上调用 <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>,并调用处理函数,传递所有参数。 预期的效果是处理程序将转换 <em>obj</em> 并存入 <em>msg</em>,并可能对 <em>msg</em> 进行其他更改,例如添加各种 MIME 标头来编码需要用来解释所存储数据的信息。</p>
<p>要找到处理程序,将获取 <em>obj</em> 的类型 (<code class="docutils literal notranslate"><span class="pre">typ</span> <span class="pre">=</span> <span class="pre">type(obj)</span></code>),并在注册表中查找以下键,找到第一个键即停止:</p>
<blockquote>
<div><ul class="simple">
<li><p>类型本身 (<code class="docutils literal notranslate"><span class="pre">typ</span></code>)</p></li>
<li><p>类型的完整限定名称 (<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>类型的 qualname (<code class="docutils literal notranslate"><span class="pre">typ.__qualname__</span></code>)</p></li>
<li><p>类型的 name (<code class="docutils literal notranslate"><span class="pre">typ.__name__</span></code>)。</p></li>
</ul>
</div></blockquote>
<p>如果未匹配到上述的任何一项,则在 <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>) 中为每个类型重复上述的所有检测。 最后,如果没有其他键产生处理程序,则为 <code class="docutils literal notranslate"><span class="pre">None</span></code> 键检测处理程序。 如果也没有 <code class="docutils literal notranslate"><span class="pre">None</span></code> 的处理程序,则为该类型的完整限定名称引发 <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></p>
<p>并会添加一个 <em class="mailheader">MIME-Version</em> 标头,如果没有的话 (另请参见 <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="sig-name descname">add_get_handler</code><span class="sig-paren">(</span><em class="sig-param">key</em>, <em class="sig-param">handler</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.add_get_handler" title="永久链接至目标"></a></dt>
<dd><p><em>handler</em> 函数记录为 <em>key</em> 的处理程序。 对于可能的 <em>key</em> 键,请参阅 <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="sig-name descname">add_set_handler</code><span class="sig-paren">(</span><em class="sig-param">typekey</em>, <em class="sig-param">handler</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.ContentManager.add_set_handler" title="永久链接至目标"></a></dt>
<dd><p><em>handler</em> 记录为当一个匹配 <em>typekey</em> 的类型对象被传递给 <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> 时所要调用的函数。 对于可能的 <em>typekey</em> 值,请参阅 <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>
<section id="content-manager-instances">
<h2>内容管理器实例<a class="headerlink" href="#content-manager-instances" title="永久链接至标题"></a></h2>
<p>目前 email 包只提供了一个实体内容管理器 <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>,不过在未来可能会添加更多。 <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> 是由 <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> 及其衍生工具所提供的 <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></p>
<dl class="data">
<dt id="email.contentmanager.raw_data_manager">
<code class="sig-prename descclassname">email.contentmanager.</code><code class="sig-name descname">raw_data_manager</code><a class="headerlink" href="#email.contentmanager.raw_data_manager" title="永久链接至目标"></a></dt>
<dd><p>这个内容管理器仅提供了超出 <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> 本身提供内容的最小接口:它只处理文本、原始字节串和 <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> 对象。 不过相比基础 API它具有显著的优势在文本部分上执行 <code class="docutils literal notranslate"><span class="pre">get_content</span></code> 将返回一个 unicode 字符串而无需由应用程序来手动解码,<code class="docutils literal notranslate"><span class="pre">set_content</span></code> 为控制添加到一个部分的标头和控制内容传输编码格式提供了丰富的选项集合,并且它还启用了多种 <code class="docutils literal notranslate"><span class="pre">add_</span></code> 方法,从而简化了多部分消息的创建过程。</p>
<dl class="method">
<dt id="email.contentmanager.get_content">
<code class="sig-prename descclassname">email.contentmanager.</code><code class="sig-name descname">get_content</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">errors='replace'</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.get_content" title="永久链接至目标"></a></dt>
<dd><p>将指定部分的有效载荷作为字符串(对于 <code class="docutils literal notranslate"><span class="pre">text</span></code> 部分), <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> 对象(对于 <code class="docutils literal notranslate"><span class="pre">message/rfc822</span></code> 部分)或 <code class="docutils literal notranslate"><span class="pre">bytes</span></code> 对象(对于所有其他非多部分类型)返回。 如果是在 <code class="docutils literal notranslate"><span class="pre">multipart</span></code> 上调用则会引发 <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>。 如果指定部分是一个 <code class="docutils literal notranslate"><span class="pre">text</span></code> 部分并且指明了 <em>errors</em>,则会在将载荷解码为 unicode 时将其用作错误处理程序。 默认的错误处理程序是 <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="sig-prename descclassname">email.contentmanager.</code><code class="sig-name descname">set_content</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">&lt;'str'&gt;</em>, <em class="sig-param">subtype=&quot;plain&quot;</em>, <em class="sig-param">charset='utf-8'</em>, <em class="sig-param">cte=None</em>, <em class="sig-param">disposition=None</em>, <em class="sig-param">filename=None</em>, <em class="sig-param">cid=None</em>, <em class="sig-param">params=None</em>, <em class="sig-param">headers=None</em><span class="sig-paren">)</span><a class="headerlink" href="#email.contentmanager.set_content" title="永久链接至目标"></a></dt>
<dt>
<code class="sig-prename descclassname">email.contentmanager.</code><code class="sig-name descname">set_content</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">&lt;'bytes'&gt;</em>, <em class="sig-param">maintype</em>, <em class="sig-param">subtype</em>, <em class="sig-param">cte=&quot;base64&quot;</em>, <em class="sig-param">disposition=None</em>, <em class="sig-param">filename=None</em>, <em class="sig-param">cid=None</em>, <em class="sig-param">params=None</em>, <em class="sig-param">headers=None</em><span class="sig-paren">)</span></dt>
<dt>
<code class="sig-prename descclassname">email.contentmanager.</code><code class="sig-name descname">set_content</code><span class="sig-paren">(</span><em class="sig-param">msg</em>, <em class="sig-param">&lt;'EmailMessage'&gt;</em>, <em class="sig-param">cte=None</em>, <em class="sig-param">disposition=None</em>, <em class="sig-param">filename=None</em>, <em class="sig-param">cid=None</em>, <em class="sig-param">params=None</em>, <em class="sig-param">headers=None</em><span class="sig-paren">)</span></dt>
<dd><p><em>msg</em> 添加标头和有效载荷:</p>
<p>添加一个带有 <code class="docutils literal notranslate"><span class="pre">maintype/subtype</span></code> 值的 <em class="mailheader">Content-Type</em> 标头。</p>
<blockquote>
<div><ul class="simple">
<li><p>对于 <code class="docutils literal notranslate"><span class="pre">str</span></code>,将 MIME <code class="docutils literal notranslate"><span class="pre">maintype</span></code> 设为 <code class="docutils literal notranslate"><span class="pre">text</span></code>,如果指定了子类型 <em>subtype</em> 则设为指定值,否则设为 <code class="docutils literal notranslate"><span class="pre">plain</span></code></p></li>
<li><p>对于 <code class="docutils literal notranslate"><span class="pre">bytes</span></code>,将使用指定的 <em>maintype</em><em>subtype</em>,如果未指定则会引发 <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></p></li>
<li><p>对于 <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> 对象,将 maintype 设为 <code class="docutils literal notranslate"><span class="pre">message</span></code>,并将指定的 subtype 设为 <em>subtype</em>,如果未指定则设为 <code class="docutils literal notranslate"><span class="pre">rfc822</span></code>。 如果 <em>subtype</em><code class="docutils literal notranslate"><span class="pre">partial</span></code>,则引发一个错误(必须使用 <code class="docutils literal notranslate"><span class="pre">bytes</span></code> 对象来构造 <code class="docutils literal notranslate"><span class="pre">message/partial</span></code> 部分)。</p></li>
</ul>
</div></blockquote>
<p>如果提供了 <em>charset</em> (这只对 <code class="docutils literal notranslate"><span class="pre">str</span></code> 适用),则使用指定的字符集将字符串编码为字节串。 默认值为 <code class="docutils literal notranslate"><span class="pre">utf-8</span></code>。 如果指定的 <em>charset</em> 是某个标准 MIME 字符集名称的已知别名,则会改用该标准字符集。</p>
<p>如果设置了 <em>cte</em>,则使用指定的内容传输编码格式对有效载荷进行编码,并将 <em class="mailheader">Content-Transfer-Encoding</em> 标头设为该值。 可能的 <em>cte</em> 值有 <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><code class="docutils literal notranslate"><span class="pre">binary</span></code>。 如果输入无法以指定的编码格式被编码 (例如,对于包含非 ASCII 值的输入指定 <em>cte</em> 值为 <code class="docutils literal notranslate"><span class="pre">7bit</span></code>),则会引发 <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>对于 <code class="docutils literal notranslate"><span class="pre">str</span></code> 对象,如果 <em>cte</em> 未设置则会使用启发方式来确定最紧凑的编码格式。</p></li>
<li><p>对于 <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>,按照 <span class="target" id="index-2"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc2046.html"><strong>RFC 2046</strong></a>,如果为 <em>subtype</em> <code class="docutils literal notranslate"><span class="pre">rfc822</span></code> 请求的 <em>cte</em><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> 以外的任何 <em>cte</em><em>subtype</em> <code class="docutils literal notranslate"><span class="pre">external-body</span></code> 则会引发一个错误。 对于 <code class="docutils literal notranslate"><span class="pre">message/rfc822</span></code>,如果 <em>cte</em> 未指定则会使用 <code class="docutils literal notranslate"><span class="pre">8bit</span></code>。 对于所有其他 <em>subtype</em> 值,都会使用 <code class="docutils literal notranslate"><span class="pre">7bit</span></code></p></li>
</ul>
</div></blockquote>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p><em>cte</em> 值为 <code class="docutils literal notranslate"><span class="pre">binary</span></code> 实际上还不能正确工作。 由 <code class="docutils literal notranslate"><span class="pre">set_content</span></code> 所修改的 <code class="docutils literal notranslate"><span class="pre">EmailMessage</span></code> 对象是正确的,但 <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> 不会正确地将其序列化。</p>
</div>
<p>如果设置了 <em>disposition</em>,它会被用作 <em class="mailheader">Content-Disposition</em> 标头的值。 如果未设置,并且指定了 <em>filename</em>,则添加值为 <code class="docutils literal notranslate"><span class="pre">attachment</span></code> 的标头。 如果未设置 <em>disposition</em> 并且也未指定 <em>filename</em>,则不添加标头。 <em>disposition</em> 的有效值仅有 <code class="docutils literal notranslate"><span class="pre">attachment</span></code><code class="docutils literal notranslate"><span class="pre">inline</span></code></p>
<p>如果设置了 <em>filename</em>,则将其用作 <em class="mailheader">Content-Disposition</em> 标头的 <code class="docutils literal notranslate"><span class="pre">filename</span></code> 参数的值。</p>
<p>如果设置了 <em>cid</em>,则添加一个 <em class="mailheader">Content-ID</em> 标头并将其值设为 <em>cid</em></p>
<p>如果设置了 <em>params</em>,则迭代其 <code class="docutils literal notranslate"><span class="pre">items</span></code> 方法并使用输出的 <code class="docutils literal notranslate"><span class="pre">(key,</span> <span class="pre">value)</span></code> 结果对在 <em class="mailheader">Content-Type</em> 标头上设置附加参数。</p>
<p>如果设置了 <em>headers</em> 并且为 <code class="docutils literal notranslate"><span class="pre">headername:</span> <span class="pre">headervalue</span></code> 形式的字符串的列表或为 <code class="docutils literal notranslate"><span class="pre">header</span></code> 对象的列表(通过一个 <code class="docutils literal notranslate"><span class="pre">name</span></code> 属性与字符串相区分),则将标头添加到 <em>msg</em></p>
</dd></dl>
</dd></dl>
<p class="rubric">备注</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>最初在 3.4 中作为 <a class="reference internal" href="../glossary.html#term-provisional-package"><span class="xref std std-term">暂定模块</span></a> 添加</p>
</dd>
</dl>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">目录</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>: 管理 MIME 内容</a><ul>
<li><a class="reference internal" href="#content-manager-instances">内容管理器实例</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="email.headerregistry.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email.headerregistry</span></code>: 自定义标头对象</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="email.examples.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">email</span></code>: 示例</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/email.contentmanager.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="email.examples.html" title="email: 示例"
>下一页</a> |</li>
<li class="right" >
<a href="email.headerregistry.html" title="email.headerregistry: 自定义标头对象"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="netdata.html" >互联网数据处理</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> --- 电子邮件与 MIME 处理包</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>