uTools-Manuals/docs/python/mailcap.html
2019-04-21 11:50:48 +08:00

5 lines
7.4 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.

<div class="body" role="main"><div class="section" id="module-mailcap"><h1><span class="yiyi-st" id="yiyi-10">19.3. <a class="reference internal" href="#module-mailcap" title="mailcap: Mailcap file handling."><code class="xref py py-mod docutils literal"><span class="pre">mailcap</span></code></a> - Mailcap文件处理</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/mailcap.py">Lib / mailcap.py</a></span></p><p><span class="yiyi-st" id="yiyi-12">Mailcap文件用于配置MIME感知应用程序如邮件阅读器和Web浏览器对具有不同MIME类型的文件的反应。</span><span class="yiyi-st" id="yiyi-13">名称“mailcap”源自短语“邮件功能”。</span><span class="yiyi-st" id="yiyi-14">例如mailcap文件可能包含像<code class="docutils literal"><span class="pre">video / mpeg</span> <span class="pre">xmpeg</span> <span class="pre">s</span></code>的行。</span><span class="yiyi-st" id="yiyi-15">然后如果用户遇到MIME类型为<em class="mimetype">video / mpeg</em>的电子邮件或Web文档<code class="docutils literal"><span class="pre">%s</span></code>将替换为文件名(通常属于临时文件)和<strong class="program">xmpeg</strong>程序可以自动启动以查看文件。</span></p><p><span class="yiyi-st" id="yiyi-16">mailcap格式记录在<span class="target" id="index-0"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc1524.html"><strong>RFC 1524</strong></a>“用于多媒体邮件格式信息的用户代理配置机制”中但不是Internet标准。</span><span class="yiyi-st" id="yiyi-17">但是大多数Unix系统都支持mailcap文件。</span></p><dl class="function"><dt id="mailcap.findmatch"><span class="yiyi-st" id="yiyi-18"> <code class="descclassname">mailcap.</code><code class="descname">findmatch</code><span class="sig-paren">(</span><em>caps</em>, <em>MIMEtype</em>, <em>key='view'</em>, <em>filename='/dev/null'</em>, <em>plist=[]</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-19">返回一个2元组第一个元素是包含要执行的命令行的字符串可以传递到<a class="reference internal" href="os.html#os.system" title="os.system"><code class="xref py py-func docutils literal"><span class="pre">os.system()</span></code></a>第二个元素是给定MIME类型的mailcap条目。</span><span class="yiyi-st" id="yiyi-20">如果未找到匹配的MIME类型则返回<code class="docutils literal"><span class="pre">(无,</span> <span class="pre">无)</span></code></span></p><p><span class="yiyi-st" id="yiyi-21"><em></em>是所需字段的名称,表示要执行的活动类型;默认值是'view'因为在最常见的情况下你只需要查看MIME类型数据的主体。</span><span class="yiyi-st" id="yiyi-22">如果要创建给定MIME类型的新实体或更改现有实体数据其他可能的值可能是“compose”和“edit”。</span><span class="yiyi-st" id="yiyi-23">有关这些字段的完整列表,请参见<span class="target" id="index-1"></span> <a class="rfc reference external" href="https://tools.ietf.org/html/rfc1524.html"><strong>RFC 1524</strong></a></span></p><p><span class="yiyi-st" id="yiyi-24"><em>filename</em>是要替换命令行中<code class="docutils literal"><span class="pre">%s</span></code>的文件名;默认值是<code class="docutils literal"><span class="pre">'/dev/null'</span></code>,这几乎肯定不是你想要的,所以通常你会通过指定一个文件名来覆盖它。</span></p><p><span class="yiyi-st" id="yiyi-25"><em>plist</em>可以是包含命名参数的列表;默认值只是一个空列表。</span><span class="yiyi-st" id="yiyi-26">列表中的每个条目必须是包含参数名称,等号(<code class="docutils literal"><span class="pre">'='</span></code>)和参数值的字符串。</span><span class="yiyi-st" id="yiyi-27">Mailcap条目可以包含诸如<code class="docutils literal"><span class="pre">%{foo}</span></code>的命名参数它将被名为“foo”的参数的值替换。</span><span class="yiyi-st" id="yiyi-28">For example, if the command line <code class="docutils literal"><span class="pre">showpartial</span> <span class="pre">%{id}</span> <span class="pre">%{number}</span> <span class="pre">%{total}</span></code> was in a mailcap file, and <em>plist</em> was set to <code class="docutils literal"><span class="pre">['id=1',</span> <span class="pre">'number=2',</span> <span class="pre">'total=3']</span></code>, the resulting command line would be <code class="docutils literal"><span class="pre">'showpartial</span> <span class="pre">1</span> <span class="pre">2</span> <span class="pre">3'</span></code>.</span></p><p><span class="yiyi-st" id="yiyi-29">在mailcap文件中可以可选地指定“测试”字段以测试某些外部条件例如机器架构或正在使用的窗口系统以确定是否应用邮件帽线。</span><span class="yiyi-st" id="yiyi-30"><a class="reference internal" href="#mailcap.findmatch" title="mailcap.findmatch"><code class="xref py py-func docutils literal"><span class="pre">findmatch()</span></code></a>将自动检查这些条件,如果检查失败,则跳过该条目。</span></p></dd></dl><dl class="function"><dt id="mailcap.getcaps"><span class="yiyi-st" id="yiyi-31"> <code class="descclassname">mailcap.</code><code class="descname">getcaps</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-32">返回将MIME类型映射到mailcap文件条目列表的字典。</span><span class="yiyi-st" id="yiyi-33">此字典必须传递到<a class="reference internal" href="#mailcap.findmatch" title="mailcap.findmatch"><code class="xref py py-func docutils literal"><span class="pre">findmatch()</span></code></a>函数。</span><span class="yiyi-st" id="yiyi-34">条目存储为字典列表,但不必知道该表示的细节。</span></p><p><span class="yiyi-st" id="yiyi-35">该信息衍生自系统上找到的所有mailcap文件。</span><span class="yiyi-st" id="yiyi-36">Settings in the users mailcap file <code class="file docutils literal"><span class="pre">$HOME/.mailcap</span></code> will override settings in the system mailcap files <code class="file docutils literal"><span class="pre">/etc/mailcap</span></code>, <code class="file docutils literal"><span class="pre">/usr/etc/mailcap</span></code>, and <code class="file docutils literal"><span class="pre">/usr/local/etc/mailcap</span></code>.</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-37">示例用法:</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">mailcap</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">d</span> <span class="o">=</span> <span class="n">mailcap</span><span class="o">.</span><span class="n">getcaps</span><span class="p">()</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">mailcap</span><span class="o">.</span><span class="n">findmatch</span><span class="p">(</span><span class="n">d</span><span class="p">,</span> <span class="s1">'video/mpeg'</span><span class="p">,</span> <span class="n">filename</span><span class="o">=</span><span class="s1">'tmp1223'</span><span class="p">)</span>
<span class="go">('xmpeg tmp1223', {'view': 'xmpeg %s'})</span>
</code></pre></div></div>