Simple imap wrapper.

pip install easyimap==0.6.3


About this module

Simple imap wrapper.

Latest Version Supported Python versions License

Example to use

connect function create IMAP4_SSL instance by default:

>>> import easyimap
>>> host = ""
>>> user = ""
>>> password = "hogehogehogehoge"
>>> mailbox = "secret"
>>> imapper = easyimap.connect(host, user, password, mailbox)

connect function also create IMAP4 instance by passing ssl argument:

>>> import easyimap
>>> host = ""
>>> user = ""
>>> 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
>>> mail1
<easyimap.easyimap.MailObj object at 0x...>
>>> type(mail1.body)
<type 'unicode'>
>>> type(mail1.title)
<type 'unicode'>
>>> type(
<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.


  • 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.


  • 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.