2016-10-30 09:46:26 +00:00
|
|
|
# SOME DESCRIPTIVE TITLE.
|
|
|
|
# Copyright (C) 2001-2016, Python Software Foundation
|
|
|
|
# This file is distributed under the same license as the Python package.
|
|
|
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
|
|
|
#
|
|
|
|
#, fuzzy
|
|
|
|
msgid ""
|
|
|
|
msgstr ""
|
|
|
|
"Project-Id-Version: Python 3.6\n"
|
|
|
|
"Report-Msgid-Bugs-To: \n"
|
2017-05-27 17:46:38 +00:00
|
|
|
"POT-Creation-Date: 2017-05-27 19:40+0200\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
|
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
|
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
2017-05-23 22:40:56 +00:00
|
|
|
"Language: fr\n"
|
2016-10-30 09:46:26 +00:00
|
|
|
"MIME-Version: 1.0\n"
|
|
|
|
"Content-Type: text/plain; charset=UTF-8\n"
|
|
|
|
"Content-Transfer-Encoding: 8bit\n"
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:2
|
|
|
|
msgid ":mod:`email.parser`: Parsing email messages"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:7
|
|
|
|
msgid "**Source code:** :source:`Lib/email/parser.py`"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:11
|
|
|
|
msgid ""
|
|
|
|
"Message object structures can be created in one of two ways: they can be "
|
|
|
|
"created from whole cloth by creating an :class:`~email.message.EmailMessage` "
|
|
|
|
"object, adding headers using the dictionary interface, and adding payload(s) "
|
|
|
|
"using :meth:`~email.message.EmailMessage.set_content` and related methods, "
|
|
|
|
"or they can be created by parsing a serialized representation of the email "
|
|
|
|
"message."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:18
|
|
|
|
msgid ""
|
|
|
|
"The :mod:`email` package provides a standard parser that understands most "
|
|
|
|
"email document structures, including MIME documents. You can pass the "
|
|
|
|
"parser a bytes, string or file object, and the parser will return to you the "
|
|
|
|
"root :class:`~email.message.EmailMessage` instance of the object structure. "
|
|
|
|
"For simple, non-MIME messages the payload of this root object will likely be "
|
|
|
|
"a string containing the text of the message. For MIME messages, the root "
|
|
|
|
"object will return ``True`` from its :meth:`~email.message.EmailMessage."
|
|
|
|
"is_multipart` method, and the subparts can be accessed via the payload "
|
|
|
|
"manipulation methods, such as :meth:`~email.message.EmailMessage.get_body`, :"
|
|
|
|
"meth:`~email.message.EmailMessage.iter_parts`, and :meth:`~email.message."
|
|
|
|
"EmailMessage.walk`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:30
|
|
|
|
msgid ""
|
|
|
|
"There are actually two parser interfaces available for use, the :class:"
|
|
|
|
"`Parser` API and the incremental :class:`FeedParser` API. The :class:"
|
|
|
|
"`Parser` API is most useful if you have the entire text of the message in "
|
|
|
|
"memory, or if the entire message lives in a file on the file system. :class:"
|
|
|
|
"`FeedParser` is more appropriate when you are reading the message from a "
|
|
|
|
"stream which might block waiting for more input (such as reading an email "
|
|
|
|
"message from a socket). The :class:`FeedParser` can consume and parse the "
|
|
|
|
"message incrementally, and only returns the root object when you close the "
|
|
|
|
"parser."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:39
|
|
|
|
msgid ""
|
|
|
|
"Note that the parser can be extended in limited ways, and of course you can "
|
|
|
|
"implement your own parser completely from scratch. All of the logic that "
|
|
|
|
"connects the :mod:`email` package's bundled parser and the :class:`~email."
|
|
|
|
"message.EmailMessage` class is embodied in the :mod:`policy` class, so a "
|
|
|
|
"custom parser can create message object trees any way it finds necessary by "
|
|
|
|
"implementing custom versions of the appropriate :mod:`policy` methods."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:49
|
|
|
|
msgid "FeedParser API"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:51
|
|
|
|
msgid ""
|
|
|
|
"The :class:`BytesFeedParser`, imported from the :mod:`email.feedparser` "
|
|
|
|
"module, provides an API that is conducive to incremental parsing of email "
|
|
|
|
"messages, such as would be necessary when reading the text of an email "
|
|
|
|
"message from a source that can block (such as a socket). The :class:"
|
|
|
|
"`BytesFeedParser` can of course be used to parse an email message fully "
|
|
|
|
"contained in a :term:`bytes-like object`, string, or file, but the :class:"
|
|
|
|
"`BytesParser` API may be more convenient for such use cases. The semantics "
|
|
|
|
"and results of the two parser APIs are identical."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:60
|
|
|
|
msgid ""
|
|
|
|
"The :class:`BytesFeedParser`'s API is simple; you create an instance, feed "
|
|
|
|
"it a bunch of bytes until there's no more to feed it, then close the parser "
|
|
|
|
"to retrieve the root message object. The :class:`BytesFeedParser` is "
|
|
|
|
"extremely accurate when parsing standards-compliant messages, and it does a "
|
|
|
|
"very good job of parsing non-compliant messages, providing information about "
|
|
|
|
"how a message was deemed broken. It will populate a message object's :attr:"
|
|
|
|
"`~email.message.EmailMessage.defects` attribute with a list of any problems "
|
|
|
|
"it found in a message. See the :mod:`email.errors` module for the list of "
|
|
|
|
"defects that it can find."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:70
|
|
|
|
msgid "Here is the API for the :class:`BytesFeedParser`:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:75
|
|
|
|
msgid ""
|
|
|
|
"Create a :class:`BytesFeedParser` instance. Optional *_factory* is a no-"
|
|
|
|
"argument callable; if not specified use the :attr:`~email.policy.Policy."
|
|
|
|
"message_factory` from the *policy*. Call *_factory* whenever a new message "
|
|
|
|
"object is needed."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:80
|
|
|
|
msgid ""
|
|
|
|
"If *policy* is specified use the rules it specifies to update the "
|
|
|
|
"representation of the message. If *policy* is not set, use the :class:"
|
|
|
|
"`compat32 <email.policy.Compat32>` policy, which maintains backward "
|
|
|
|
"compatibility with the Python 3.2 version of the email package and provides :"
|
|
|
|
"class:`~email.message.Message` as the default factory. All other policies "
|
|
|
|
"provide :class:`~email.message.EmailMessage` as the default *_factory*. For "
|
|
|
|
"more information on what else *policy* controls, see the :mod:`~email."
|
|
|
|
"policy` documentation."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:89 ../Doc/library/email.parser.rst:145
|
|
|
|
msgid ""
|
|
|
|
"Note: **The policy keyword should always be specified**; The default will "
|
|
|
|
"change to :data:`email.policy.default` in a future version of Python."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:94 ../Doc/library/email.parser.rst:122
|
|
|
|
msgid "Added the *policy* keyword."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:95
|
|
|
|
msgid "*_factory* defaults to the policy ``message_factory``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:100
|
|
|
|
msgid ""
|
|
|
|
"Feed the parser some more data. *data* should be a :term:`bytes-like "
|
|
|
|
"object` containing one or more lines. The lines can be partial and the "
|
|
|
|
"parser will stitch such partial lines together properly. The lines can have "
|
|
|
|
"any of the three common line endings: carriage return, newline, or carriage "
|
|
|
|
"return and newline (they can even be mixed)."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:109
|
|
|
|
msgid ""
|
|
|
|
"Complete the parsing of all previously fed data and return the root message "
|
|
|
|
"object. It is undefined what happens if :meth:`~feed` is called after this "
|
|
|
|
"method has been called."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:116
|
|
|
|
msgid ""
|
|
|
|
"Works like :class:`BytesFeedParser` except that the input to the :meth:"
|
|
|
|
"`~BytesFeedParser.feed` method must be a string. This is of limited "
|
|
|
|
"utility, since the only way for such a message to be valid is for it to "
|
|
|
|
"contain only ASCII text or, if :attr:`~email.policy.Policy.utf8` is "
|
|
|
|
"``True``, no binary attachments."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:126
|
|
|
|
msgid "Parser API"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:128
|
|
|
|
msgid ""
|
|
|
|
"The :class:`BytesParser` class, imported from the :mod:`email.parser` "
|
|
|
|
"module, provides an API that can be used to parse a message when the "
|
|
|
|
"complete contents of the message are available in a :term:`bytes-like "
|
|
|
|
"object` or file. The :mod:`email.parser` module also provides :class:"
|
|
|
|
"`Parser` for parsing strings, and header-only parsers, :class:"
|
|
|
|
"`BytesHeaderParser` and :class:`HeaderParser`, which can be used if you're "
|
|
|
|
"only interested in the headers of the message. :class:`BytesHeaderParser` "
|
|
|
|
"and :class:`HeaderParser` can be much faster in these situations, since they "
|
|
|
|
"do not attempt to parse the message body, instead setting the payload to the "
|
|
|
|
"raw body."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:141
|
|
|
|
msgid ""
|
|
|
|
"Create a :class:`BytesParser` instance. The *_class* and *policy* arguments "
|
2017-05-27 17:46:38 +00:00
|
|
|
"have the same meaning and semantics as the *_factory* and *policy* arguments "
|
2016-10-30 09:46:26 +00:00
|
|
|
"of :class:`BytesFeedParser`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:148
|
|
|
|
msgid ""
|
|
|
|
"Removed the *strict* argument that was deprecated in 2.4. Added the "
|
|
|
|
"*policy* keyword."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:151 ../Doc/library/email.parser.rst:200
|
|
|
|
#: ../Doc/library/email.parser.rst:280
|
|
|
|
msgid "*_class* defaults to the policy ``message_factory``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:156
|
|
|
|
msgid ""
|
|
|
|
"Read all the data from the binary file-like object *fp*, parse the resulting "
|
|
|
|
"bytes, and return the message object. *fp* must support both the :meth:`~io."
|
|
|
|
"IOBase.readline` and the :meth:`~io.IOBase.read` methods."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:161
|
|
|
|
msgid ""
|
|
|
|
"The bytes contained in *fp* must be formatted as a block of :rfc:`5322` (or, "
|
|
|
|
"if :attr:`~email.policy.Policy.utf8` is ``True``, :rfc:`6532`) style headers "
|
|
|
|
"and header continuation lines, optionally preceded by an envelope header. "
|
|
|
|
"The header block is terminated either by the end of the data or by a blank "
|
|
|
|
"line. Following the header block is the body of the message (which may "
|
|
|
|
"contain MIME-encoded subparts, including subparts with a :mailheader:"
|
|
|
|
"`Content-Transfer-Encoding` of ``8bit``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:169
|
|
|
|
msgid ""
|
|
|
|
"Optional *headersonly* is a flag specifying whether to stop parsing after "
|
|
|
|
"reading the headers or not. The default is ``False``, meaning it parses the "
|
|
|
|
"entire contents of the file."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:176
|
|
|
|
msgid ""
|
|
|
|
"Similar to the :meth:`parse` method, except it takes a :term:`bytes-like "
|
|
|
|
"object` instead of a file-like object. Calling this method on a :term:"
|
|
|
|
"`bytes-like object` is equivalent to wrapping *bytes* in a :class:`~io."
|
|
|
|
"BytesIO` instance first and calling :meth:`parse`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:181 ../Doc/library/email.parser.rst:221
|
|
|
|
msgid "Optional *headersonly* is as with the :meth:`parse` method."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:188
|
|
|
|
msgid ""
|
|
|
|
"Exactly like :class:`BytesParser`, except that *headersonly* defaults to "
|
|
|
|
"``True``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:196
|
|
|
|
msgid ""
|
|
|
|
"This class is parallel to :class:`BytesParser`, but handles string input."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:198 ../Doc/library/email.parser.rst:245
|
|
|
|
#: ../Doc/library/email.parser.rst:258 ../Doc/library/email.parser.rst:268
|
|
|
|
#: ../Doc/library/email.parser.rst:278
|
|
|
|
msgid "Removed the *strict* argument. Added the *policy* keyword."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:205
|
|
|
|
msgid ""
|
|
|
|
"Read all the data from the text-mode file-like object *fp*, parse the "
|
|
|
|
"resulting text, and return the root message object. *fp* must support both "
|
|
|
|
"the :meth:`~io.TextIOBase.readline` and the :meth:`~io.TextIOBase.read` "
|
|
|
|
"methods on file-like objects."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:210
|
|
|
|
msgid ""
|
|
|
|
"Other than the text mode requirement, this method operates like :meth:"
|
|
|
|
"`BytesParser.parse`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:216
|
|
|
|
msgid ""
|
|
|
|
"Similar to the :meth:`parse` method, except it takes a string object instead "
|
|
|
|
"of a file-like object. Calling this method on a string is equivalent to "
|
|
|
|
"wrapping *text* in a :class:`~io.StringIO` instance first and calling :meth:"
|
|
|
|
"`parse`."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:226
|
|
|
|
msgid ""
|
|
|
|
"Exactly like :class:`Parser`, except that *headersonly* defaults to ``True``."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:230
|
|
|
|
msgid ""
|
|
|
|
"Since creating a message object structure from a string or a file object is "
|
|
|
|
"such a common task, four functions are provided as a convenience. They are "
|
|
|
|
"available in the top-level :mod:`email` package namespace."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:239
|
|
|
|
msgid ""
|
|
|
|
"Return a message object structure from a :term:`bytes-like object`. This is "
|
|
|
|
"equivalent to ``BytesParser().parsebytes(s)``. Optional *_class* and "
|
|
|
|
"*strict* are interpreted as with the :class:`~email.parser.BytesParser` "
|
|
|
|
"class constructor."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:252
|
|
|
|
msgid ""
|
|
|
|
"Return a message object structure tree from an open binary :term:`file "
|
|
|
|
"object`. This is equivalent to ``BytesParser().parse(fp)``. *_class* and "
|
|
|
|
"*policy* are interpreted as with the :class:`~email.parser.BytesParser` "
|
|
|
|
"class constructor."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:264
|
|
|
|
msgid ""
|
|
|
|
"Return a message object structure from a string. This is equivalent to "
|
|
|
|
"``Parser().parsestr(s)``. *_class* and *policy* are interpreted as with "
|
|
|
|
"the :class:`~email.parser.Parser` class constructor."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:274
|
|
|
|
msgid ""
|
|
|
|
"Return a message object structure tree from an open :term:`file object`. "
|
|
|
|
"This is equivalent to ``Parser().parse(fp)``. *_class* and *policy* are "
|
|
|
|
"interpreted as with the :class:`~email.parser.Parser` class constructor."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:283
|
|
|
|
msgid ""
|
|
|
|
"Here's an example of how you might use :func:`message_from_bytes` at an "
|
|
|
|
"interactive Python prompt::"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:291
|
|
|
|
msgid "Additional notes"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:293
|
|
|
|
msgid "Here are some notes on the parsing semantics:"
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:295
|
|
|
|
msgid ""
|
|
|
|
"Most non-\\ :mimetype:`multipart` type messages are parsed as a single "
|
|
|
|
"message object with a string payload. These objects will return ``False`` "
|
|
|
|
"for :meth:`~email.message.EmailMessage.is_multipart`, and :meth:`~email."
|
|
|
|
"message.EmailMessage.iter_parts` will yield an empty list."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:300
|
|
|
|
msgid ""
|
|
|
|
"All :mimetype:`multipart` type messages will be parsed as a container "
|
|
|
|
"message object with a list of sub-message objects for their payload. The "
|
|
|
|
"outer container message will return ``True`` for :meth:`~email.message."
|
|
|
|
"EmailMessage.is_multipart`, and :meth:`~email.message.EmailMessage."
|
|
|
|
"iter_parts` will yield a list of subparts."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:306
|
|
|
|
msgid ""
|
|
|
|
"Most messages with a content type of :mimetype:`message/\\*` (such as :"
|
|
|
|
"mimetype:`message/delivery-status` and :mimetype:`message/rfc822`) will also "
|
|
|
|
"be parsed as container object containing a list payload of length 1. Their :"
|
|
|
|
"meth:`~email.message.EmailMessage.is_multipart` method will return ``True``. "
|
|
|
|
"The single element yielded by :meth:`~email.message.EmailMessage.iter_parts` "
|
|
|
|
"will be a sub-message object."
|
|
|
|
msgstr ""
|
|
|
|
|
|
|
|
#: ../Doc/library/email.parser.rst:313
|
|
|
|
msgid ""
|
|
|
|
"Some non-standards-compliant messages may not be internally consistent about "
|
|
|
|
"their :mimetype:`multipart`\\ -edness. Such messages may have a :mailheader:"
|
|
|
|
"`Content-Type` header of type :mimetype:`multipart`, but their :meth:`~email."
|
|
|
|
"message.EmailMessage.is_multipart` method may return ``False``. If such "
|
|
|
|
"messages were parsed with the :class:`~email.parser.FeedParser`, they will "
|
|
|
|
"have an instance of the :class:`~email.errors."
|
|
|
|
"MultipartInvariantViolationDefect` class in their *defects* attribute list. "
|
|
|
|
"See :mod:`email.errors` for details."
|
|
|
|
msgstr ""
|