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

756 lines
72 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>imaplib --- IMAP4 协议客户端 &#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="nntplib --- NNTP 协议客户端" href="nntplib.html" />
<link rel="prev" title="poplib --- POP3 协议客户端" href="poplib.html" />
<link rel="canonical" href="https://docs.python.org/3/library/imaplib.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">imaplib</span></code> --- IMAP4 协议客户端</a><ul>
<li><a class="reference internal" href="#imap4-objects">IMAP4 对象</a></li>
<li><a class="reference internal" href="#imap4-example">IMAP4 示例</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="poplib.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">poplib</span></code> --- POP3 协议客户端</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="nntplib.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">nntplib</span></code> --- NNTP 协议客户端</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/imaplib.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/imaplib.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="nntplib.html" title="nntplib --- NNTP 协议客户端"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="poplib.html" title="poplib --- POP3 协议客户端"
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="internet.html" accesskey="U">互联网协议和支持</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-imaplib">
<span id="imaplib-imap4-protocol-client"></span><h1><a class="reference internal" href="#module-imaplib" title="imaplib: IMAP4 protocol client (requires sockets)."><code class="xref py py-mod docutils literal notranslate"><span class="pre">imaplib</span></code></a> --- IMAP4 协议客户端<a class="headerlink" href="#module-imaplib" title="永久链接至标题"></a></h1>
<p><strong>源代码:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.8/Lib/imaplib.py">Lib/imaplib.py</a></p>
<hr class="docutils" id="index-0" />
<p>本模块定义了三个类: <a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a><a class="reference internal" href="#imaplib.IMAP4_SSL" title="imaplib.IMAP4_SSL"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4_SSL</span></code></a><a class="reference internal" href="#imaplib.IMAP4_stream" title="imaplib.IMAP4_stream"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4_stream</span></code></a> 。这三个类封装了与IMAP4服务器的连接并实现了 <span class="target" id="index-17"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc2060.html"><strong>RFC 2060</strong></a> 当中定义的大多数IMAP4rev1客户端协议。其与IMAP4 <span class="target" id="index-18"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc1730.html"><strong>RFC 1730</strong></a> )服务器后向兼容,但是 <code class="docutils literal notranslate"><span class="pre">STATUS</span></code> 指令在IMAP4中不支持。</p>
<p><a class="reference internal" href="#module-imaplib" title="imaplib: IMAP4 protocol client (requires sockets)."><code class="xref py py-mod docutils literal notranslate"><span class="pre">imaplib</span></code></a> 模块提供了三个类,其中 <a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> 是基类:</p>
<dl class="class">
<dt id="imaplib.IMAP4">
<em class="property">class </em><code class="sig-prename descclassname">imaplib.</code><code class="sig-name descname">IMAP4</code><span class="sig-paren">(</span><em class="sig-param">host=''</em>, <em class="sig-param">port=IMAP4_PORT</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4" title="永久链接至目标"></a></dt>
<dd><p>This class implements the actual IMAP4 protocol. The connection is created and
protocol version (IMAP4 or IMAP4rev1) is determined when the instance is
initialized. If <em>host</em> is not specified, <code class="docutils literal notranslate"><span class="pre">''</span></code> (the local host) is used. If
<em>port</em> is omitted, the standard IMAP4 port (143) is used.</p>
<p><a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> 类支持 <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> 语句。 当这样使用时IMAP4 <code class="docutils literal notranslate"><span class="pre">LOGOUT</span></code> 命令会在 <code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code> 语句退出时自动发出。 例如:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">imaplib</span> <span class="kn">import</span> <span class="n">IMAP4</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="n">IMAP4</span><span class="p">(</span><span class="s2">&quot;domain.org&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">M</span><span class="p">:</span>
<span class="gp">... </span> <span class="n">M</span><span class="o">.</span><span class="n">noop</span><span class="p">()</span>
<span class="gp">...</span>
<span class="go">(&#39;OK&#39;, [b&#39;Nothing Accomplished. d25if65hy903weo.87&#39;])</span>
</pre></div>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>添加了对 <a class="reference internal" href="../reference/compound_stmts.html#with"><code class="xref std std-keyword docutils literal notranslate"><span class="pre">with</span></code></a> 语句的支持。</p>
</div>
</dd></dl>
<p>有三个异常被定义为 <a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> 类的属性:</p>
<dl class="exception">
<dt id="imaplib.IMAP4.error">
<em class="property">exception </em><code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">error</code><a class="headerlink" href="#imaplib.IMAP4.error" title="永久链接至目标"></a></dt>
<dd><p>任何错误都将引发该异常。 异常的原因会以字符串的形式传递给构造器。</p>
</dd></dl>
<dl class="exception">
<dt id="imaplib.IMAP4.abort">
<em class="property">exception </em><code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">abort</code><a class="headerlink" href="#imaplib.IMAP4.abort" title="永久链接至目标"></a></dt>
<dd><p>IMAP4 服务器错误会导致引发该异常。 这是 <a class="reference internal" href="#imaplib.IMAP4.error" title="imaplib.IMAP4.error"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IMAP4.error</span></code></a> 的子类。 请注意关闭此实例并实例化一个新实例通常将会允许从该异常中恢复。</p>
</dd></dl>
<dl class="exception">
<dt id="imaplib.IMAP4.readonly">
<em class="property">exception </em><code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">readonly</code><a class="headerlink" href="#imaplib.IMAP4.readonly" title="永久链接至目标"></a></dt>
<dd><p>当一个可写邮箱的状态被服务器修改时会引发此异常。 此异常是 <a class="reference internal" href="#imaplib.IMAP4.error" title="imaplib.IMAP4.error"><code class="xref py py-exc docutils literal notranslate"><span class="pre">IMAP4.error</span></code></a> 的子类。 某个其他客户端现在会具有写入权限,将需要重新打开该邮箱以重新获得写入权限。</p>
</dd></dl>
<p>另外还有一个针对安全连接的子类:</p>
<dl class="class">
<dt id="imaplib.IMAP4_SSL">
<em class="property">class </em><code class="sig-prename descclassname">imaplib.</code><code class="sig-name descname">IMAP4_SSL</code><span class="sig-paren">(</span><em class="sig-param">host=''</em>, <em class="sig-param">port=IMAP4_SSL_PORT</em>, <em class="sig-param">keyfile=None</em>, <em class="sig-param">certfile=None</em>, <em class="sig-param">ssl_context=None</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4_SSL" title="永久链接至目标"></a></dt>
<dd><p>这是一个派生自 <a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> 的子类,它使用经 SSL 加密的套接字进行连接 (为了使用这个类你需要编译时附带 SSL 支持的 socket 模块)。 如果未指定 <em>host</em>,则会使用 <code class="docutils literal notranslate"><span class="pre">''</span></code> (本地主机)。 如果省略了 <em>port</em>,则会使用标准的 IMAP4-over-SSL 端口 (993)。 <em>ssl_context</em> 是一个 <a class="reference internal" href="ssl.html#ssl.SSLContext" title="ssl.SSLContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">ssl.SSLContext</span></code></a> 对象,它允许将 SSL 配置选项、证书和私钥打包放入一个单独的 (可以长久存在的) 结构体中。 请阅读 <a class="reference internal" href="ssl.html#ssl-security"><span class="std std-ref">安全考量</span></a> 以获取最佳实践。</p>
<p><em>keyfile</em><em>certfile</em><em>ssl_context</em> 的旧式替代品 —— 它们可以指向 PEM 格式的私钥和证书链文件用于 SSL 连接。 请注意 <em>keyfile</em>/<em>certfile</em> 形参不能与 <em>ssl_context</em> 共存,如果 <em>keyfile</em>/<em>certfile</em><em>ssl_context</em> 一同被提供则会引发 <a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-class docutils literal notranslate"><span class="pre">ValueError</span></code></a></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.3 版更改: </span><em>ssl_context</em> parameter added.</p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.4 版更改: </span>本类现在支持使用 <a class="reference internal" href="ssl.html#ssl.SSLContext.check_hostname" title="ssl.SSLContext.check_hostname"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ssl.SSLContext.check_hostname</span></code></a><em>服务器名称指示</em> (参阅 <a class="reference internal" href="ssl.html#ssl.HAS_SNI" title="ssl.HAS_SNI"><code class="xref py py-data docutils literal notranslate"><span class="pre">ssl.HAS_SNI</span></code></a>)进行主机名检查。</p>
</div>
<div class="deprecated">
<p><span class="versionmodified deprecated">3.6 版后已移除: </span><em>keyfile</em><em>certfile</em> 已弃用并转而推荐 <em>ssl_context</em>。 请改用 <a class="reference internal" href="ssl.html#ssl.SSLContext.load_cert_chain" title="ssl.SSLContext.load_cert_chain"><code class="xref py py-meth docutils literal notranslate"><span class="pre">ssl.SSLContext.load_cert_chain()</span></code></a>,或让 <a class="reference internal" href="ssl.html#ssl.create_default_context" title="ssl.create_default_context"><code class="xref py py-func docutils literal notranslate"><span class="pre">ssl.create_default_context()</span></code></a> 为你选择系统所信任的 CA 证书。</p>
</div>
</dd></dl>
<p>第二个子类允许由子进程所创建的连接:</p>
<dl class="class">
<dt id="imaplib.IMAP4_stream">
<em class="property">class </em><code class="sig-prename descclassname">imaplib.</code><code class="sig-name descname">IMAP4_stream</code><span class="sig-paren">(</span><em class="sig-param">command</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4_stream" title="永久链接至目标"></a></dt>
<dd><p>这是一个派生自 <a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> 的子类,它可以连接 <code class="docutils literal notranslate"><span class="pre">stdin/stdout</span></code> 文件描述符,此种文件是通过向 <code class="docutils literal notranslate"><span class="pre">subprocess.Popen()</span></code> 传入 <em>command</em> 来创建的。</p>
</dd></dl>
<p>定义了下列工具函数:</p>
<dl class="function">
<dt id="imaplib.Internaldate2tuple">
<code class="sig-prename descclassname">imaplib.</code><code class="sig-name descname">Internaldate2tuple</code><span class="sig-paren">(</span><em class="sig-param">datestr</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.Internaldate2tuple" title="永久链接至目标"></a></dt>
<dd><p>解析一个 IMAP4 <code class="docutils literal notranslate"><span class="pre">INTERNALDATE</span></code> 字符串并返回对应的本地时间。 返回值是一个 <a class="reference internal" href="time.html#time.struct_time" title="time.struct_time"><code class="xref py py-class docutils literal notranslate"><span class="pre">time.struct_time</span></code></a> 元组或者如果字符串格式错误则为 <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
</dd></dl>
<dl class="function">
<dt id="imaplib.Int2AP">
<code class="sig-prename descclassname">imaplib.</code><code class="sig-name descname">Int2AP</code><span class="sig-paren">(</span><em class="sig-param">num</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.Int2AP" title="永久链接至目标"></a></dt>
<dd><p>将一个整数转换为使用字符集 [<code class="docutils literal notranslate"><span class="pre">A</span></code> .. <code class="docutils literal notranslate"><span class="pre">P</span></code>] 的字节串表示形式。</p>
</dd></dl>
<dl class="function">
<dt id="imaplib.ParseFlags">
<code class="sig-prename descclassname">imaplib.</code><code class="sig-name descname">ParseFlags</code><span class="sig-paren">(</span><em class="sig-param">flagstr</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.ParseFlags" title="永久链接至目标"></a></dt>
<dd><p>将一个 IMAP4 <code class="docutils literal notranslate"><span class="pre">FLAGS</span></code> 响应转换为包含单独旗标的元组。</p>
</dd></dl>
<dl class="function">
<dt id="imaplib.Time2Internaldate">
<code class="sig-prename descclassname">imaplib.</code><code class="sig-name descname">Time2Internaldate</code><span class="sig-paren">(</span><em class="sig-param">date_time</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.Time2Internaldate" title="永久链接至目标"></a></dt>
<dd><p><em>date_time</em> 转换为 IMAP4 <code class="docutils literal notranslate"><span class="pre">INTERNALDATE</span></code> 表示形式。 返回值是以下形式的字符串: <code class="docutils literal notranslate"><span class="pre">&quot;DD-Mmm-YYYY</span> <span class="pre">HH:MM:SS</span> <span class="pre">+HHMM&quot;</span></code> (包括双引号)。 <em>date_time</em> 参数可以是一个代表距离纪元起始的秒数 (如 <a class="reference internal" href="time.html#time.time" title="time.time"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.time()</span></code></a> 的返回值) 的数字 (整数或浮点数),一个代表本地时间的 9 元组,一个 <a class="reference internal" href="time.html#time.struct_time" title="time.struct_time"><code class="xref py py-class docutils literal notranslate"><span class="pre">time.struct_time</span></code></a> 实例 (如 <a class="reference internal" href="time.html#time.localtime" title="time.localtime"><code class="xref py py-func docutils literal notranslate"><span class="pre">time.localtime()</span></code></a> 的返回值),一个感知型的 <a class="reference internal" href="datetime.html#datetime.datetime" title="datetime.datetime"><code class="xref py py-class docutils literal notranslate"><span class="pre">datetime.datetime</span></code></a> 实例,或一个双引号字符串。 在最后一种情况下,它会被假定已经具有正确的格式。</p>
</dd></dl>
<p>请注意 IMAP4 消息编号会随邮箱的改变而改变;特别是在使用 <code class="docutils literal notranslate"><span class="pre">EXPUNGE</span></code> 命令执行删除后剩余的消息会被重新编号。 因此高度建议通过 UID 命令来改用 UID。</p>
<p>模块的最后有一段测试,其中包含的用法示例更加广泛。</p>
<div class="admonition seealso">
<p class="admonition-title">参见</p>
<p>描述该协议的文档,实现该协议的服务器源代码,由华盛顿大学 IMAP 信息中心提供 (<strong>源代码</strong>) <a class="reference external" href="https://github.com/uw-imap/imap">https://github.com/uw-imap/imap</a> (<strong>不再维护</strong>)。</p>
</div>
<section id="imap4-objects">
<span id="id1"></span><h2>IMAP4 对象<a class="headerlink" href="#imap4-objects" title="永久链接至标题"></a></h2>
<p>所有 IMAP4rev1 命令都表示为同名的方法,可以为大写或小写形式。</p>
<p>命令的所有参数都会被转换为字符串,只有 <code class="docutils literal notranslate"><span class="pre">AUTHENTICATE</span></code> 例外,而 <code class="docutils literal notranslate"><span class="pre">APPEND</span></code> 的最后一个参数会被作为 IMAP4 字面值传入。 如有必要 (字符串包含 IMAP4 协议中的敏感字符并且未加圆括号或双引号) 每个字符串都会被转码。 但是,<code class="docutils literal notranslate"><span class="pre">LOGIN</span></code> 命令的 <em>password</em> 参数总是会被转码。 如果你想让某个参数字符串免于被转码 (例如: <code class="docutils literal notranslate"><span class="pre">STORE</span></code><em>flags</em> 参数) 则要为该字符串加上圆括号 (例如: <code class="docutils literal notranslate"><span class="pre">r'(\Deleted)'</span></code>)。</p>
<p>每条命令均返回一个元组: <code class="docutils literal notranslate"><span class="pre">(type,</span> <span class="pre">[data,</span> <span class="pre">...])</span></code> 其中 <em>type</em> 通常为 <code class="docutils literal notranslate"><span class="pre">'OK'</span></code><code class="docutils literal notranslate"><span class="pre">'NO'</span></code>,而 <em>data</em> 为来自命令响应的文本,或为来自命令的规定结果。 每个 <em>data</em> 均为 <code class="docutils literal notranslate"><span class="pre">bytes</span></code> 或者元组。 如果为元组,则其第一部分是响应的标头,而第二部分将包含数据 (例如: 'literal' 值)。</p>
<p>以下命令的 <em>message_set</em> 选项为指定要操作的一条或多条消息的字符串。 它可以是一个简单的消息编号 (<code class="docutils literal notranslate"><span class="pre">'1'</span></code>),一段消息编号区间 (<code class="docutils literal notranslate"><span class="pre">'2:4'</span></code>),或者一组以逗号分隔的非连续区间 (<code class="docutils literal notranslate"><span class="pre">'1:3,6:9'</span></code>)。 区间可以包含一个星号来表示无限的上界 (<code class="docutils literal notranslate"><span class="pre">'3:*'</span></code>)。</p>
<p><a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> 实例具有下列方法:</p>
<dl class="method">
<dt id="imaplib.IMAP4.append">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">append</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em>, <em class="sig-param">flags</em>, <em class="sig-param">date_time</em>, <em class="sig-param">message</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.append" title="永久链接至目标"></a></dt>
<dd><p><em>message</em> 添加到指定的邮箱。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.authenticate">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">authenticate</code><span class="sig-paren">(</span><em class="sig-param">mechanism</em>, <em class="sig-param">authobject</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.authenticate" title="永久链接至目标"></a></dt>
<dd><p>认证命令 --- 要求对响应进行处理。</p>
<p><em>mechanism</em> 指明要使用哪种认证机制 —— 它应当在实例变量 <code class="docutils literal notranslate"><span class="pre">capabilities</span></code> 中以 <code class="docutils literal notranslate"><span class="pre">AUTH=mechanism</span></code> 的形式出现。</p>
<p><em>authobject</em> 必须是一个可调用对象:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">data</span> <span class="o">=</span> <span class="n">authobject</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
</pre></div>
</div>
<p>它将被调用以便处理服务器连续响应;传给它的 <em>response</em> 参数将为 <code class="docutils literal notranslate"><span class="pre">bytes</span></code> 类型。 它应当返回 base64 编码的 <code class="docutils literal notranslate"><span class="pre">bytes</span></code> <em>数据</em> 并发送给服务器。 或者在客户端中止响应时返回 <code class="docutils literal notranslate"><span class="pre">None</span></code> 并应改为发送 <code class="docutils literal notranslate"><span class="pre">*</span></code></p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.5 版更改: </span>字符串形式的用户名和密码现在会被执行 <code class="docutils literal notranslate"><span class="pre">utf-8</span></code> 编码而不限于 ASCII 字符。</p>
</div>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.check">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">check</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.check" title="永久链接至目标"></a></dt>
<dd><p>为服务器上的邮箱设置检查点。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.close">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.close" title="永久链接至目标"></a></dt>
<dd><p>关闭当前选定的邮箱。 已删除的消息会从可写邮箱中被移除。 在 <code class="docutils literal notranslate"><span class="pre">LOGOUT</span></code> 之前建议执行此命令。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.copy">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">copy</code><span class="sig-paren">(</span><em class="sig-param">message_set</em>, <em class="sig-param">new_mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.copy" title="永久链接至目标"></a></dt>
<dd><p><em>message_set</em> 消息拷贝到 <em>new_mailbox</em> 的末尾。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.create">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">create</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.create" title="永久链接至目标"></a></dt>
<dd><p>新建名为 <em>mailbox</em> 新邮箱。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.delete">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">delete</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.delete" title="永久链接至目标"></a></dt>
<dd><p>删除名为 <em>mailbox</em> 的旧邮箱。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.deleteacl">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">deleteacl</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em>, <em class="sig-param">who</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.deleteacl" title="永久链接至目标"></a></dt>
<dd><p>删除邮箱上某人的 ACL (移除任何权限)。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.enable">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">enable</code><span class="sig-paren">(</span><em class="sig-param">capability</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.enable" title="永久链接至目标"></a></dt>
<dd><p>启用 <em>capability</em> (参见 <span class="target" id="index-19"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc5161.html"><strong>RFC 5161</strong></a>)。 大多数功能都不需要被启用。 目前只有 <code class="docutils literal notranslate"><span class="pre">UTF8=ACCEPT</span></code> 功能受到支持 (参见 <span class="target" id="index-20"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc6855.html"><strong>RFC 6855</strong></a>)。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.5 新版功能: </span><a class="reference internal" href="#imaplib.IMAP4.enable" title="imaplib.IMAP4.enable"><code class="xref py py-meth docutils literal notranslate"><span class="pre">enable()</span></code></a> 方法本身,以及 <span class="target" id="index-21"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc6855.html"><strong>RFC 6855</strong></a> 支持。</p>
</div>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.expunge">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">expunge</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.expunge" title="永久链接至目标"></a></dt>
<dd><p>从选定的邮箱中永久移除被删除的条目。 为每条被删除的消息各生成一个 <code class="docutils literal notranslate"><span class="pre">EXPUNGE</span></code> 响应。 返回包含按接收时间排序的 <code class="docutils literal notranslate"><span class="pre">EXPUNGE</span></code> 消息编号的列表。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.fetch">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">fetch</code><span class="sig-paren">(</span><em class="sig-param">message_set</em>, <em class="sig-param">message_parts</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.fetch" title="永久链接至目标"></a></dt>
<dd><p>获取消息(的各个部分)。 <em>message_parts</em> 应为加圆标号的消息部分名称字符串,例如: <code class="docutils literal notranslate"><span class="pre">&quot;(UID</span> <span class="pre">BODY[TEXT])&quot;</span></code>。 返回的数据是由消息部分封包和数据组成的元组。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.getacl">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">getacl</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.getacl" title="永久链接至目标"></a></dt>
<dd><p>获取 <em>mailbox</em><code class="docutils literal notranslate"><span class="pre">ACL</span></code>。 此方法是非标准的,但是被 <code class="docutils literal notranslate"><span class="pre">Cyrus</span></code> 服务器所支持。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.getannotation">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">getannotation</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em>, <em class="sig-param">entry</em>, <em class="sig-param">attribute</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.getannotation" title="永久链接至目标"></a></dt>
<dd><p>提取 <em>mailbox</em> 的特定 <code class="docutils literal notranslate"><span class="pre">ANNOTATION</span></code>。 此方法是非标准的,但是被 <code class="docutils literal notranslate"><span class="pre">Cyrus</span></code> 服务器所支持。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.getquota">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">getquota</code><span class="sig-paren">(</span><em class="sig-param">root</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.getquota" title="永久链接至目标"></a></dt>
<dd><p>获取 <code class="docutils literal notranslate"><span class="pre">quota</span></code> <em>root</em> 的资源使用和限制。 此方法是 rfc2087 定义的 IMAP4 QUOTA 扩展的组成部分。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.getquotaroot">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">getquotaroot</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.getquotaroot" title="永久链接至目标"></a></dt>
<dd><p>获取指定 <em>mailbox</em><code class="docutils literal notranslate"><span class="pre">quota</span></code> <code class="docutils literal notranslate"><span class="pre">roots</span></code> 列表。 此方法是 rfc2087 定义的 IMAP4 QUOTA 扩展的组成部分。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.list">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">list</code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param">directory</em><span class="optional">[</span>, <em class="sig-param">pattern</em><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.list" title="永久链接至目标"></a></dt>
<dd><p>列出 <em>directory</em> 中与 <em>pattern</em> 相匹配的邮箱名称。 <em>directory</em> 默认为最高层级的电邮文件夹,而 <em>pattern</em> 默认为匹配任何文本。 返回的数据包含 <code class="docutils literal notranslate"><span class="pre">LIST</span></code> 响应列表。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.login">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">login</code><span class="sig-paren">(</span><em class="sig-param">user</em>, <em class="sig-param">password</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.login" title="永久链接至目标"></a></dt>
<dd><p>使用纯文本密码标识客户。 <em>password</em> 将被转码。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.login_cram_md5">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">login_cram_md5</code><span class="sig-paren">(</span><em class="sig-param">user</em>, <em class="sig-param">password</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.login_cram_md5" title="永久链接至目标"></a></dt>
<dd><p>在标识用户以保护密码时强制使用 <code class="docutils literal notranslate"><span class="pre">CRAM-MD5</span></code> 认证。 将只在服务器 <code class="docutils literal notranslate"><span class="pre">CAPABILITY</span></code> 响应包含 <code class="docutils literal notranslate"><span class="pre">AUTH=CRAM-MD5</span></code> 阶段时才有效。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.logout">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">logout</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.logout" title="永久链接至目标"></a></dt>
<dd><p>关闭对服务器的连接。 返回服务器 <code class="docutils literal notranslate"><span class="pre">BYE</span></code> 响应。</p>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.8 版更改: </span>此方法不会再忽略静默的任意异常。</p>
</div>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.lsub">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">lsub</code><span class="sig-paren">(</span><em class="sig-param">directory='&quot;&quot;'</em>, <em class="sig-param">pattern='*'</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.lsub" title="永久链接至目标"></a></dt>
<dd><p>列出 directory 中抽取的与 pattern 相匹配的邮箱。 <em>directory</em> 默认为最高层级目录而 <em>pattern</em> 默认为匹配任何邮箱。 返回的数据为消息部分封包和数据的元组。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.myrights">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">myrights</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.myrights" title="永久链接至目标"></a></dt>
<dd><p>显示某个邮箱的本人 ACL (即本人在邮箱中的权限)。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.namespace">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">namespace</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.namespace" title="永久链接至目标"></a></dt>
<dd><p>返回 <span class="target" id="index-22"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc2342.html"><strong>RFC 2342</strong></a> 中定义的 IMAP 命名空间。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.noop">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">noop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.noop" title="永久链接至目标"></a></dt>
<dd><p><code class="docutils literal notranslate"><span class="pre">NOOP</span></code> 发送给服务器。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.open">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">open</code><span class="sig-paren">(</span><em class="sig-param">host</em>, <em class="sig-param">port</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.open" title="永久链接至目标"></a></dt>
<dd><p>Opens socket to <em>port</em> at <em>host</em>. This method is implicitly called by
the <a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> constructor. The connection objects established by this
method will be used in the <a class="reference internal" href="#imaplib.IMAP4.read" title="imaplib.IMAP4.read"><code class="xref py py-meth docutils literal notranslate"><span class="pre">IMAP4.read()</span></code></a>, <a class="reference internal" href="#imaplib.IMAP4.readline" title="imaplib.IMAP4.readline"><code class="xref py py-meth docutils literal notranslate"><span class="pre">IMAP4.readline()</span></code></a>,
<a class="reference internal" href="#imaplib.IMAP4.send" title="imaplib.IMAP4.send"><code class="xref py py-meth docutils literal notranslate"><span class="pre">IMAP4.send()</span></code></a>, and <a class="reference internal" href="#imaplib.IMAP4.shutdown" title="imaplib.IMAP4.shutdown"><code class="xref py py-meth docutils literal notranslate"><span class="pre">IMAP4.shutdown()</span></code></a> methods. You may override
this method.</p>
<p class="audit-hook">引发一个 <a class="reference internal" href="sys.html#auditing"><span class="std std-ref">审计事件</span></a> <code class="docutils literal notranslate"><span class="pre">imaplib.open</span></code> 并附带参数 <code class="docutils literal notranslate"><span class="pre">self</span></code>, <code class="docutils literal notranslate"><span class="pre">host</span></code>, <code class="docutils literal notranslate"><span class="pre">port</span></code></p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.partial">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">partial</code><span class="sig-paren">(</span><em class="sig-param">message_num</em>, <em class="sig-param">message_part</em>, <em class="sig-param">start</em>, <em class="sig-param">length</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.partial" title="永久链接至目标"></a></dt>
<dd><p>获取消息被截断的部分。 返回的数据是由消息部分封包和数据组成的元组。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.proxyauth">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">proxyauth</code><span class="sig-paren">(</span><em class="sig-param">user</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.proxyauth" title="永久链接至目标"></a></dt>
<dd><p>作为 <em>user</em> 进行认证。 允许经权限的管理员通过代理进入任意用户的邮箱。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.read">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">read</code><span class="sig-paren">(</span><em class="sig-param">size</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.read" title="永久链接至目标"></a></dt>
<dd><p>从远程服务器读取 <em>size</em> 字节。 你可以重写此方法。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.readline">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">readline</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.readline" title="永久链接至目标"></a></dt>
<dd><p>从远程服务器读取一行。 你可以重写此方法。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.recent">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">recent</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.recent" title="永久链接至目标"></a></dt>
<dd><p>提示服务器进行更新。 如果没有新消息则返回的数据为 <code class="docutils literal notranslate"><span class="pre">None</span></code>,否则为 <code class="docutils literal notranslate"><span class="pre">RECENT</span></code> 响应的值。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.rename">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">rename</code><span class="sig-paren">(</span><em class="sig-param">oldmailbox</em>, <em class="sig-param">newmailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.rename" title="永久链接至目标"></a></dt>
<dd><p>将名为 <em>oldmailbox</em> 的邮箱重命名为 <em>newmailbox</em></p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.response">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">response</code><span class="sig-paren">(</span><em class="sig-param">code</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.response" title="永久链接至目标"></a></dt>
<dd><p>如果收到响应 <em>code</em> 则返回其数据,否则返回 <code class="docutils literal notranslate"><span class="pre">None</span></code>。 返回给定的代码,而不是普通的类型。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.search">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">search</code><span class="sig-paren">(</span><em class="sig-param">charset</em>, <em class="sig-param">criterion</em><span class="optional">[</span>, <em class="sig-param">...</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.search" title="永久链接至目标"></a></dt>
<dd><p>在邮箱中搜索匹配的消息。 <em>charset</em> 可以为 <code class="docutils literal notranslate"><span class="pre">None</span></code>,在这种情况下在发给服务器的请求中将不指定 <code class="docutils literal notranslate"><span class="pre">CHARSET</span></code>。 IMAP 协议要求至少指定一个标准;当服务器返回错误时将会引发异常。 <em>charset</em><code class="docutils literal notranslate"><span class="pre">None</span></code> 对应使用 <a class="reference internal" href="#imaplib.IMAP4.enable" title="imaplib.IMAP4.enable"><code class="xref py py-meth docutils literal notranslate"><span class="pre">enable()</span></code></a> 命令启用了 <code class="docutils literal notranslate"><span class="pre">UTF8=ACCEPT</span></code> 功能的情况。</p>
<p>示例:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># M is a connected IMAP4 instance...</span>
<span class="n">typ</span><span class="p">,</span> <span class="n">msgnums</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;FROM&#39;</span><span class="p">,</span> <span class="s1">&#39;&quot;LDJ&quot;&#39;</span><span class="p">)</span>
<span class="c1"># or:</span>
<span class="n">typ</span><span class="p">,</span> <span class="n">msgnums</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;(FROM &quot;LDJ&quot;)&#39;</span><span class="p">)</span>
</pre></div>
</div>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.select">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">select</code><span class="sig-paren">(</span><em class="sig-param">mailbox='INBOX'</em>, <em class="sig-param">readonly=False</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.select" title="永久链接至目标"></a></dt>
<dd><p>选择一个邮箱。 返回的数据是 <em>mailbox</em> 中消息的数量 (<code class="docutils literal notranslate"><span class="pre">EXISTS</span></code> 响应)。 默认的 <em>mailbox</em><code class="docutils literal notranslate"><span class="pre">'INBOX'</span></code>。 如果设置了 <em>readonly</em> 旗标,则不允许修改该邮箱。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.send">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">send</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.send" title="永久链接至目标"></a></dt>
<dd><p><code class="docutils literal notranslate"><span class="pre">data</span></code> 发送给远程服务器。 你可以重写此方法。</p>
<p class="audit-hook">引发一个 <a class="reference internal" href="sys.html#auditing"><span class="std std-ref">审计事件</span></a> <code class="docutils literal notranslate"><span class="pre">imaplib.send</span></code> 并附带参数 <code class="docutils literal notranslate"><span class="pre">self</span></code>, <code class="docutils literal notranslate"><span class="pre">data</span></code></p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.setacl">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">setacl</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em>, <em class="sig-param">who</em>, <em class="sig-param">what</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.setacl" title="永久链接至目标"></a></dt>
<dd><p>发送 <em>mailbox</em><code class="docutils literal notranslate"><span class="pre">ACL</span></code>。 此方法是非标准的,但是被 <code class="docutils literal notranslate"><span class="pre">Cyrus</span></code> 服务器所支持。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.setannotation">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">setannotation</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em>, <em class="sig-param">entry</em>, <em class="sig-param">attribute</em><span class="optional">[</span>, <em class="sig-param">...</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.setannotation" title="永久链接至目标"></a></dt>
<dd><p>设置 <em>mailbox</em><code class="docutils literal notranslate"><span class="pre">ANNOTATION</span></code>。 此方法是非标准的,但是被 <code class="docutils literal notranslate"><span class="pre">Cyrus</span></code> 服务器所支持。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.setquota">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">setquota</code><span class="sig-paren">(</span><em class="sig-param">root</em>, <em class="sig-param">limits</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.setquota" title="永久链接至目标"></a></dt>
<dd><p>设置 <code class="docutils literal notranslate"><span class="pre">quota</span></code> <em>root</em> 的资源限制为 <em>limits</em>。 此方法是 rfc2087 定义的 IMAP4 QUOTA 扩展的组成部分。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.shutdown">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">shutdown</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.shutdown" title="永久链接至目标"></a></dt>
<dd><p>关闭在 <code class="docutils literal notranslate"><span class="pre">open</span></code> 中建立的连接。 此方法会由 <a class="reference internal" href="#imaplib.IMAP4.logout" title="imaplib.IMAP4.logout"><code class="xref py py-meth docutils literal notranslate"><span class="pre">IMAP4.logout()</span></code></a> 隐式地调用。 你可以重写此方法。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.socket">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">socket</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.socket" title="永久链接至目标"></a></dt>
<dd><p>返回用于连接服务器的套接字实例。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.sort">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">sort</code><span class="sig-paren">(</span><em class="sig-param">sort_criteria</em>, <em class="sig-param">charset</em>, <em class="sig-param">search_criterion</em><span class="optional">[</span>, <em class="sig-param">...</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.sort" title="永久链接至目标"></a></dt>
<dd><p><code class="docutils literal notranslate"><span class="pre">sort</span></code> 命令是 <code class="docutils literal notranslate"><span class="pre">search</span></code> 的变化形式,带有结果排序语句。 返回的数据包含以空格分隔的匹配消息编号列表。</p>
<p>sort 命令在 <em>search_criterion</em> 参数之前还有两个参数;一个带圆括号的 <em>sort_criteria</em> 列表,和搜索的 <em>charset</em>。 请注意不同于 <code class="docutils literal notranslate"><span class="pre">search</span></code>,搜索的 <em>charset</em> 参数是强制性的。 还有一个 <code class="docutils literal notranslate"><span class="pre">uid</span> <span class="pre">sort</span></code> 命令与 <code class="docutils literal notranslate"><span class="pre">sort</span></code> 对应,如同 <code class="docutils literal notranslate"><span class="pre">uid</span> <span class="pre">search</span></code><code class="docutils literal notranslate"><span class="pre">search</span></code> 对应一样。 <code class="docutils literal notranslate"><span class="pre">sort</span></code> 命令首先在邮箱中搜索匹配给定搜索条件的消息,使用 charset 参数来解读搜索条件中的字符串。 然后它将返回所匹配消息的编号。</p>
<p>这是一个 <code class="docutils literal notranslate"><span class="pre">IMAP4rev1</span></code> 扩展命令。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.starttls">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">starttls</code><span class="sig-paren">(</span><em class="sig-param">ssl_context=None</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.starttls" title="永久链接至目标"></a></dt>
<dd><p>发送一个 <code class="docutils literal notranslate"><span class="pre">STARTTLS</span></code> 命令。 <em>ssl_context</em> 参数是可选的并且应为一个 <a class="reference internal" href="ssl.html#ssl.SSLContext" title="ssl.SSLContext"><code class="xref py py-class docutils literal notranslate"><span class="pre">ssl.SSLContext</span></code></a> 对象。 这将在 IMAP 连接上启用加密。 请阅读 <a class="reference internal" href="ssl.html#ssl-security"><span class="std std-ref">安全考量</span></a> 来了解最佳实践。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.2 新版功能.</span></p>
</div>
<div class="versionchanged">
<p><span class="versionmodified changed">在 3.4 版更改: </span>此方法现在支持使用 <a class="reference internal" href="ssl.html#ssl.SSLContext.check_hostname" title="ssl.SSLContext.check_hostname"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ssl.SSLContext.check_hostname</span></code></a><em>服务器名称指示</em> (参见 <a class="reference internal" href="ssl.html#ssl.HAS_SNI" title="ssl.HAS_SNI"><code class="xref py py-data docutils literal notranslate"><span class="pre">ssl.HAS_SNI</span></code></a>) 进行主机名检查。</p>
</div>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.status">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">status</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em>, <em class="sig-param">names</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.status" title="永久链接至目标"></a></dt>
<dd><p>针对 <em>mailbox</em> 请求指定的状态条件。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.store">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">store</code><span class="sig-paren">(</span><em class="sig-param">message_set</em>, <em class="sig-param">command</em>, <em class="sig-param">flag_list</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.store" title="永久链接至目标"></a></dt>
<dd><p>改变邮箱中消息的旗标处理。 <em>command</em><span class="target" id="index-23"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc2060.html"><strong>RFC 2060</strong></a> 的 6.4.6 小节指明,应为 &quot;FLAGS&quot;, &quot;+FLAGS&quot;&quot;-FLAGS&quot; 之一,并可选择附带 &quot;.SILENT&quot; 后缀。</p>
<p>例如,要在所有消息上设置删除旗标:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">typ</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;ALL&#39;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">num</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">():</span>
<span class="n">M</span><span class="o">.</span><span class="n">store</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="s1">&#39;+FLAGS&#39;</span><span class="p">,</span> <span class="s1">&#39;</span><span class="se">\\</span><span class="s1">Deleted&#39;</span><span class="p">)</span>
<span class="n">M</span><span class="o">.</span><span class="n">expunge</span><span class="p">()</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>创建包含 ']' 的旗标 (例如: &quot;[test]&quot;) 会违反 <span class="target" id="index-24"></span><a class="rfc reference external" href="https://tools.ietf.org/html/rfc3501.html"><strong>RFC 3501</strong></a> (IMAP 协议)。 但是imaplib 在历史上曾经允许创建这样的标签,并且流行的 IMAP 服务器如 Gmail 都会接受并生成这样的旗标。 有些非 Python 程序也会创建这样的旗标。 虽然它违反 RFC 并且 IMAP 客户端和服务器应当严格遵守规范,但是 imaplib 出于向下兼容的理由仍然继续允许创建这样的标签,并且在 Python 3.6 中会在其被服务器所发送时处理它们,因为这能提升实际的兼容性。</p>
</div>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.subscribe">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">subscribe</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.subscribe" title="永久链接至目标"></a></dt>
<dd><p>订阅新邮箱。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.thread">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">thread</code><span class="sig-paren">(</span><em class="sig-param">threading_algorithm</em>, <em class="sig-param">charset</em>, <em class="sig-param">search_criterion</em><span class="optional">[</span>, <em class="sig-param">...</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.thread" title="永久链接至目标"></a></dt>
<dd><p><code class="docutils literal notranslate"><span class="pre">thread</span></code> 命令是 <code class="docutils literal notranslate"><span class="pre">search</span></code> 的变化形式,带有针对结果的消息串句法。 返回的数据包含以空格分隔的消息串成员列表。</p>
<p>消息串成员由零个或多个消息编号组成,以空格分隔,标示了连续的上下级关系。</p>
<p>thread 命令在 <em>search_criterion</em> 参数之前还有两个参数;一个 <em>threading_algorithm</em>,以及搜索使用的 <em>charset</em>。 请注意不同于 <code class="docutils literal notranslate"><span class="pre">search</span></code>,搜索使用的 <em>charset</em> 参数是强制性的。 还有一个 <code class="docutils literal notranslate"><span class="pre">uid</span> <span class="pre">thread</span></code> 命令与 <code class="docutils literal notranslate"><span class="pre">thread</span></code> 对应,如同 <code class="docutils literal notranslate"><span class="pre">uid</span> <span class="pre">search</span></code><code class="docutils literal notranslate"><span class="pre">search</span></code> 对应一个。 <code class="docutils literal notranslate"><span class="pre">thread</span></code> 命令首先在邮箱中搜索匹配给定搜索条件的消息,使用 charset 参数来解读搜索条件中的字符串。 然后它将按照指定的消息串算法返回所匹配的消息串。</p>
<p>这是一个 <code class="docutils literal notranslate"><span class="pre">IMAP4rev1</span></code> 扩展命令。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.uid">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">uid</code><span class="sig-paren">(</span><em class="sig-param">command</em>, <em class="sig-param">arg</em><span class="optional">[</span>, <em class="sig-param">...</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.uid" title="永久链接至目标"></a></dt>
<dd><p>执行 command arg 并附带用 UID 所标识的消息,而不是用消息编号。 返回与命令对应的响应。 必须至少提供一个参数;如果不提供任何参数,服务器将返回错误并引发异常。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.unsubscribe">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">unsubscribe</code><span class="sig-paren">(</span><em class="sig-param">mailbox</em><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.unsubscribe" title="永久链接至目标"></a></dt>
<dd><p>取消订阅原有邮箱。</p>
</dd></dl>
<dl class="method">
<dt id="imaplib.IMAP4.xatom">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">xatom</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="optional">[</span>, <em class="sig-param">...</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#imaplib.IMAP4.xatom" title="永久链接至目标"></a></dt>
<dd><p>允许服务器在 <code class="docutils literal notranslate"><span class="pre">CAPABILITY</span></code> 响应中通知简单的扩展命令。</p>
</dd></dl>
<p><a class="reference internal" href="#imaplib.IMAP4" title="imaplib.IMAP4"><code class="xref py py-class docutils literal notranslate"><span class="pre">IMAP4</span></code></a> 的实例上定义了下列属性:</p>
<dl class="attribute">
<dt id="imaplib.IMAP4.PROTOCOL_VERSION">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">PROTOCOL_VERSION</code><a class="headerlink" href="#imaplib.IMAP4.PROTOCOL_VERSION" title="永久链接至目标"></a></dt>
<dd><p>在服务器的 <code class="docutils literal notranslate"><span class="pre">CAPABILITY</span></code> 响应中最新的受支持协议。</p>
</dd></dl>
<dl class="attribute">
<dt id="imaplib.IMAP4.debug">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">debug</code><a class="headerlink" href="#imaplib.IMAP4.debug" title="永久链接至目标"></a></dt>
<dd><p>控制调试输出的整数值。 初始值会从模块变量 <code class="docutils literal notranslate"><span class="pre">Debug</span></code> 中获取。 大于三的值表示将追踪每一条命令。</p>
</dd></dl>
<dl class="attribute">
<dt id="imaplib.IMAP4.utf8_enabled">
<code class="sig-prename descclassname">IMAP4.</code><code class="sig-name descname">utf8_enabled</code><a class="headerlink" href="#imaplib.IMAP4.utf8_enabled" title="永久链接至目标"></a></dt>
<dd><p>通常为 <code class="docutils literal notranslate"><span class="pre">False</span></code> 的布尔值,但也可以被设为 <code class="docutils literal notranslate"><span class="pre">True</span></code>,如果成功地为 <code class="docutils literal notranslate"><span class="pre">UTF8=ACCEPT</span></code> 功能发送了 <a class="reference internal" href="#imaplib.IMAP4.enable" title="imaplib.IMAP4.enable"><code class="xref py py-meth docutils literal notranslate"><span class="pre">enable()</span></code></a> 命令的话。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.5 新版功能.</span></p>
</div>
</dd></dl>
</section>
<section id="imap4-example">
<span id="id2"></span><h2>IMAP4 示例<a class="headerlink" href="#imap4-example" title="永久链接至标题"></a></h2>
<p>以下是一个最短示例(不带错误检查),该示例将打开邮箱,检索并打印所有消息:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">getpass</span><span class="o">,</span> <span class="nn">imaplib</span>
<span class="n">M</span> <span class="o">=</span> <span class="n">imaplib</span><span class="o">.</span><span class="n">IMAP4</span><span class="p">()</span>
<span class="n">M</span><span class="o">.</span><span class="n">login</span><span class="p">(</span><span class="n">getpass</span><span class="o">.</span><span class="n">getuser</span><span class="p">(),</span> <span class="n">getpass</span><span class="o">.</span><span class="n">getpass</span><span class="p">())</span>
<span class="n">M</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
<span class="n">typ</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="s1">&#39;ALL&#39;</span><span class="p">)</span>
<span class="k">for</span> <span class="n">num</span> <span class="ow">in</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">():</span>
<span class="n">typ</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="s1">&#39;(RFC822)&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Message </span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">num</span><span class="p">,</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]))</span>
<span class="n">M</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="n">M</span><span class="o">.</span><span class="n">logout</span><span class="p">()</span>
</pre></div>
</div>
</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">imaplib</span></code> --- IMAP4 协议客户端</a><ul>
<li><a class="reference internal" href="#imap4-objects">IMAP4 对象</a></li>
<li><a class="reference internal" href="#imap4-example">IMAP4 示例</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="poplib.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">poplib</span></code> --- POP3 协议客户端</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="nntplib.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">nntplib</span></code> --- NNTP 协议客户端</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/imaplib.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="nntplib.html" title="nntplib --- NNTP 协议客户端"
>下一页</a> |</li>
<li class="right" >
<a href="poplib.html" title="poplib --- POP3 协议客户端"
>上一页</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="internet.html" >互联网协议和支持</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>