-
Notifications
You must be signed in to change notification settings - Fork 190
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f6fa63f
commit 90a30af
Showing
1 changed file
with
89 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# Imbox - Python IMAP for Humans | ||
|
||
 | ||
|
||
Python library for reading IMAP mailboxes and converting email content | ||
to machine readable data | ||
|
||
## Requirements | ||
|
||
Python (3.6, 3.7, 3.8, 3.9) | ||
|
||
## Installation | ||
|
||
`pip install imbox` | ||
|
||
## Usage | ||
|
||
``` python | ||
from imbox import Imbox | ||
|
||
# SSL Context docs https://docs.python.org/3/library/ssl.html#ssl.create_default_context | ||
|
||
with Imbox('imap.gmail.com', | ||
username='username', | ||
password='password', | ||
ssl=True, | ||
ssl_context=None, | ||
starttls=False) as imbox: | ||
|
||
# Get all folders | ||
status, folders_with_additional_info = imbox.folders() | ||
|
||
# Gets all messages from the inbox | ||
all_inbox_messages = imbox.messages() | ||
|
||
# Unread messages | ||
unread_inbox_messages = imbox.messages(unread=True) | ||
|
||
# Flagged messages | ||
inbox_flagged_messages = imbox.messages(flagged=True) | ||
|
||
# Un-flagged messages | ||
inbox_unflagged_messages = imbox.messages(unflagged=True) | ||
|
||
# Flagged messages | ||
flagged_messages = imbox.messages(flagged=True) | ||
|
||
# Un-flagged messages | ||
unflagged_messages = imbox.messages(unflagged=True) | ||
|
||
# Messages sent FROM | ||
inbox_messages_from = imbox.messages(sent_from='[email protected]') | ||
|
||
# Messages sent TO | ||
inbox_messages_to = imbox.messages(sent_to='[email protected]') | ||
|
||
# Messages received before specific date | ||
inbox_messages_received_before = imbox.messages(date__lt=datetime.date(2018, 7, 31)) | ||
|
||
# Messages received after specific date | ||
inbox_messages_received_after = imbox.messages(date__gt=datetime.date(2018, 7, 30)) | ||
|
||
# Messages received on a specific date | ||
inbox_messages_received_on_date = imbox.messages(date__on=datetime.date(2018, 7, 30)) | ||
|
||
# Messages whose subjects contain a string | ||
inbox_messages_subject_christmas = imbox.messages(subject='Christmas') | ||
|
||
# Messages whose UID is greater than 1050 | ||
inbox_messages_uids_greater_than_1050 = imbox.messages(uid__range='1050:*') | ||
|
||
# Messages from a specific folder | ||
messages_in_folder_social = imbox.messages(folder='Social') | ||
|
||
# Some of Gmail's IMAP Extensions are supported (label and raw): | ||
all_messages_with_an_attachment_from_martin = imbox.messages(folder='all', raw='from:[email protected] has:attachment') | ||
all_messages_labeled_finance = imbox.messages(folder='all', label='finance') | ||
|
||
for uid, message in all_inbox_messages: | ||
# Every message is an object with the following keys | ||
|
||
message.sent_from | ||
message.sent_to | ||
message.subject | ||
message.headers | ||
message.message_id | ||
message.date | ||
message.body.plain | ||
``` |