Effective working with email messages using IMAP protocol.
Project description
Effective working with email messages using IMAP protocol.
Python version |
3.3+ |
License |
MIT |
PyPI |
|
IMAP |
VERSION 4rev1 - https://tools.ietf.org/html/rfc3501 |
Features
transparent work with letter attributes
work with letters in directories (copy, delete, flag, move, seen)
work with directories (list, set, get, create, exists, rename, delete, status)
no dependencies
Installation
$ pip install imap_tools
Quick guide
Init:
from imap_tools import MailBox
mailbox = MailBox('imap.mail.com')
mailbox.login('test@mail.com', 'password')
Message attributes:
# NOTE: All message properties are cached by functools.lru_cache
for message in mailbox.fetch():
message.id
message.uid
message.subject
message.from_
message.to
message.cc
message.bcc
message.date
message.text
message.html
message.flags
message.from_values
message.to_values
message.cc_values
message.bcc_values
for filename, payload in message.attachments:
filename, payload
# any message attribute: message.obj['Message-ID'], message.obj['X-Google-Smtp-Source'] ...
Actions with messages in folder:
# NOTE: You can use 2 approaches to perform these operations
# "by one" - Perform operation for each message separately per N commands
# "in bulk" - Perform operation for message set per 1 command
# COPY all messages from current dir to folder1, *by one
for msg in mailbox.fetch():
res = mailbox.copy(msg.uid, 'INBOX/folder1')
# DELETE all messages from current dir to folder1, *in bulk
mailbox.delete([msg.uid for msg in mailbox.fetch()])
# FLAG unseen messages in current folder as Answered and Flagged, *in bulk
mailbox.flag(mailbox.fetch('(UNSEEN)'), ['Answered', 'Flagged'], True)
# MOVE all messages from current dir to folder2, *in bulk
mailbox.move(mailbox.fetch(), 'INBOX/folder2')
# mark SEEN all messages sent at 05.03.2007 in current folder as unseen, *in bulk
mailbox.seen(mailbox.fetch("SENTON 05-Mar-2007"), False)
Actions with folders:
# LIST
for folder in mailbox.folder.list('INBOX'):
print(folder['flags'], folder['delim'], folder['name'])
# SET
mailbox.folder.set('INBOX')
# GET
current_folder = mailbox.folder.get()
# CREATE
mailbox.folder.create('folder1')
# EXISTS
is_exists = mailbox.folder.exists('folder1')
# RENAME
mailbox.folder.rename('folder1', 'folder2')
# DELETE
mailbox.folder.delete('folder2')
# STATUS
for status_key, status_val in mailbox.folder.status('some_folder').items():
print(status_key, status_val)
Fetch params
MailBox.fetch - Mail message generator
search_criteria: message search criteria (see examples at ./doc/imap_search_criteria.txt)
limit: limit on the number of read emails, useful for actions with a large number of messages, like “move”
miss_defect: miss emails with defects
miss_no_uid: miss emails without uid
mark_seen: mark emails as seen on fetch
Reasons
There are many different libraries for working with e-mail via the imap protocol. Including imaplib library. However, these libraries contain various shortcomings, such as:
excessive low level
returned results are not ready to work with them
no convenient tools for working with: directories, letters in directories
Release notes
Thanks to
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file imap_tools-0.7.0.tar.gz
.
File metadata
- Download URL: imap_tools-0.7.0.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cee328a528a2048313fe40d219bbb863c66b73ce0aebd536af5c645c666129e |
|
MD5 | 6149a5b813be356f2ebde130c8884151 |
|
BLAKE2b-256 | 4c1d947c50cea9d23a9b35714f728a06f9f09e53893470006c64bb0be869189a |
File details
Details for the file imap_tools-0.7.0-py3-none-any.whl
.
File metadata
- Download URL: imap_tools-0.7.0-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.29.1 CPython/3.6.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 219d2b167a0142e1c43927f048f3ca9dd5b07b9eeb9d5cbcddf1f9a084758b07 |
|
MD5 | c52abcfa0552fbc8c912c2b8eddce58d |
|
BLAKE2b-256 | 3a48b32167e7439f44bb96fecac6c12e0d1a77b9fc1fdd9f23fbc663b88855ce |