Hi,
1) Tassilo and I were able connect the loose ends between Mail::Transport::Dbx
and Mail::Box... now we are able to have read access to
Outlook Express DBX
folders, just like the mbox, mh, maildir, and pop. Yes: you can even
access these dbx files on your Unix system! No, you can not write or
delete messages in dbx folders.
The following works nicely:
use Mail::Box::Manager;
my $mgr = Mail::Box::Manager->new;
my $dbx = $mgr->open('Folders.dbx') or die;
my $mh = $mgr->open('/tmp/mh', type => 'mh', create => 1,
access => 'rw') or die;
$dbx->copyTo($mh);
It will make a recursive conversion from dbx into mh folders. Not fast,
but it works!
2) Todd Richmond spent quite some time tracking down memory leaks. One
which caused multipart messages to stay alive after a folder was
closed has been eliminated.
3) On message headers you can call removeFields, removeFieldsExcept, and
removeResentGroups to free-up memory. You have to be sure that
these mutulations of the message do not cause other problems.
Headers consume huge amounts of memory, and this will help a little.
You may try:
my $folder = $mgr->open('Folder'); # read only!!!!
foreach my $message ($folder->messages)
{ # do something with the message
# clean the memory for the message
$message->body(undef);
$message->head->removeFieldsExcept('subject');
}
Please inform me about problems.
Full Changelog
Fixes:
- Added message-id to the wrong side of the Reference field
in reply() and forward(). Fix by [Mike Mimic]
- [Tassilo v Parsival] reported an error when HTML::FormatText
was not installed.
- [Alex Liberman] found that searching nested messages failed,
because they were treated as multiparts.
- [Todd Richmond] demonstrated that multiparts contained circular
references, which increased memory consumption. Not hard too
fix.
Improvements:
- Implemented Mail::Box::Dbx to read Outlook Express files. Tests
in tests/45dbx/*
- Implemented Mail::Message::Head::Partial, which will contain
a subset of headers without knowing where to find the rest
of it. ::Subset knows where to get the rest. Tests in
tests/12head/30partial.t
- $head->removeFields(), $head->removeFieldsExcept() and
$head->removeResentGroups to free up memory. This "upgrades" a
complete header into a partial header.
--
MarkOv %-]
------------------------------------------------------------------------
drs Mark A.C.J. Overmeer MARKOV Solutions
Mark@xxxxxxxxxxxx solutions@xxxxxxxxxxxx
http://Mark.Overmeer.net http://solutions.overmeer.net
|