Convenience classes and methods for processing IMAP mailboxes
Project description
Here are some convenience classes and methods for processing IMAP mailboxes. Since the classes are derived from the imaplib classes, all methods available in the imaplib classes are directly usable.
Installation
easy_install -U imapIO
Usage
# Connect to IMAP server import imapIO server = imapIO.connect(host, port, user, password) # Select folder import random emailCount = server.cd(random.choice(server.folders)) # Walk emails in inbox sorted by arrival time for email in server.walk('inbox', sortCriterion='ARRIVAL'): # Show information print print 'Date: %s' % email.whenUTC print 'Subject: %s' % email.subject.encode('utf-8') print 'From: %s' % email.fromWhom.encode('utf-8') print 'From (nickname): %s' % imapIO.clean_nickname(email.fromWhom) print 'To: %s' % email.toWhom.encode('utf-8') print 'CC: %s' % email.ccWhom.encode('utf-8') print 'BCC: %s' % email.bccWhom.encode('utf-8') # Set flags email.seen = False email.deleted = False # Walk emails satisfying search criterion emailCriterion = 'BEFORE 23-JAN-2005' emailGenerator = server.walk(lambda folder: folder not in ['public', 'trash'], searchCriterion=emailCriterion) for emailIndex, email in enumerate(emailGenerator): # Show flags print print email.flags # Save email in compressed format on hard drive emailPath = '%s.gz' % emailIndex partPacks = email.save(emailPath) # Extract attachments from email on hard drive for partIndex, filename, contentType, payload in imapIO.extract(emailPath): print len(payload), filename.encode('utf-8') # Create an email in the inbox import datetime server.revive('inbox', imapIO.build_message( whenUTC=datetime.datetime(2005, 1, 23, 1, 0), subject='Subject', fromWhom='from@example.com', toWhom='to@example.com', ccWhom='cc@example.com', bccWhom='bcc@example.com', bodyText=u'text', bodyHTML=u'<html>text</html>', attachmentPaths=[ 'CHANGES.rst', 'README.rst', ])) # Load email email = server.walk('inbox', searchCriterion='FROM from@example.com TO to@example.com').next() # Browse attachments in email partPacks = email.extract( include=lambda index, name, type: name.lower().endswith('.rst'), peek=True) for partIndex, filename, contentType in partPacks: print filename # Delete email email.deleted = True server.expunge() # Duplicate an email from one server to another server1 = imapIO.connect(host1, port1, user1, password1) server2 = imapIO.connect(host2, port2, user2, password2) server2.revive('inbox', server1.walk().next())
0.9.5
Added examples to _IMAPExtension.walk() docstring
Added Email.extract() for getting attachments directly from an email message
Cached Email.as_string()
Changed error formatting
Fixed bug in Email.flags() so it handles messages with no flags
Fixed bug in extract() so that it does not try to decode non-text into unicode
Modified extract() to filter attachments using a lambda function
0.9.4
Modified _IMAPExtension.walk() to accept a generic function to filter folders
Modified Email.__init__() to apply _decode() to both parts of an email address
Removed clean_tag(), parse_tags, format_tags()
Added utf-7-imap4 codec to parse folder names
Increased test coverage to 100%
0.9.3
Fixed revive() to handle messages that lack a date
Modified Email so an email from _IMAPExtension.walk() can be sent to revive()
Modified Email so we can access its parent folder
Modified flags.setter so that it does not try to set flag “Recent”
0.9.2
Reverted to set() for versions of Python < 2.7 that lack set literal syntax
Removed keyword arguments from decode() to support versions of Python < 2.7
Fixed tests for servers like Lotus Domino that do not update search indices
0.9.1
Changed _IMAPExtension.walk() to use UID directly
Added support for sortCriterion using UID SORT
Improved test coverage to 80%
0.9.0
Extracted code from imap-search-scout
Made API more user-friendly
Improved test coverage to 79%
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file imapIO-0.9.5.tar.gz
.
File metadata
- Download URL: imapIO-0.9.5.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a943b18d6a0a0a3f7938d82c0969e5934cc33c15d51a50afc4efb2ca93575b61 |
|
MD5 | 7f2fff01b4b7bffda0c78402ac71bb9c |
|
BLAKE2b-256 | 6644448d3148874b44862e0696e0ee686629e7cd1819432e844a2a0210c2aabf |