开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
python3.7.4
/
Doc
/
library
/
email.contentmanager.rst
python3.7.4
/
Doc
/
library
/
email.contentmanager.rst
email.contentmanager.rst 8.90 KB
一键复制 编辑 原始数据 按行查看 历史
zhangweibo 提交于 2021年11月17日 13:49 +08:00 . git init

:mod:`email.contentmanager`: Managing MIME Content

.. module:: email.contentmanager
 :synopsis: Storing and Retrieving Content from MIME Parts

.. moduleauthor:: R. David Murray <rdmurray@bitdance.com>
.. sectionauthor:: R. David Murray <rdmurray@bitdance.com>

Source code: :source:`Lib/email/contentmanager.py`


.. versionadded:: 3.6 [1]_


Base class for content managers. Provides the standard registry mechanisms to register converters between MIME content and other representations, as well as the get_content and set_content dispatch methods.

.. method:: get_content(msg, *args, **kw)

 Look up a handler function based on the ``mimetype`` of *msg* (see next
 paragraph), call it, passing through all arguments, and return the result
 of the call. The expectation is that the handler will extract the
 payload from *msg* and return an object that encodes information about
 the extracted data.

 To find the handler, look for the following keys in the registry,
 stopping with the first one found:

 * the string representing the full MIME type (``maintype/subtype``)
 * the string representing the ``maintype``
 * the empty string

 If none of these keys produce a handler, raise a :exc:`KeyError` for the
 full MIME type.


.. method:: set_content(msg, obj, *args, **kw)

 If the ``maintype`` is ``multipart``, raise a :exc:`TypeError`; otherwise
 look up a handler function based on the type of *obj* (see next
 paragraph), call :meth:`~email.message.EmailMessage.clear_content` on the
 *msg*, and call the handler function, passing through all arguments. The
 expectation is that the handler will transform and store *obj* into
 *msg*, possibly making other changes to *msg* as well, such as adding
 various MIME headers to encode information needed to interpret the stored
 data.

 To find the handler, obtain the type of *obj* (``typ = type(obj)``), and
 look for the following keys in the registry, stopping with the first one
 found:

 * the type itself (``typ``)
 * the type's fully qualified name (``typ.__module__ + '.' +
 typ.__qualname__``).
 * the type's qualname (``typ.__qualname__``)
 * the type's name (``typ.__name__``).

 If none of the above match, repeat all of the checks above for each of
 the types in the :term:`MRO` (``typ.__mro__``). Finally, if no other key
 yields a handler, check for a handler for the key ``None``. If there is
 no handler for ``None``, raise a :exc:`KeyError` for the fully
 qualified name of the type.

 Also add a :mailheader:`MIME-Version` header if one is not present (see
 also :class:`.MIMEPart`).


.. method:: add_get_handler(key, handler)

 Record the function *handler* as the handler for *key*. For the possible
 values of *key*, see :meth:`get_content`.


.. method:: add_set_handler(typekey, handler)

 Record *handler* as the function to call when an object of a type
 matching *typekey* is passed to :meth:`set_content`. For the possible
 values of *typekey*, see :meth:`set_content`.

Content Manager Instances

Currently the email package provides only one concrete content manager, :data:`raw_data_manager`, although more may be added in the future. :data:`raw_data_manager` is the :attr:`~email.policy.EmailPolicy.content_manager` provided by :attr:`~email.policy.EmailPolicy` and its derivatives.

