email.contentmanager:管理 MIME 內容¶
原始碼:Lib/email/contentmanager.py
在 3.6 版被加入: [1]
- class email.contentmanager.ContentManager¶
Base class for content managers. Provides the standard registry mechanisms to register converters between MIME content and other representations, as well as the
get_contentandset_contentdispatch methods.- get_content(msg, *args, **kw)¶
Look up a handler function based on the
mimetypeof 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
maintypethe empty string
If none of these keys produce a handler, raise a
KeyErrorfor the full MIME type.
- set_content(msg, obj, *args, **kw)¶
If the
maintypeismultipart, raise aTypeError; otherwise look up a handler function based on the type of obj (see next paragraph), callclear_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 MRO (
typ.__mro__). Finally, if no other key yields a handler, check for a handler for the keyNone. If there is no handler forNone, raise aKeyErrorfor the fully qualified name of the type.Also add a MIME-Version header if one is not present (see also
MIMEPart).
- add_get_handler(key, handler)¶
Record the function handler as the handler for key. For the possible values of key, see
get_content().
- add_set_handler(typekey, handler)¶
Record handler as the function to call when an object of a type matching typekey is passed to
set_content(). For the possible values of typekey, seeset_content().
Content Manager Instances¶
Currently the email package provides only one concrete content manager,
raw_data_manager, although more may be added in the future.
raw_data_manager is the
content_manager provided by
EmailPolicy and its derivatives.
- email.contentmanager.raw_data_manager¶
This content manager provides only a minimum interface beyond that provided by
Messageitself: it deals only with text, raw byte strings, andMessageobjects. Nevertheless, it provides significant advantages compared to the base API:get_contenton a text part will return a unicode string without the application needing to manually decode it,set_contentprovides 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 variousadd_methods, thereby simplifying the creation of multipart messages.- email.contentmanager.get_content(msg, errors='replace')¶
Return the payload of the part as either a string (for
textparts), anEmailMessageobject (formessage/rfc822parts), or abytesobject (for all other non-multipart types). Raise aKeyErrorif called on amultipart. If the part is atextpart and errors is specified, use it as the error handler when decoding the payload to unicode. The default error handler isreplace.
- email.contentmanager.set_content(msg, <'str'>, subtype="plain", charset='utf-8', cte=None, disposition=None, filename=None, cid=None, params=None, headers=None)¶
- email.contentmanager.set_content(msg, <'bytes'>, maintype, subtype, cte="base64", disposition=None, filename=None, cid=None, params=None, headers=None)
- email.contentmanager.set_content(msg, <'EmailMessage'>, cte=None, disposition=None, filename=None, cid=None,