Changes for version 2.2.8
- qop=auth-conf.
- Fixed a bug reported by Adrian that caused get_bodystructure to fail if the server returned a bodystructure with an embedded literal. Also fixed the same bug in get_envelope, so I guess now everyone knows that get_envelope was just a tinkered-with copy of get_bodystructure...
- Fixed two related bugs in Parser.pm that caused get_bodystructure and get_envelope to fail if the UID nnnnn part of a fetch response follows all the other stuff. Thanks to Raphaël Langella for reporting this bug.
- Enhanced several methods to use MessageSets when the Ranges parameter is true. There are still more methods that need to be retrofitted to take advantage of the Range method (and its underlying MessageSet object). In the meantime, if you need to get the functionality of the shorter message ranges provided by the Range method from a method that does not honor the Ranges parameter, then you should a) create a message set by passing the messages to the Range method and then pass the scalar as a string to the method you want to use. For example, if you want to move a whole lot of messages to Trash, do something like this: > >my $range = $imap->Range(scalar($imap->search("SentBefore", "01-Jan-2000"))); >$imap->move("Trash","$range"); > This will cause the range object to stringify out to what looks like a non-reference scalar before the move method gets the argument. If you omit the quotes around "$range" then this won't work.
- Fixed a bug in the list method that caused LIST "" "" to fail miserably. Thanks to John W Sopko Jr. for reporting this bug.
- Fixed a bug in the test suite that caused the cram-md5 tests to fail if you are not running the extended tests. (Introduced in 2.2.6)
- Fixed a bug that affected users on platforms that do not support fcntl (i.e. NT). Thanks to Raphaël Langella for reporting this bug.
- Changes in version 2.2.6
- Fixed a bug in the migrate method that caused the internaldate of migrated messages to sometimes be wrong. Credit goes to Jen Wu for identifying both bug and fix.
- Added a new method, "get_header", to provide a short-cut for a common use of parse_headers. Added two other methods, "subject" and "date", to provide shortcuts to get_header.
- Changed the Mail::IMAPClient::MessageSet module to override array dereferencing. (See below.)
- Changed fetch and search methods to use the Range method (and thus the Mail::IMAPClient::MessageSet module) for messages. The fetch method will use MessageSet objects all the time, but the search method will only return MessageSet objects if you specify "Ranges => 1" (with Ranges being a new parameter). The default will be "Ranges => 0" (which preserves the old behavior) but this default will go away in some future release. There should be no need to override the fetch method's new behavior, since it will be transparent to you unless you tend to fetch a lot of messages at once, in which case your fetches may be faster and perhaps less likely to fail due to the request exceeding your server's line limit. If you set the Ranges parameter to true, then you still should not see a difference, because a) when fetch is called in a list context then you will not get a MessageSet object, you'll get the same list as always, and b) the MessageSet objects now override array de-referencing operations, so if you treat the returned MessageSet object as if it were an array then the object will humour you and act like a reference to an array of messages sequence numbers or message uids.
- Also changed the flags method to use the Range method. This should also be transparent since the methods arguments and return values do not change.
- Added built-in support for CRAM-MD5 authentication. This authentication method will in this release be used only when requested. In future releases the default authentication will probably be the strongest authentication supported "out of the box" that is available on your server. Since CRAM-MD5 is the only authentication other than plain text that is currently supported "out of the box", it will be the default authentication mechanism for any server that supports it. See the pod for the Authmechanism and Authcallback parameters (which were also added in this release) and the doc for the authenticate method (which has been around a while). Many thanks to Ville Skyttä for providing the code that makes up the heart of this new support, as well as to Gisle Aas for the Digest::HMAC_MD5 and MIME::Base64.
- Made minor tweaks to the documentation. Again. (Will it ever be 100% right?)
- Changes in version 2.2.5
- Added the Range method to convert a bunch of message UID's or sequence numbers into compact ranges. Also added a supporting class for the returned range objects with overloaded operators that support stringifying, adding to, and deleting from a range object's message set (Mail::IMAPClient::MessageSet). I also wrote documentation for same, so check it out. In future releases, I will probably enhance the base module to use MessageSet objects when feasible (i.e. whenever I know that the argument in question should in fact be a message specification). But I'll let you find all the bugs in the MessageSet module first ;-) Thanks goes to Stefan Schmidt, who is the first to report using a server that restricted the size of a client request to something smaller than what Mail::IMAPClient was generating for him. (Originally the Range method was just supposed condense a message set into the shortest possible RFC2060-compliant string, but then I got all happy and started adding features. You know how it is...)
- Changes in version 2.2.4
- Fixed a bug in the done method (new in 2.2.3).
- Added tests for idle and done. (That's how I found the bug in the done method, above.)
- Fixed minor bugs in test suite. (The test suite worked but wasn't always using the options I wanted tested. <sigh>)
- Changes in version 2.2.3
- NOTE: This version was distributed to beta testers only.
- Fixed the "Changes in version 2.2.2" section so that it correctly specifies
Documentation
used internally by Mail::IMAPClient::BodyStructure
used internally by Mail::IMAPClient->thread
Modules
Perl extension to Mail::IMAPClient to facilitate the parsing of server responses to the FETCH BODYSTRUCTURE and FETCH ENVELOPE IMAP client commands.
An IMAP Client API
Provides
in BodyStructure/BodyStructure.pm
in BodyStructure/BodyStructure.pm
in BodyStructure/BodyStructure.pm
Examples
- examples/COPYRIGHT
- examples/build_dist.pl
- examples/build_ldif.pl
- examples/cleanTest.pl
- examples/copy_folder.pl
- examples/cyrus_expire.pl
- examples/cyrus_expunge.pl
- examples/find_dup_msgs.pl
- examples/imap_to_mbox.pl
- examples/imtestExample.pl
- examples/migrate_mail2.pl
- examples/migrate_mbox.pl
- examples/populate_mailbox.pl
- examples/sharedFolder.pl
- sample.perldb