|
| 1 | +# Imbox - Python IMAP for Humans |
| 2 | + |
| 3 | + |
| 4 | + |
| 5 | +Python library for reading IMAP mailboxes and converting email content |
| 6 | +to machine readable data |
| 7 | + |
| 8 | +## Requirements |
| 9 | + |
| 10 | +Python (3.6, 3.7, 3.8, 3.9) |
| 11 | + |
| 12 | +## Installation |
| 13 | + |
| 14 | +`pip install imbox` |
| 15 | + |
| 16 | +## Usage |
| 17 | + |
| 18 | +``` python |
| 19 | +from imbox import Imbox |
| 20 | + |
| 21 | +# SSL Context docs https://docs.python.org/3/library/ssl.html#ssl.create_default_context |
| 22 | + |
| 23 | +with Imbox('imap.gmail.com', |
| 24 | + username='username', |
| 25 | + password='password', |
| 26 | + ssl=True, |
| 27 | + ssl_context=None, |
| 28 | + starttls=False) as imbox: |
| 29 | + |
| 30 | + # Get all folders |
| 31 | + status, folders_with_additional_info = imbox.folders() |
| 32 | + |
| 33 | + # Gets all messages from the inbox |
| 34 | + all_inbox_messages = imbox.messages() |
| 35 | + |
| 36 | + # Unread messages |
| 37 | + unread_inbox_messages = imbox.messages(unread=True) |
| 38 | + |
| 39 | + # Flagged messages |
| 40 | + inbox_flagged_messages = imbox.messages(flagged=True) |
| 41 | + |
| 42 | + # Un-flagged messages |
| 43 | + inbox_unflagged_messages = imbox.messages(unflagged=True) |
| 44 | + |
| 45 | + # Flagged messages |
| 46 | + flagged_messages = imbox.messages(flagged=True) |
| 47 | + |
| 48 | + # Un-flagged messages |
| 49 | + unflagged_messages = imbox.messages(unflagged=True) |
| 50 | + |
| 51 | + # Messages sent FROM |
| 52 | + inbox_messages_from = imbox.messages( sent_from='[email protected]') |
| 53 | + |
| 54 | + # Messages sent TO |
| 55 | + inbox_messages_to = imbox.messages( sent_to='[email protected]') |
| 56 | + |
| 57 | + # Messages received before specific date |
| 58 | + inbox_messages_received_before = imbox.messages(date__lt=datetime.date(2018, 7, 31)) |
| 59 | + |
| 60 | + # Messages received after specific date |
| 61 | + inbox_messages_received_after = imbox.messages(date__gt=datetime.date(2018, 7, 30)) |
| 62 | + |
| 63 | + # Messages received on a specific date |
| 64 | + inbox_messages_received_on_date = imbox.messages(date__on=datetime.date(2018, 7, 30)) |
| 65 | + |
| 66 | + # Messages whose subjects contain a string |
| 67 | + inbox_messages_subject_christmas = imbox.messages(subject='Christmas') |
| 68 | + |
| 69 | + # Messages whose UID is greater than 1050 |
| 70 | + inbox_messages_uids_greater_than_1050 = imbox.messages(uid__range='1050:*') |
| 71 | + |
| 72 | + # Messages from a specific folder |
| 73 | + messages_in_folder_social = imbox.messages(folder='Social') |
| 74 | + |
| 75 | + # Some of Gmail's IMAP Extensions are supported (label and raw): |
| 76 | + all_messages_with_an_attachment_from_martin = imbox.messages( folder='all', raw='from:[email protected] has:attachment') |
| 77 | + all_messages_labeled_finance = imbox.messages(folder='all', label='finance') |
| 78 | + |
| 79 | + for uid, message in all_inbox_messages: |
| 80 | + # Every message is an object with the following keys |
| 81 | + |
| 82 | + message.sent_from |
| 83 | + message.sent_to |
| 84 | + message.subject |
| 85 | + message.headers |
| 86 | + message.message_id |
| 87 | + message.date |
| 88 | + message.body.plain |
| 89 | +``` |
0 commit comments