.. data:: raw_data_manager

 This content manager provides only a minimum interface beyond that provided
 by :class:`~email.message.Message` itself: it deals only with text, raw
 byte strings, and :class:`~email.message.Message` objects. Nevertheless, it
 provides significant advantages compared to the base API: ``get_content`` on
 a text part will return a unicode string without the application needing to
 manually decode it, ``set_content`` provides a rich set of options for
 controlling the headers added to a part and controlling the content transfer
 encoding, and it enables the use of the various ``add_`` methods, thereby
 simplifying the creation of multipart messages.

 .. method:: get_content(msg, errors='replace')

 Return the payload of the part as either a string (for ``text`` parts), an
 :class:`~email.message.EmailMessage` object (for ``message/rfc822``
 parts), or a ``bytes`` object (for all other non-multipart types). Raise
 a :exc:`KeyError` if called on a ``multipart``. If the part is a
 ``text`` part and *errors* is specified, use it as the error handler when
 decoding the payload to unicode. The default error handler is
 ``replace``.

 .. method:: set_content(msg, <'str'>, subtype="plain", charset='utf-8' \
 cte=None, \
 disposition=None, filename=None, cid=None, \
 params=None, headers=None)
 set_content(msg, <'bytes'>, maintype, subtype, cte="base64", \
 disposition=None, filename=None, cid=None, \
 params=None, headers=None)
 set_content(msg, <'EmailMessage'>, cte=None, \
 disposition=None, filename=None, cid=None, \
 params=None, headers=None)

 Add headers and payload to *msg*:

 Add a :mailheader:`Content-Type` header with a ``maintype/subtype``
 value.

 * For ``str``, set the MIME ``maintype`` to ``text``, and set the
 subtype to *subtype* if it is specified, or ``plain`` if it is not.
 * For ``bytes``, use the specified *maintype* and *subtype*, or
 raise a :exc:`TypeError` if they are not specified.
 * For :class:`~email.message.EmailMessage` objects, set the maintype
 to ``message``, and set the subtype to *subtype* if it is
 specified or ``rfc822`` if it is not. If *subtype* is
 ``partial``, raise an error (``bytes`` objects must be used to
 construct ``message/partial`` parts).

 If *charset* is provided (which is valid only for ``str``), encode the
 string to bytes using the specified character set. The default is
 ``utf-8``. If the specified *charset* is a known alias for a standard
 MIME charset name, use the standard charset instead.

 If *cte* is set, encode the payload using the specified content transfer
 encoding, and set the :mailheader:`Content-Transfer-Encoding` header to
 that value. Possible values for *cte* are ``quoted-printable``,
 ``base64``, ``7bit``, ``8bit``, and ``binary``. If the input cannot be
 encoded in the specified encoding (for example, specifying a *cte* of
 ``7bit`` for an input that contains non-ASCII values), raise a
 :exc:`ValueError`.

 * For ``str`` objects, if *cte* is not set use heuristics to
 determine the most compact encoding.
 * For :class:`~email.message.EmailMessage`, per :rfc:`2046`, raise
 an error if a *cte* of ``quoted-printable`` or ``base64`` is
 requested for *subtype* ``rfc822``, and for any *cte* other than
 ``7bit`` for *subtype* ``external-body``. For
 ``message/rfc822``, use ``8bit`` if *cte* is not specified. For
 all other values of *subtype*, use ``7bit``.

 .. note:: A *cte* of ``binary`` does not actually work correctly yet.
 The ``EmailMessage`` object as modified by ``set_content`` is
 correct, but :class:`~email.generator.BytesGenerator` does not
 serialize it correctly.

 If *disposition* is set, use it as the value of the
 :mailheader:`Content-Disposition` header. If not specified, and
 *filename* is specified, add the header with the value ``attachment``.
 If *disposition* is not specified and *filename* is also not specified,
 do not add the header. The only valid values for *disposition* are
 ``attachment`` and ``inline``.

 If *filename* is specified, use it as the value of the ``filename``
 parameter of the :mailheader:`Content-Disposition` header.

 If *cid* is specified, add a :mailheader:`Content-ID` header with
 *cid* as its value.

 If *params* is specified, iterate its ``items`` method and use the
 resulting ``(key, value)`` pairs to set additional parameters on the
 :mailheader:`Content-Type` header.

 If *headers* is specified and is a list of strings of the form
 ``headername: headervalue`` or a list of ``header`` objects
 (distinguished from strings by having a ``name`` attribute), add the
 headers to *msg*.


Footnotes

[1] Originally added in 3.4 as a :term:`provisional module <provisional package>`
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/python_sourcecode/python3.7.4.git
git@gitee.com:python_sourcecode/python3.7.4.git
python_sourcecode
python3.7.4
python3.7.4
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /