easyimap 0.7.0
Simple imap wrapper.
License: BSD License

About this module
-----------------
Simple imap wrapper.

.. image:: https://img.shields.io/pypi/v/easyimap.svg
    :target: https://pypi.python.org/pypi/easyimap/
    :alt: Latest Version
.. image:: https://img.shields.io/pypi/pyversions/easyimap.svg
    :target: https://pypi.python.org/pypi/easyimap/
    :alt: Supported Python versions
.. image:: https://img.shields.io/pypi/l/easyimap.svg
    :target: https://pypi.python.org/pypi/easyimap/
    :alt: License

Example to use
--------------

*connect* function create IMAP4_SSL instance by default::

    >>> import easyimap
    >>> host = "imap.gmail.com"
    >>> user = "me@example.com"
    >>> password = "hogehogehogehoge"
    >>> mailbox = "secret"
    >>> imapper = easyimap.connect(host, user, password, mailbox)

*connect* function also create IMAP4 instance by passing *ssl* argument::

    >>> import easyimap
    >>> host = "imap.gmail.com"
    >>> user = "me@example.com"
    >>> password = "hogehogehogehoge"
    >>> mailbox = "secret"
    >>> imapper = easyimap.connect(host, user, password, mailbox, ssl=False, port=143)

This imapper can list up latest n mail by *listup* method.
By default, This invoke `fetch` from IMAP4_SSL instance with '(UID RFC822)'.::

    >>> mail1, mail2 = imapper.listup(2)
    >>> mail1.uid
    80
    >>> mail1
    <easyimap.easyimap.MailObj object at 0x...>
    >>> type(mail1.body)
    <type 'unicode'>
    >>> type(mail1.title)
    <type 'unicode'>
    >>> type(mail1.date)
    <type 'unicode'>
    >>> type(mail1.sender)
    <type 'unicode'>

You can check latest unseen mail by *unseen* method::

    >>> imapper.unseen(2)
    [(82, <easyimap.easyimap.MailObj object at 0x...>), (81, <easyimap.easyimap.MailObj object at 0x...)]

You can directly fetch email object with specific id::

    >>> imapper.mail(80)
    <easyimap.easyimap.MailObj object at 0x...>

You can download attachments::

    >>> imapper.mail(80)
    >>> (id, mail) = imapper.mail(80)
    >>> for attachment in mail.attachment:
    >>>     print attachment[0], attachment[1]

Finally, call *quit* method::

    >>> imapper.quit()

Basic API
---------
* easyimap.connect(host, user, password, mailbox='INBOX', timeout=15, ssl=True, port=993, \*\*kwargs)
    | Create IMAP4(_SSL) wrapper.
    | If you want to keep read/unread status, Please pass optional `read_only=True` argument.
    | kwargs are read from Imapper's constructor. Plz read source code.

Imapper
^^^^^^^
* listids(limit=10, criterion=None)
    Returns list of available email ids.
* listup(limit=10, criterion=None, include_raw=False)
    Returns list of mail_object.
* unseen(limit=10)
    Returns list of mail_object.
* mail(uid, include_raw=False)
    Returns MailObj.
* change_mailbox(mailbox)
    Change mailbox.
* quit()
    Close and Logout.

MailObject
^^^^^^^^^^
* uid
    Returns UID(type: int).
* raw
    if you fetched email with include_raw option, this returns raw Data::

        >>> [(id1, mail1), (id2, mail2)] = imapper.listup(2, include_raw)
        >>> data = mail1.raw

* title
    Returns string of 'Subject' header.
* sender
    Returns string of 'Sender' header.
* from_addr
    Returns string of 'From' header.
* to
    Returns string of 'To' header.
* date
    Returns string of 'Date' header.
* body
    Returns string of Body.
* content_type
    Returns string of 'Content-Type' header.
* content_transfer_encoding
    Returns string of 'Content-Transfer-Encoding' header.
* references
    Returns string of 'References' header.
* in_reply_to
    Returns string of 'In-Reply-To' header.
* reply_to
    Returns string of 'Reply-To' header.
* return_path
    Returns string of 'Return-Path' header.
* mime_version
    Returns string of 'MIME-Version' header.
* message_id
    Returns string of 'Message-ID' header.
* attachments
    Returns list of tuples('attached file name', MailObj).

Recent Change
~~~~~~~~~~~~~
- 0.6.3
    + Add support for python-3.5.
    + Fixed a bug in decoding an attached plain text.
- 0.6.2
    + Fixed a bug in header/body encoding

- 0.6.1
    + Fixed a bug in _decode_header function

- 0.6.0
    + Add support for Python-3.4.
    + **Backward incompatible changes**
        * Modify `listup` to return list of mailobj.
        * Rename many properties to underbar separated format.