### 12.2.2.1 Parser class API

class `Parser`([_class])
  The constructor for the `Parser` class takes a single optional argument _class. This must be a callable factory (such as a function or a class), and it is used whenever a sub-message object needs to be created. It defaults to `Message` (see `email.Message`). The factory will be called without arguments.

The other public `Parser` methods are:

`parse`(fp)
  Read all the data from the file-like object fp, parse the resulting text, and return the root message object. fp must support both the `readline()` and the `read()` methods on file-like objects.

  The text contained in fp must be formatted as a block of RFC 2822 style headers and header continuation lines, optionally preceeded by a Unix-From 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).

`parsestr`(text)
  Similar to the `parse()` method, except it takes a string object instead of a file-like object. Calling this method on a string is exactly equivalent to wrapping text in a `StringIO` instance first and calling `parse()`.

Since creating a message object tree from a string or a file object is such a common task, two functions are provided as a convenience. They are available in the top-level `email` package namespace.

`message_from_string`(s[, _class])
  Return a message object tree from a string. This is exactly equivalent to `Parser().parsestr(s)`. Optional _class is interpreted as with the `Parser` class constructor.

`message_from_file`(fp[, _class])
  Return a message object tree from an open file object. This is exactly equivalent to `Parser().parse(fp)`. Optional _class is interpreted as with the `Parser` class constructor.

Here's an example of how you might use this at an interactive Python prompt:

      >>> import email
      >>> msg = email.message_from_string(myString)