{ "info": { "author": "Roy Hyunjin Han", "author_email": "service@invisibleroads.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python" ], "description": "imapIO\n======\nHere 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.\n\n\nInstallation\n------------\n::\n\n easy_install -U imapIO\n\n\nUsage\n-----\n::\n\n # Connect to IMAP server\n import imapIO\n server = imapIO.connect(host, port, user, password)\n\n # Select folder\n import random\n emailCount = server.cd(random.choice(server.folders))\n\n # Walk emails in inbox sorted by arrival time\n for email in server.walk('inbox', sortCriterion='ARRIVAL'):\n # Show information\n print\n print 'Date: %s' % email.whenUTC\n print 'Subject: %s' % email.subject.encode('utf-8')\n print 'From: %s' % email.fromWhom.encode('utf-8')\n print 'From (nickname): %s' % imapIO.clean_nickname(email.fromWhom)\n print 'To: %s' % email.toWhom.encode('utf-8')\n print 'CC: %s' % email.ccWhom.encode('utf-8')\n print 'BCC: %s' % email.bccWhom.encode('utf-8')\n # Set flags\n email.seen = False\n email.deleted = False\n\n # Walk emails satisfying search criterion\n emailCriterion = 'BEFORE 23-JAN-2005'\n emailGenerator = server.walk(lambda folder: folder not in ['public', 'trash'], searchCriterion=emailCriterion)\n for emailIndex, email in enumerate(emailGenerator):\n # Show flags\n print\n print email.flags\n # Save email in compressed format on hard drive\n emailPath = '%s.gz' % emailIndex\n partPacks = email.save(emailPath)\n # Extract attachments from email on hard drive\n for partIndex, filename, contentType, payload in imapIO.extract(emailPath):\n print len(payload), filename.encode('utf-8')\n\n # Create an email in the inbox\n import datetime\n server.revive('inbox', imapIO.build_message(\n whenUTC=datetime.datetime(2005, 1, 23, 1, 0),\n subject='Subject',\n fromWhom='from@example.com',\n toWhom='to@example.com',\n ccWhom='cc@example.com',\n bccWhom='bcc@example.com',\n bodyText=u'text',\n bodyHTML=u'text',\n attachmentPaths=[\n 'CHANGES.rst',\n 'README.rst',\n ]))\n # Load email\n email = server.walk('inbox', searchCriterion='FROM from@example.com TO to@example.com').next()\n # Browse attachments in email\n partPacks = email.extract(\n include=lambda index, name, type: name.lower().endswith('.rst'),\n peek=True)\n for partIndex, filename, contentType in partPacks:\n print filename\n # Delete email\n email.deleted = True\n server.expunge()\n\n # Duplicate an email from one server to another\n server1 = imapIO.connect(host1, port1, user1, password1)\n server2 = imapIO.connect(host2, port2, user2, password2)\n server2.revive('inbox', server1.walk().next())\n\n\n0.9.5\n-----\n- Added examples to _IMAPExtension.walk() docstring\n- Added Email.extract() for getting attachments directly from an email message\n- Cached Email.as_string()\n- Changed error formatting\n- Fixed bug in Email.flags() so it handles messages with no flags\n- Fixed bug in extract() so that it does not try to decode non-text into unicode\n- Modified extract() to filter attachments using a lambda function\n\n0.9.4\n-----\n- Modified _IMAPExtension.walk() to accept a generic function to filter folders\n- Modified Email.__init__() to apply _decode() to both parts of an email address\n- Removed clean_tag(), parse_tags, format_tags()\n- Added utf-7-imap4 codec to parse folder names\n- Increased test coverage to 100%\n\n0.9.3\n-----\n- Fixed revive() to handle messages that lack a date\n- Modified Email so an email from _IMAPExtension.walk() can be sent to revive()\n- Modified Email so we can access its parent folder\n- Modified flags.setter so that it does not try to set flag \"\\Recent\"\n\n0.9.2\n-----\n- Reverted to set() for versions of Python < 2.7 that lack set literal syntax\n- Removed keyword arguments from decode() to support versions of Python < 2.7\n- Fixed tests for servers like Lotus Domino that do not update search indices\n\n0.9.1\n-----\n- Changed _IMAPExtension.walk() to use UID directly\n- Added support for sortCriterion using UID SORT\n- Improved test coverage to 80%\n\n0.9.0\n-----\n- Extracted code from imap-search-scout\n- Made API more user-friendly\n- Improved test coverage to 79%", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/invisibleroads/imapIO", "keywords": "imap", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "imapIO", "package_url": "https://pypi.org/project/imapIO/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/imapIO/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/invisibleroads/imapIO" }, "release_url": "https://pypi.org/project/imapIO/0.9.5/", "requires_dist": null, "requires_python": null, "summary": "Convenience classes and methods for processing IMAP mailboxes", "version": "0.9.5" }, "last_serial": 758950, "releases": { "0.9.0": [ { "comment_text": "", "digests": { "md5": "6f98f56b3c81edaf2179bed333a4cbe0", "sha256": "fef5321e3d7b44fe00ade30dbbb6de16c91bdd5c48cd79a4d80080405af180e7" }, "downloads": -1, "filename": "imapIO-0.9.0.tar.gz", "has_sig": false, "md5_digest": "6f98f56b3c81edaf2179bed333a4cbe0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9230, "upload_time": "2011-05-12T10:14:46", "url": "https://files.pythonhosted.org/packages/92/27/306675902e5724b47e8f32b8b9459b518ae4742ddf7a8e28e6864be4d4e4/imapIO-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "da66ead98ab0912501fe3b8fc1d36877", "sha256": "8e0db5801c80ef5e04134830475fb3bc46a8e35cbb3b1046b5745cd711f81f6f" }, "downloads": -1, "filename": "imapIO-0.9.1.tar.gz", "has_sig": false, "md5_digest": "da66ead98ab0912501fe3b8fc1d36877", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9329, "upload_time": "2011-05-13T00:19:15", "url": "https://files.pythonhosted.org/packages/33/d8/85ec9fb03a2343aa880a66946517f38a4a8b577e5ff6f419ace2c6b85916/imapIO-0.9.1.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "e84db8487841ee4451ce16a61096b488", "sha256": "f7b58289b415976203f46173040fbe373119d139f79e98a4dc335fee672f058a" }, "downloads": -1, "filename": "imapIO-0.9.2.tar.gz", "has_sig": false, "md5_digest": "e84db8487841ee4451ce16a61096b488", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8565, "upload_time": "2011-05-28T23:06:13", "url": "https://files.pythonhosted.org/packages/a6/a5/91b47bbaa57c2ff180aa4238080b7d33a9caedd31c100a43d657589dc28f/imapIO-0.9.2.tar.gz" } ], "0.9.3": [ { "comment_text": "", "digests": { "md5": "93a2b6897412a0d287887f31ad958a2d", "sha256": "7ac9356af4cc3122b6519f80288da1d2bea6496eda5e56c7df81c308d09f42ce" }, "downloads": -1, "filename": "imapIO-0.9.3.tar.gz", "has_sig": false, "md5_digest": "93a2b6897412a0d287887f31ad958a2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9105, "upload_time": "2011-10-05T14:26:01", "url": "https://files.pythonhosted.org/packages/60/60/1bf5681e62fbdb4f136ca48975ac528cd792ff5475361eb33153be739555/imapIO-0.9.3.tar.gz" } ], "0.9.4": [ { "comment_text": "", "digests": { "md5": "b4fb9b173f93c60227ac186bfeb31e6d", "sha256": "30ef2fc9fe31936906f6a30472d80360e49efe869bf66ada9988ae456806a549" }, "downloads": -1, "filename": "imapIO-0.9.4.tar.gz", "has_sig": false, "md5_digest": "b4fb9b173f93c60227ac186bfeb31e6d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17214, "upload_time": "2011-11-12T13:09:54", "url": "https://files.pythonhosted.org/packages/5d/1b/d6df4cc8317b8b462db0a38509185a0ce4113e3c459d3ddcae57a6e4146a/imapIO-0.9.4.tar.gz" } ], "0.9.5": [ { "comment_text": "", "digests": { "md5": "7f2fff01b4b7bffda0c78402ac71bb9c", "sha256": "a943b18d6a0a0a3f7938d82c0969e5934cc33c15d51a50afc4efb2ca93575b61" }, "downloads": -1, "filename": "imapIO-0.9.5.tar.gz", "has_sig": false, "md5_digest": "7f2fff01b4b7bffda0c78402ac71bb9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10803, "upload_time": "2012-07-18T16:21:09", "url": "https://files.pythonhosted.org/packages/66/44/448d3148874b44862e0696e0ee686629e7cd1819432e844a2a0210c2aabf/imapIO-0.9.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7f2fff01b4b7bffda0c78402ac71bb9c", "sha256": "a943b18d6a0a0a3f7938d82c0969e5934cc33c15d51a50afc4efb2ca93575b61" }, "downloads": -1, "filename": "imapIO-0.9.5.tar.gz", "has_sig": false, "md5_digest": "7f2fff01b4b7bffda0c78402ac71bb9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10803, "upload_time": "2012-07-18T16:21:09", "url": "https://files.pythonhosted.org/packages/66/44/448d3148874b44862e0696e0ee686629e7cd1819432e844a2a0210c2aabf/imapIO-0.9.5.tar.gz" } ] }