Subject: ANOUNCEMENT: Mail::IMAPClient v1.05
From: David Kernen <[email-masked]>
Date: 14 Nov 1999 13:22:34 GMT
Newsgroups: comp.lang.perl.announce,comp.lang.perl.modules

Mail::IMAPClient is now available on CPAN in
http://cpan.valueclick.com/authors/id/D/DJ/DJKERNEN/Mail-IMAPClient-1.05.tar.gz.

Mail::IMAPClient is a perl-only module that implements the client-side
of the IMAP protocol, so you folks can use it to write special-purpose
IMAP clients.

It has been tested on a number of platforms, which are listed in the
README file.

Here is a summary of what's new:

Changes in version 1.05
-----------------------

Patched the 'make test' basic test to work correctly on systems that do
not
support double quotes in folder names. Thanks to Rex Walters for this
fix.

Added a new example script, build_dist.pl, that rumages through a folder

(specified on the command line) and collects the "From:" address, and
then
appends a message to that folder with all those addresses in both the
To: field
and the text, to facilitate cuting and pasting (or dragging and
dropping)
into address books and so forth. (Note that the message doesn't actually
get
sent to all those people; it just kind of looks that way.)

Also added another example, build_ldif.pl, that is similar to
build_dist.pl
except that instead of listing addresses in the message text, it creates
a
MIME attachment and attaches a text file in LDIF format, which can then
be
imported into any address book that supports LDIF as an import file
format.
This example requires the MIME::Lite module. MIME::Lite was written by
Eryq
(okay, Erik Dorfman is his legal name), and is totally available on
CPAN.

This distribution has now been tested on Mirapoint Message Server
Appliances
(versions 1.6.1 and 1.7.1). Many thanks to Rex Walters for certifying
this
platform and for providing a test account for future releases.

Changes in version 1.04
-----------------------

Fixed situation in which servers that include the "<tag> <COMMAND>
OK\r\n" line
as part of a literal (i.e. text delivered via {<length>}\r\n<length>
bytes\r\n)
caused the module to hang. This situation is pretty rare; I've only run
across
one server that does it (UW-IMAP). I'm sure it's a bug; I'm not sure
whose. ;-}
Many thanks to Thomas Stromberg for 1) pointing out this bug and 2)
providing
me with facilities to find and fix it!

Fixed potential bug in I/O engine that could cause module to hang when
reading
a literal if the first read did not capture the entire literal.

Cleaned up some unnecessary runtime warnings when a script is executed
with
the -w switch.

Added new tests to 'make test'. I just can't keep my hands off it! ;-)

Enhanced the append method and several tests in 'make test' to be more
widely
compatible. Successfully tested on UW-IMAP, Cyrus v1.5.19, Netscape
Messenger
4.1, and Netscape Messenger v3.6. If you know of others please add them
to
the list!

Fixed a bug in the separator method (new in 1.03) that caused it to fail
if
'inbox' was specified in lowercase characters as the method's argument.

Added a new example, imap_to_mbox.pl, contributed by Thomas Stromberg.
This
example converts a user's IMAP folders on an IMAP server into mbox
format.

Changes in version 1.03
-----------------------
Reworked several methods to support double-quote characters within
folder
names. This was kind of hard. This has been successfully tested with
create,
delete, select, and folders, to name the ones that come to mind.

Reworked the undocumented method that reads the socket to accept and
handle
more gracefully lines ending in {nnn}\r\n ( where nnn is a number of
characters to read). This seems to be part of the IMAP protocol although
I
am at a total loss as to where it's explained, other than a brief
description
of a "literal's" bnf syntax, which hardly counts.

Added separator object method, which returns the separator character in
use
by the current server.

Added is_parent method, which returns 1, 0, or undef depending on
whether a
folder has children, has no children, or is not permitted to have
children.

Added tests to 'make test' to test new function. Also changed 'make
test' to
support IMAP systems that allow folders to be created only in the user's
INBOX
(which is the exact opposite of what my IMAP server allows...oh, well).

Fixed a bug that caused search to return an array of one undef'ed
element
rather than undef if there were no hits.

Changes in version 1.02
-----------------------
Fixed bugs in search and folders methods.

Fixed bug in new method that ignored Clear => 0 when specified as
arguments to
new.

Changes in version 1.01
-----------------------
Fixed a bug in test.pl that caused tests to fail if the extended tests
were not used.

Added method 'parse_headers' to parse the header fields of a message in
the
IMAP store into a perl data structure.

Changes in version 1.00
-----------------------
Made cosmetic changes to documentation.

Fixed a bug introduced into the 'folders' method in .99.

Changed 'new' method so that it returns undef if an implicit connection
or
login is attempted but fails. Previous releases returned a
Mail::IMAPClient
object that was not connected or not logged in, depending on what
failed.

Changed installation script so that it reuses the parameter file for
test.pl
if it finds one. Installation can be run in the background if the .test
file
exists. Touching it is good enough to prevent prompts; having a
correctly
formatted version (as described in .test_template) is even better, as it
will
allow you to do a thorough 'make test'.

Changes in version .99
----------------------
Added the Rfc822_date class method to create RFC822-compliant date
fields in
messages being appended with the append method.

Added the recent, seen, and unseen methods to return an array of
sequence
numbers from a SEARCH RECENT, SEARCH SEEN, or SEARCH UNSEEN method call.

These methods are shortcuts to $imap->search("RECENT"), etc.

Added the recent_count method to return the number of RECENT messages in
a
folder. Contributed by Rob Deker.

Added 'use strict' compliance, courtesy of Mihai Ibanescu.

Fixed a bug in the search method that resulted in a list with one empty
member
being returned if a search had no hits. The search method now returns
undef
if there are no hits.

Added 'authenticate' method to provide very crude support for the IMAP
AUTHENTICATE command. The previous release didn't support AUTHENTICATE
at all,
unless you used very low-level (and undocumented) methods. With the
'authenticate' method, the programmer still has to figure out how to
respond to the server's challenge. I hope to make it friendlier in the
next release. Or maybe the one after that. This method is at least a
start,
albeit a pretty much untested one.

Added Rfc822_date class method to facilitate creation of "Date:" header
field when creating text for the "append" method, although the method
may
come in handy whenever you're creating a Date: header, even if it's not
in conjuction with an IMAP session.

Added more tests, which will optionally run at 'make test' time,
provided all
the necessary data (like username, hostname, password for testing an
IMAP
session) are available.

Changes in version 0.09
-----------------------
Thu Aug 26 14:10:03 1999 - original version; created by h2xs 1.19