Upstream changes:
version 3.40: Thu Dec 6 01:44:16 UTC 2018
- rt.cpan.org#122373 support IPv6 by using IO::Socket::IP over IO::Socket::INET
[Gilles Lamiral and Mark Overmeer]
- rt.cpan.org#127103 flags() undef value as an ARRAY reference on a bogus message
[Gilles Lamiral]
- rt.cpan.org#124523 update examples/populate_mailbox.pl timegm usage
[Bernhard M. W.]
- t/capability.t: added first set of tests
- t/quota.t: minor fix when tests skipped
Upstream changes:
version 3.38: Tue Feb 9 02:48:21 UTC 2016
- rt.cpan.org#107592: redact credentials via debug if !Showcredentials
[Gilles Lamiral]
- rt.cpan.org#110273: failure to quote password values
(regression introduced in 3.36 via fix for rt.cpan.org#100601)
[Gilles Lamiral]
- rt.cpan.org#107593: allow getquota("")
- *Quote() now returns qq("") for defined but empty values
- rt.cpan.org#107011: fix folders_hash() docs and usage in is_parent()
[Gilles Lamiral]
- 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()
{perl>=5.16.6,p5-ExtUtils-ParseXS>=3.15}:../../devel/p5-ExtUtils-ParseXS
since pkgsrc enforces the newest perl version anyway, so they
should always pick perl, but sometimes (pkg_add) don't due to the
design of the {,} syntax.
No effective change for the above reason.
Ok joerg
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
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
pkgsrc-changes:
Set MultiHomed => 1 in call to IO::Socket::INET to allow fallback to IPv4
when server has both IPv4 and IPv6 addresses and no reliable IPv6 route
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
Upstream changes:
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
Changes from previous:
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 Mail::IMAPClient::BodyStructure::Envelope->parse_string($str)
convenience method for handling ENVELOPE data from fetch_hash
- rt.cpan.org#68310: folders() should not call exists()/STATUS
[Gilles Lamiral]
- affects folders() and subscribed() methods
+ use selectable() instead of exists() in call
- consider removing extra call to folders()/subscribed()
+ ensure separator is set properly in folders()
+ selectable now properly checks for \Noselect flag
+ update folders() POD to match implementation behavior
- rt.cpan.org#68648: [patch]: CAPABILITY after authenticate
[Stef Simoens]
+ delete cache after State set to Authenticate
- State() is no longer an auto-generated method
- rt.cpan.org#68755: provided socket loses blocking in 3.19-3.28
[Martin Schmitt]
version 3.28: Fri Mar 4 00:17:38 EST 2011
- rt.cpan.org#66004: internaldate() return undef if no internaldate in reply
[Jason Long]
- rt.cpan.org#66367: fetch_hash uses Escaped_results() in 3.26/3.27
(redo) rt.cpan.org#63524: fetch_hash() parse errors
[Mathias Reitinger]
+ fetch_hash: only Escape() data in parenthesized list
+ update fetch_hash test and add a new test
- do not touch CRLF in Escape()/Unescape()
- added Escape() method
- rt.cpan.org#66287: flags results truncated due to Maxcommandlength
[Erik Colson]
- rt.cpan.org#65694: SASL PLAIN: bad order of login data
[Willi Mann]
version 3.27: Sun Feb 13 14:37:27 EST 2011
- rt.cpan.org#65694: migrate fails
[Erik Colson]
- rt.cpan.org#65470: uninitialized warning in message_to_file
[Gilles Lamiral, Mark Hedges]
- rt.cpan.org#61835: (DOC) in LIST context undef may be returned
[Stefan Völkel]
+ warn/highlight behavior in docs Errors section
- updated documentation
+ migrate() documentation fixed
+ moved Custom Authentication Mechanisms toward end
+ recommended use of scalar context due to historical API behavior
version 3.26: Mon Jan 31 22:15:04 EST 2011
- *require Perl 5.8.1 as constant use is invalid on 5.6
- rt.cpan.org#63524: fetch_hash() parse errors
[Brian Kroth]
+ fixed handling of LITERAL values in response
+ fixed handling of field names with a dash (e.g. X-SAVEDATE)
+ fetch_hash now uses Escaped_results() method
- *fixed Escaped_results() to properly join LITERAL data with
the data that comes before and after it
- *rt.cpan.org#60945: append_file() does not interpret $date as expected
[Jason Long]
$date should now be 1 (to use the file mtime) or a valid RFC3501 date
- *rt.cpan.org#61292: memory consumption with message_string()/append()
rt.cpan.org#61806: Major problem with one function in IMAPClient
[Gilles Lamiral, Casey Duquette]
+ use @_ / $_[<num>] in critical places to avoid pass by
value memory overhead
+ use in memory files in a few critical places as that code
path in Mail::IMAPClient is significantly more efficient
with internal memory usage
+ *new (undocumented/do-not-use-without-good-reason)
attribute Maxappendstringlength used by append() and
append_string() holds the size (in bytes, default 1 MiB)
that triggers when message SCALAR(s) passed to these
methods will be treated as an in memory file. This
attribute will likely be removed in a future version.
+ *append() and append_string() now call append_file() and
use an im memory file when length($message) is greater
than Maxappendstringlength; other minor code cleanup
+ *message_string() now calls message_to_file() and uses an
in memory file
+ refactor message_to_file() to use internal _imap_uid_command()
+ update _read_line() to be more efficient w/CPU in critical
section by pulling isa() checks out of main loop also
conserve memory by not storing an extra copy of LITERAL
data if the data was put into a filehandle from the caller
+ Memory/working set (KB) comparison (Perl 5.10 cygwin Win7):
- test: message_string on 6.1M msg and then append 6.1M msg
version | start | after message_string | after append
--------+-------+----------------------+-------------
2.2.9 | 7624 | 74404 | 131896
3.25 | 7716 | 74408 | 156532
3.26 | 7684 | 33372 | 42608
- minor arg cleanup of noop() and tag_and_run()
- rt.cpan.org#63444: relax get_envelope(), allow empty reply-to
[Nikolay Kravchenko]
- rt.cpan.org#61068: append_string can invalidate a good $date
- rt.cpan.org#60045: Logout error if delay between BYE and tagged OK
[Armin Wolfermann]
no longer set an error when this happens
- rt.cpan.org#61062: migrate() errors
[Johan Ekenberg]
+ rewrote migrate() to be functional and simple
- Update README and cleanup several old or out of date files
version 3.25: Fri May 28 00:07:40 EDT 2010
- fix body_string parsing bug and added tests in t/body_string.t
[Heiko Schlittermann]
- rt.cpan.org#57661: uninitialized value warning in IMAPClient::thread
[Max Bowsher]
- rt.cpan.org#57337: Correctly handle multiparts in BodyStructure.pm
[Robert Norris]
fixes in Mail::IMAPClient::BodyStructure::bodystructure for
bugs still in release 3.24
- rt.cpan.org#57659: install fails when using cPanel GUI
[Ken Parisi]
hack Makefile.PL to use alarm() and timeout prompt() gracefully
- relax t/basic.t logout() error check (allow 'BYE' instead of 'OK')
- left examples/idle.pl out of MANIFEST for 3.24
version 3.24: Fri May 7 17:02:35 EDT 2010
- rt.cpan.org#48912: wrong part numbers in multipart messages
[Dmitry Bigunyak, Gabor Leszlauer]
- fix Mail::IMAPClient::BodyStructure::bodystructure to
properly assign parts for messages using multipart and also
include .TEXT parts as well (still not including top level
HEADER and TEXT though - bug?)
- allow _load_module() to set $@ and LastError if module load fails
- rt.cpan.org#55527: [no] disconnect during DESTROY
[Stefan Seifert]
- updated logout documentation to correctly state that DESTROY
is not used to force an automatic logout on DESTROY despite
documentation that indicated otherwise
- update append* documentation to match current implementation
- rt.cpan.org#55898: append_file can send too many bytes
[Jeremy Robst]
- avoid append_file corner cases operating on lines instead of buffers
- use binmode on filehandle in append_file
- add tests to t/basic.t for append_file
- rt.cpan.org#57048: _quote_search() using $_ in loop instead of $v
[Matthaus Kiem]
- added examples/idle.pl program showing use of idle and idle_data
- idle_data() should not read/block after server returns data
[Marc Thielemann]
- idle_data() _get_response regexp updated to not match errors
- idle_data() now uses a timeout of 0 by default as documented
- _get_response() now checks for defined($code) to allow $code==0
to trigger/signal a rebuild for the transition 5.10.1 -> 5.12.1.
The list of packages is computed by finding all packages which end
up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl,
or PERL5_PACKLIST defined in their make setup (tested via
"make show-vars VARNAMES=..."), minus the packages updated after
the perl package update.
sno@ was right after all, obache@ kindly asked and he@ led the
way. Thanks!
version 3.23: Fri Jan 29 00:39:27 EST 2010
- new beta idle_data() method to retrieve untagged messages during idle
similar to method suggested by Daniel Richard G
- 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
- Updating package for p5 module Mail::IMAPClient from 3.14 to 3.16
- Splitting dependencies into "real depends" part and a recommended part
- Add Authen::SASL as recommended dependency
- Set gnu-gpl-v2 as license
Upstream changes:
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
Potential compatibility issues highlighted with '*':
- *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
- *added Reconnectretry attr 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()
new _folders_or_subscribed() for folders() and subscribed()
+ new _list_response_preprocess() keeping old code/logic in
for now, but may remove in the future (for buggy servers?)
- some updates for migrate() but this method needs much work
- body_string() now handles fetch() errors
- tag_and_run now handles _imap_command() errors
- changed non-timeout CORE::select() timeout from 0.001 to 0.025
- minor cleanup of _read_line() error handling/debug output
- get_bodystructure() handle more fetch() errors
- expunge() handle select() errors
- restore_message() handle store() errors
- uidvalidity() handle status() errors
- uidnext() handle status() errors
- is_parent() use _list_response_preprocess() for parsing
- move() send delete_message() errors to stderr
- simplify size() method
version 3.17_03: Fri May 8 16:37:08 EDT 2009
- *added uidexpunge() for UID EXPUNGE UIDPLUS support
- *search() now DWIM: auto-escapes args, SCALAR refs not escaped
rt.cpan.org#44936 [cjhenck]
- _quote_search() provides auto-escape capability for search()
- many POD updates as well as some major reformatting (incomplete)
- login now fails if passwd and user are not defined
- _sysread(): $self was in args to 'Readmethod' twice
- authenticate() return undef on scheme eq "" or LOGIN
- "require" instead "use" Digest::HMAC_MD5 for CRAM-MD5 support
version 3.17_02: Fri May 1 16:44:21 EDT 2009
- cleanup of use/imported data
- use Socket $CRLF in many cases not \r\n per perlport/IMAP spec
- new Keepalive attr for use with new()/Socket() enables SO_KEEPALIVE
- LastError now uses Carp::confess for stack trace if Debug is true
- Maxcommandlength now defaults to 1000 per RFC2683 section 3.2.1.5
- added noop() to support IMAP NOOP
- _imap_command now sets LastError if a OK/$good response is not seen
- fixed fetch_hash() to return FLAGS as "" not () when no FLAGS set
version 3.17_01: Fri Apr 24 18:36:45 EDT 2009
- *new attribute Maxcommandlength used by fetch() to limit
length of commands sent to a server. This should removes
need for utilities like imapsync to create their own split()
functions and instead allows Mail::IMAPClient to hopefully
"do the right thing"
- remove extra 'use' calls for Carp and Data::Dumper
- _read_more() improperly initialized vector causing select
errors, thus timeouts were not working properly (now they
work...)
- *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]
Pkgsrc changes:
o Adjust dependencies to match new requirements.
Upstream changes:
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.
Upstream changes:
version 3.12: Mon Nov 24 15:34:58 CET 2008
Improvement:
- major performance improvement in append_message(), avoiding
reading the whole file in memory as the docs promised but the
code didn't do. [David Podolsky]
Pkgsrc changes:
o Canonicalize HOMEPAGE
Upstream changes:
version 3.11: Wed Oct 8 10:57:31 CEST 2008
Fixes:
- some SSL connections process more bytes then needed, which
made the select() timeout. Nice fix by [David Sansome]
rt.cpan.org#39776
Improvements:
- improved example imap_to_mbox by [Ralph Sobek]
version 3.10: Sun Aug 24 21:26:27 CEST 2008
Fixes:
- INET socket scope error, introduced by 3.09
rt.cpan.org#38689 [Matt Moen]
version 3.09: Fri Aug 22 16:38:25 CEST 2008
Fixes:
- return status of append_message reversed.
rt.cpan.org#36726 [Jakob Hirsch]
- no line-breaks in base64 encoded strings when logging-in
rt.cpan.org#36879 [David Jonas]
- fix MD5 authentication.
rt.cpan.org#38654 [Thomas Jarosch]
Improvements:
- extensions and clean-ups in examples/imap_to_mbox.pl by
[Ralph Sobek]
- an absolute path as Server setting will open a local ::UNIX
socket, not an ::INET
rt.cpan.org#38655 [Thomas Jarosch]
to trigger/signal a rebuild for the transition 5.8.8 -> 5.10.0.
The list of packages is computed by finding all packages which end
up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl,
or PERL5_PACKLIST defined in their make setup (tested via
"make show-vars VARNAMES=...").
Changelog:
version 3.08: Tue Jun 3 09:36:24 CEST 2008
Fixes:
- message_to_file used wrong command.
rt.cpan.org#36184 [Parse Int]
- oops, distribution released with OODoc/oodist, not make dist.
[Randy Harmon]
- fix parsing of body-structure information for multi-parts
rt.cpan.org#36279 [Doug Claar]
Improvements:
- Updated README and TODO (Was 'Todo')
version 3.07: Mon Apr 28 09:17:30 CEST 2008
Fixes:
- expunge with no folder specified produced "use of undef"
error. Fixed by [André Warnier]
- additional arguments for create [Michael Bacon]
- accepts LIST answer with multiple lines [Michael Bacon]
- ::BodyStructure::_address() should be _addresses()
Fixed by rt.cpan.org#35471 [Brian Kelly]
version 3.06: Mon Apr 14 23:44:03 CEST 2008
Fixes:
- expunge without argument must use selected folder. [John W]
- expunge with folder does not select it. [John W]
- the documentation still spoke about "autogenerated methods",
but they were removed with 2.99 [John W]
- append_string needs LF -> CRLF translations, for some
servers. rt.cpan.org #35031 [Jonathan Kamens]
- append_string needs LF -> CRLF translations, for some
servers. rt.cpan.org #35032 [Jonathan Kamens]
Improvements:
- added ::setquota(), thanks to [Jappe Reuling]
version 3.05: Wed Feb 20 08:59:37 CET 2008
Fixes:
- match ENVELOPE and BODYSTRUCTURE more strict in the
grammar, to avoid confusion. [Zach Levow]
- get_envelope and get_bodystructure failed for servers which
did not return the whole answer in one piece. [Zach Levow]
- do not produce parser errors when get_envelope does not
return an envelope. [Zach Levow]
- PLAIN login response possibly solely a '+' [Zach] and [Nick]
version 3.04: Fri Jan 25 09:25:51 CET 2008
Fixes:
- read_header fix for UID on Windows Server 2003.
rt.cpan.org#32398 [Michiel Stelman]
Improvements:
- doc update on authentication, by [Thomas Jarosch]
version 3.03: Wed Jan 9 22:11:36 CET 2008
Fixes:
- LIST (f.i. used by folders()) did not return anything when the
passed argument had a trailing separator. [Gunther Heintze]
- Rfc2060_datetime() must include a zone.
rt.cpan.org#31971 [David Golden]
- folders() uses LIST, and then calls a STATUS on each of the
names found. This is superfluous, and will cause problems when
the STATUS fails... for instance because of ACL limitations
on the sub-folder.
rt.cpan.org#31962 [Thomas Jarosch]
- fixed a zillion of problems in the BodyStructure parser. The
original author did not understand parsing, nor Perl.
- part numbering wrong when nested messages contained multiparts
Improvements:
- implementation of DIGEST-MD5 authentication [Thomas Jarosch]
- removed call for status() in Massage(), which hopefully speeds-up
things without destroying anything. It removed a possible deep
recursion, which no-one reported (so should be ok to remove it)
- simplified folders() algorithm.
- merged folder commands, like subscribe into one.
- added unsubscribe()
rt.cpan.org#31268 [G Miller]
- lazy-load Digest::HMAC_MD5
version 3.02: Wed Dec 5 21:33:17 CET 2007
Fixes:
- Another attempt to get get FETCH UID right. Patch by [David Golden]
version 3.01: Wed Dec 5 09:55:43 CET 2007
Changes:
- removed version number from ::BodyStructure
Fixes:
- quote password at login.
rt.cpan.org#31035 [Andy Harriston]
- empty return of flags command should be empty list, not undef.
rt.cpan.org#31195 [David Golden]
- UID command does not work with folder management commands
rt.cpan.org#31182 [Robbert Norris]
- _read_line simplifications avoids timeouts.
rt.cpan.org#31221 [Robbert Norris]
- FETCH did not detect the UID of a message anymore.
[David Golden]
Improvements:
- proxyauth for SUN/iPlanet/NetScape IMAP servers.
patch by rt.cpan.org#31152 [Robbert Norris]
- use grep in stead of map in one occasion in MessageSet.pm
[Yves Orton]
version 3.00: Wed Nov 28 09:56:54 CET 2007
Fixes:
- "${peek}[]" should be "$peek\[]" for perl 5.6.1
rt.cpan.org#30900 [Gerald Richter]
version 2.99_07: Wed Nov 14 09:54:46 CET 2007
Fixes:
- forgot to update the translate grammar.
version 2.99_06: Mon Nov 12 23:21:58 CET 2007
Fixes:
- body structure can have any number of optional parameters.
Patch by [Gerald Richter].
- get_bodystructure did not take the output correctly [Gerald Richter]
- parser of body-structure did not handle optional body parameters
Patch by [Gerald Richter], rt.cpan.org#4479 [Geoffrey D. Bennet]
version 2.99_05: Mon Nov 12 00:17:42 CET 2007
Fixes:
- pod error in MessageSet.pm
- folders() without argument failed. [Gerald Richter]
Improvements:
- better use of format syntax in date formatting.
- Rfc2060_datetime also contains the time.
- append_file() now has options to pass flags and time of file
in one go. [Thomas Jarosch]
version 2.99_04: Sat Nov 10 20:55:18 CET 2007
Changes:
- Simplified initiation of IMAP object with own Socket with a new
option: RawSocket [Flavio Poletti]
Fixes:
- fixed read_line [Flavio Poletti]
- fixed test-run in t/basic.t [Flavio Poletti]
version 2.99_03: Thu Nov 1 12:36:44 CET 2007
Fixes:
- Remove note about optional Parse::RecDescent by Makefile.PL;
it is not optional anymore
Improvements:
- When syswrite() returns 0, that might be caused by an error
as well. Take the timeout/maxtemperrors track.
rt.cpan.org#4701 [C Meyer]
- add NTLM support for logging-in, cleanly intergrated. Requires
the user to install Authen::NTLM.
version 2.99_02: Fri Oct 26 11:47:35 CEST 2007
The whole Mail::IMAPClient was rewritten, hopefully without
breaking the interface. Nearly no line was untouched.
The following things happened:
- use warnings, use strict everywhere
- removed many lines which were commented out, over the years
- $self->_debug if $self->Debug checked debug flag twice
- $self->LogError calls where quite inconsequent wrt $@ and carp
- consequent layout, changed sporadic tabs in blanks
- consequent calling convensions
- \0x0d\0x0a is always \r\n
- zillions of minor syntactical improvements
- a few major algorithmic rewrites to simplify the code, still
many oppotunities for improvements.
- expanded "smart" accessor methods, search abbreviations,
and autoloaded methods into separate subs. In total much
shorter, and certainly better understandable!
- fixed many potential bugs.
- labeled some weird things with #????
Over 1000 lines (30%!) and 25kB smaller in size
Needs to be tested!!!! Volunteers?
Fixes:
- Exchange 2007 only works with new parameter: IgnoreSizeErrors
rt.cpan.org#28933 [Dregan], #5297 [Kevin P. Fleming]
- Passed socket did not get selected.
debian bug #401144, rt.cpan.org# [Alexander Zanger],
#8480 [Karl Gaissmaier], #8481 [Karl Gaissmaier],
#7298 [Herbert Engelmann]
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=401144
- Seperator not correctly extracted from list command.
rt.cpan.org#9236 [Eugene Koontz], #4662 [Rasjid]
- migrate() Massage'd foldername twice
rt.cpan.org#20703 [Peter J. Holzer]
- migrate() could loop because error in regexp.
rt.cpan.org#20703 [Peter J. Holzer]
- migrate() append_string result not tested.
rt.cpan.org#8577 [guest]
- Failing fetch() returned undef, not empty list.
rt.cpan.org#18361 [Robert Terzi]
- Fix "use of uninitialised" warning when expunge is called
rt.cpan.org#15002 [Matt Jackson]
- Fix count subfolders in is_parent, regexp did not take care
of regex special characters in foldername and seperator.
rt.cpan.org#12883 [Mike Porter]
- In fetch_hash(), the capturing of UID was too complicated
(and simply wrong)
rt.cpan.org#9341 [Gilles Lamiral]
- overload in MessageSet treated the 3rd arg (reverse) as
message-set.
- do not send the password on a different line as the username
in LOGIN. Suggested by many people, amongst them
rt.cpan.org#4449 [Lars Uffmann]
- select() with $timeout==0 (no timeout) returns immediately.
Should be 'undef' as 4th select parameter.
rt.cpan.org#5962 [Colin Robertson] and [Jules Agee]
- examine() remembers Massage()d folder name, not the unescaped
version. rt.cpan.org#7859 [guest]
Improvements:
- PREAUTH support by rt.cpan.org#17693 [Danny Siu]
- Option "SupportedFlags", useful when the source supports
different flags than the peer in migrate().
Requested by rt.cpan.org#12961 [Don Christensen]
- Fast_io did not clear $@ on unimportant errors.
rt.cpan.org#9835 [guest] and #11220 [Brian Helterline]
- Digest::HMAC_MD5 and MIME::Base64 are now prerequisits.
rt.cpan.org#6391 [David Greaves]
- PLAIN (SASL) authentication added, option Proxy
rt.cpan.org#5706 [Carl Provencher]
- removed Bodystructure.grammar and IMAPClient.cleanup from dist.
- reworked Bodystructure and MessageSet as well.
- EnableServerResponseInLiteral now autodetect (hence ignored)
version 2.99_01:
After 4 years of silence, Mark Overmeer took maintenance. David
Kernen could not be reached. Please let him contact the new
maintainer.
A considerable clean-up took place, fixing bug and adapting the
distribution to current best practices.
- use "prompt" in Makefile.PL, to please CPAN-testers
- removed old Parse::RecDescent grammars
- include Artistic and Copying (GPL) into COPYRIGHT file
- remove INSTALL_perl5.80
- removed all the seperate Makefile.PLs and test directories
- removed the hard-copy of all involved RFCs: there are better
sources for those.
- converted tests to use "Test::More"
- Authmechanism eq 'LOGIN' understood.
- test for CRAM-MD5 removed, because conflicts with test params
from Makefile.PL
- test for fast-io removed, it is Perl core functionality
- require IO::Socket::INET 1.26 to avoid Port number work-around.
- Parse::RecDescent is required, and the grammars are pre-parsed
in the distribution. This makes the whole installation process
a lot easier.
- Update Todo, and many other texts.
- added pod tester in t/pod.t
- cleaned-up the rt.cpan.org bug-list from spam. The next
release will contain fixes for the real reports.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
module directory has changed (eg. "darwin-2level" vs.
"darwin-thread-multi-2level").
binary packages of perl modules need to be distinguishable between
being built against threaded perl and unthreaded perl, so bump the
PKGREVISION of all perl module packages and introduce
BUILDLINK_RECOMMENDED for perl as perl>=5.8.5nb5 so the correct
dependencies are registered and the binary packages are distinct.
addresses PR pkg/28619 from H. Todd Fujinaka.