Mail-IMAPClient
view release on metacpan or search on metacpan
- rt.cpan.org#106500: split UID EXPUNGE with a large sequence set
- added t/quota.t and t/lib/MyTest.pm for testing
- updated copyright for 2016
version 3.37: Fri Aug 14 11:04:53 EDT 2015
- regex fix in rt.cpan.org#96575 required Perl 5.10
updated regex to be backwards compatible with Perl 5.8
[Paul Howarth]
version 3.36: Fri Aug 14 01:40:50 UTC 2015
- rt.cpan.org#96575: parsing fixes for fetch_hash and bodystructure
+ better handling of data containing escaped characters
[Ken Neighbors]
- rt.cpan.org#97718: hang waiting for tag if DONE sent outside of IDLE
[Laurence Darby]
- rt.cpan.org#100683: failed literal commands hang waiting for '+'
[Matthias Pitzl]
- rt.cpan.org#100601: login() fails if username requires use of literals
[Andy Lyttle]
- *rt.cpan.org#103823: is_parent() should return undef on \NoInferiors
[Gilles Lamiral]
- rt.cpan.org#105456: fetch_hash fails if sequence number contains '*'
+ *no longer removing unrequested data (except UID) in returned hashes
[Gilles Lamiral]
- rt.cpan.org#91912: selectable broke in 3.29 due to \b around \NoSelect
[Justin Vallon, Gilles Lamiral]
- some documentation, test cleanup and new tests
version 3.35: Fri, Nov 22, 2013 2:18:41 PM
- *use Quote() over Massage() to avoid stripping double quotes from arg
+ removed constant NonFolderArg
+ may deprecate Massage() in a future release
- _list_or_lsub failed to handle folder names with double quotes
+ cleanup Escaped_results()
+ new methods: Escaped_history() _escaped_trans_data()
+ removed method: _list_response_preprocess()
[Gilles Lamiral, Victor Lé]
- rt.cpan.org#90315: getacl on a folder returned as literal failed
+ _read_line could remove extra space when literal data was received
[Carl Karcher]
- rt.cpan.org#89040: typo fixes
[David Steinbrunner]
version 3.34: Fri, Sep 27, 2013 12:50:17 AM
- make Makefile.PL use non-interactive and document test.txt usage
- new attribute: Socketargs => [ (IO::Socket::.. args) ]
+ cleanup connect() to more flexible with IO::Socket::* args
- untagged server data during send literal may cause client to hang
[Arthur Wolfe, Josh Hillman]
+ _send_line() needs '+' only to know it is OK to send LITERAL data
+ created _response_code_sub() to simplify _get_response()
- remove internal "Folders" cache
- Allow for RFC 6154 "IMAP LIST Extension for Special-Use Mailboxes"
[Mathias Reitinger]
+ new method: folders_hash()
+ deprecate: xlist_folders(), xlist()
version 3.33: Tue, May 14, 2013 10:12:43 AM
- more cleanup on use of $@ and $!
- cleanup get_bodystructure / get_envelope
- allow Ssl arg as an arrayref to pass args to IO::Socket::SSL
[Ramana V Mokkapati]
- no need to Massage() the folder name in uidnext()
- rt.cpan.org#84028: get_envelope() fails when subject ends w/backslash
[Andy Lyttle]
- rt.cpan.org#79476: move()/copy() with sequence causes numeric warning
[Oleg G]
- *move()/copy() no longer sort message(s) provided by caller
version 3.32: Fri, Aug 10, 2012 4:43:24 PM
- document RFC2087 quota related calls
[Mathias Reitinger] documentation request
- rt.cpan.org#78474: idle/idle_data documentation error
[Dima Kogan]
- Quote()/Massage() now uses literals for non ascii data
[Mathias Reitinger] reported issues with utf8 data in password
- use Quote()/Massage() consistently now in:
login() proxyauth() deleteacl() setacl() listrights() rename()
- documented deleteacl() and other minor pod cleanup
- ran Mail::IMAPClient::BodyStructure through perltidy
- update year in README/pod to 2012
- rt.cpan.org#74733: Fails with Parse::RecDescent >= 1.966_002
rt.cpan.org#74593: Recent changes break Module::ExtractUse and ...
[ANDK, TEAM, SREZIC, NBEBOUT at CPAN and nine from detonation]
- Makefile.PL avoid buggy Parse::RecDescent 1.966_002 until 1.967_009
- rt.cpan.org#76989: Mail::IMAPClient::BodyStructure usage/docs
[Pierluigi Frullani]
- fix incorrect documentation on new()
- lots of doc verbiage updates
version 3.31: Mon, Mar 19, 2012 11:11:11 AM
- rt.cpan.org#74799: Support for partial data responses in fetch_hash
[Philip Garrett]
+ bonus: cleaner handling of BODY.PEEK responses
- properly handle ALL|FULL|FAST fetch macros in fetch_hash
version 3.30: Fri Nov 11 09:37:00 EST 2011
- rt.cpan.org#72347: Starttls array ref argument dereferenced twice
[Jonathan Buhacoff]
- during connect(): Port now defaults 143 or 993 if $self->Ssl
[Kodi Arfer]
- stop reconnect deep recursion if server disconnects on login
[Luca Ferrario]
- reconnect() now returns 1 on success; on error undef or 0=recursive
- handle EBADF from syswrite in _send_bytes
- rt.cpan.org#67263: add RFC4978 IMAP COMPRESS Extension support
[SDIZ]
+ new method: compress()
+ new attributes: Compress Readmoremethod
- general code cleanup:
+ new() now always returns $self or undef (never $sock any more)
+ Socket() now always return a socket or undef
+ login() now always return $self or undef
+ _read_more() will now use Readmoremethod if set
- missing second arg '' for encode_base64 causing AUTHENTICATE
PLAIN to fail on lines longer than 76 characters
[Yoshiho Yoshida]
version 3.29: Tue Aug 9 00:33:52 EDT 2011
- rt.cpan.org#69876: ENVELOPE as part of fetch_hash convenience method
[Chris Huttman]
- added/updated documentation for idle, idle_data, and done
- rt.cpan.org#53998: fix NTLM auth: call ntlm with challenge string
[Dragoslav Mlakar]
- report the return value from select/_read_more on errors
- logout() again returns the success/failure of the LOGOUT command
- set/return error when $response->() returns undef in authenticate()
- new internal method _load_module() centralizing some 'require' calls
- localize use $@ in several places to avoid stomping on global val
- refactor code calling _read_more() to centralize error handling
version 3.22: Thu Jan 21 15:25:54 EST 2010
- rt.cpan.org#52313: Getting read errors if Fast_io is set to 1
[Jukka Huhta]
- updated Maxttemperrors docs related to EAGAIN handling
- new starttls() method and Starttls attribute to support STARTTLS
- update parse_headers to try harder to find UID in fetch response
version 3.21: Tue Sep 22 19:45:13 EDT 2009
- rt.cpan.org#49691: rewrite of fetch_hash to resolve several issues
[Robert Norris]
includes new tests via t/fetch_hash.t
- rt.cpan.org#48980: (enhancement) add support for XLIST extension
[Robert Norris]
- rt.cpan.org#49024: NIL personal name returned by *_addresses methods
[Dmitry Bigunyak]
- rt.cpan.org#49401: IMAPClient expunge fails (unless folder arg used)
[Gary Baluha]
- update/clarify close and expunge documentation a little
version 3.20: Fri Aug 21 17:40:40 EDT 2009
- added file/tests in t/simple.t
- added methods Rfc3501_date/Rfc3501_datetime
used by deprecated methods Rfc2060_date/Rfc2060_datetime
rt.cpan.org#48510: Rfc3501_date/Rfc3501_datetime methods do
not exist [sedmonds]
- login() hack to quote an empty password
rt.cpan.org#48107: Cannot LOGIN with empty password [skunk]
version 3.19: Fri Jun 19 14:59:15 EDT 2009
- *search() backwards compat: caller must quote single arg properly
rt.cpan.org#47044: $imap->search does not return [ekuemmer]
- cleanup regexp in _send_line()
- reduce extra newlines injected by _debug()
version 3.19_02: Tue Jun 9 00:47:52 EDT 2009
- _list_or_lsub() now calls _list_response_preprocess so
consumers of this method no longer need to deal with how
LITERAL data is represented in the returned data
- update _list_or_lsub_response_parse handling of folder names
that came back as literal data
- update comments related to _list_response_preprocess
version 3.19_01: Fri Jun 5 15:45:05 EDT 2009
- make parse_headers more robust to errors/non-header data
version 3.18: Wed Jun 3 23:07:12 EDT 2009
- enhance fetch_hash to enable caller to specify list of messages
suggestion by [Eugene Mamaev]
- better handling of untagged BYE response
version 3.18_02: Wed May 27 10:02:24 EDT 2009
- *new attribute Ssl, when true causes IO::Socket::SSL to be
used instead of IO::Socket::INET. This change allows
Reconnectretry logic to work on SSL connections too.
- have LastError cluck() if setting error to NO not connected
- handle errors from imap4rev1() in multiple places
- Reconnectretry/_imap_command enhancements/fixes
+ only run command if IsConnected
+ keep a temporary history of LastError(s)
+ sets LastError to NO not connected if ! IsConnected
+ retry =~ timeout|socket closed|* BYE| NO not connected
- _imap_command_do reduce data logged when using APPEND
- fetch() now handles messages() errors
- thread(), has_capability(), capability() better error checking
- authenticate() now uses _imap_command for retry mechanism
- size() now sets LastError when no RFC822.SIZE is found
version 3.18_01: Fri May 22 17:08:00 EDT 2009
- *update several methods to use common _get_response() method
- refactor most code handling imap responses
- new internal method _get_response() to reduce code duplication
- more regex cleanup $CR/$LF (not \r\n) per perlport/IMAP spec
- major cleanup/fix of append_file for rt.cpan.org#42434
version 3.17: Thu May 21 01:40:08 EDT 2009
- ran all test code and lib/Mail/IMAPClient.pm through Perl::Tidy
- plan on using perltidy to standardize format going forward
- added 13 tests to t/basic.t to cover more methods
- fix some broken tests
- update Makefile.PL to provide info about optional modules
version 3.17_05: Tue May 19 11:04:28 EDT 2009
- *reset LastError for every call to _imap_command_do()
- *run() - use _imap_command_do(), return arrayref in scalar context
- *tag_and_run() - return arrayref in scalar context
- *done() - use _imap_command_do(), return arrayref in scalar context
- *search() now returns empty arrayref not undef if no matches found
- _imap_command_do() made more flexible to avoid code duplication
- _list_response_parse renamed _list_or_lsub_response_parse
- updated POD with new/updated behavior
- append_string() now uses _imap_command_do() for Reconnectretry
- internally use defined return values instead of only LastError()
- run() updated to use same/similar code to _imap_command_do()
- make several return statements more consistent
- delete() now unsets current Folder attribute on success
version 3.17_04: Fri May 15 17:18:52 EDT 2009
- updated POD with new reconnect() method and Reconnectretry attr
- *new _imap_command() after renaming old one to _imap_command_do
support retrying commands X times EPIPE/ECONNRESET errors
- *new Reconnectretry attribute to control number of retry
attempts (default is 0 - no reconnect/retry)
- *added reconnect() method to support Reconnectretry attr
reconnect and updated _imap_command() method
- *_imap_command_do will return undef if command given has no TAG
- fixed message_string() logic/errors for failed size() calls
- local-ize $! anywhere we use Carp routines as older versions
of Carp could cause $! to be reset
- several 'BUG?' comments -- raising red flag for future work
- minor cleanup of sort() logic
- reduce duplicate code, hopefully improved error handling:
new _list_or_lsub() for list() and lsub()
- *change default timeout 30s => 600s: 30s seems too short in
practice
- *explicit import of encode_base64 and decode_base64 from
MIME::Base64 note the code forces a disconnect from the
server on timeout as we can not easily recover from this
situation right now in the code
- *numerous changes of error messages, removing superfluous
text and now relying on LastError instead of $! or $@ when
appropriate
- separator():
+ now return undef if an error occured for NAMESPACE or LIST calls
+ *no longer defaults to '/' if NAMESPACE call does not succeed
- new internal _list_response_parse() method for parsing LIST
responses
- handle ECONNRESET errors on syswrite and mark connection as
Unconnected
+ error "Connection lost" changed to "Write failed"
- previously untrapped syswrite error now generate "Write
failed" errors
- fix in _imap_command where LastError would be erroneously
set on LOGOUT
- _record() no longer tries to infer errors based on data
being "recorded"
- _send_line()
+ cleanup in watching for: +|NO|BAD|BYE
+ now sets LastError when an unexpected response is seen
- _read_line()
+ handle select errors instead of ignoring them
+ forcefully _disconnect() on timeouts as this breaks app logic
+ reduced duplication of code on error handling
- added _disconnect() method to brute force drop connections
on timeout
- added _list_response_parse() to reduce duplicate code for
LIST parsing
- added _split_sequence() to support new Maxcommandlength argument
- fetch()
+ use new Maxcommandlength to split a request into multiple
subrequests then aggregate results before passing them
back to the caller
- fetch_hash(): added checks for failed IMAP commands
- parse_headers()
+ properly check if fetch fails
+ handle cases where $header and/or $field are not defined
- size():
+ return undef if LastError is set
+ fix case where SIZE is not found and return undef as expected
version 3.16: Mon Apr 6 12:03:41 CEST 2009
Fixes:
- set LastError when the imap_command receives an unexpected 'BYE' answer.
rt.cpan.org#44762 [Phil Lobbes]
- handle SIGPIPE cleanly.
rt.cpan.org#43414 [Phil Lobbes]
- improve handling of quotes in folder names
rt.cpan.org#43445 [Phil Lobbes]
- do not use $socket->eof(), because IO::Socket::SSL does not support it.
rt.cpan.org#43415 [Phil Lobbes]
- remove excessive reconfiguration of fastio in _read_line()
rt.cpan.org#43413 [Phil Lobbes]
Improvements:
- remove experied docs about automatically created calls, which
do not exist since 3.00
- remove verbose explanation about reporting bugs.
version 3.15: Fri Mar 20 13:20:39 CET 2009
Fixes:
- manual-page was using POD syntax incorrectly, which caused many
broken links on search.cpan.org
rt.cpan.org #44212 [R Hubbell]
version 3.14: Mon Feb 16 14:18:09 CET 2009
Fixes:
- isparent() when list() returns nothing.
rt.cpan.org#42932 [Phil Lobbes]
- Quote more characters in Massage(): add CTL, [, ], % and *
rt.cpan.org#42932 [Phil Lobbes]
- message_string() will only complain about a difference between
reported message size and actually received size; it will not
try to correct it anymore.
rt.cpan.org#42987 [Phil Lobbes]
- No error when empty text in append_string()
rt.cpan.org#42987 [Phil Lobbes]
- login() should not try authenticate() if auth is empty or undef
rt.cpan.org#43277 [Phil Lobbes]
version 3.13: Thu Jan 15 10:29:04 CET 2009
Fixes:
- "othermessage" in bodystructure parser should expect an MD5,
not bodyparams. Fix and test(!) by [Michael Stok]
Improvement:
- minor simplifications in code of run() and _imap_command()
- get_bodystructure trace message fix [Michael Stok]
- add Domain option for NTLM authentication.
version 3.12: Mon Nov 24 15:34:58 CET 2008
Improvement:
( run in 1.060 second using v1.01-cache-2.11-cpan-39bf76dae61 )