[Catmail] Backend implementation using Mail::IMAPClient and Mail::Box - SpiraMail

Terence Monteiro terence at deeproot.co.in
Tue Sep 9 12:19:16 BST 2008

Hello folks,

I'm Terence, a full time FOSS hacker based in Bangalore, who enjoys working
with Perl and Catalyst. For long, building a Catalyst based webmail has
been on my and my colleagues wishlist. We thus embarked on the SpiraMail
project http://code.deeproot.in/spiramail/ to implement this, but it came
to life very recently, after we saw the bounties on offer by the Cat folks.

We've been working on a OO backend, to be stitched by C::M::Adaptor for a
model, and decided to separate out backend functionality into a few classes
like IMAP, Connection, Folder, Mails and Mail to start with. To share my ideas:

 * IMAP is the main backend class, which provides a connect method,
returning a Connection object.
 * The Connection class has a get_folder method that returns a Folder object.
 * The Folder class has get_messages method that returns a Mails object.
 * The Mails class has count and next methods. The next method returns a
Mail object, and is used for iteration.
 * The Mail class represents a single mail

We started writing the backend using Mail::IMAPClient, because of the
extensive set of methods available. We're happy that Matt has some nice
things to say about it. We saw Mail::Box, and thought it a good candidate
to use for message parsing, but we're currently stuck at extending Mark's
Mail::Box::IMAP4 and Mail::Box::IMAP4::Message to implement our Folder and
Mail classes.

We're happy to share ideas, snippets and code. Currently our code is on a
subversion repository accessed over SSH. We'll provide access over
anonymous HTTP soon and update you.

Thanks and Regards,
Terence Monteiro.

DeepRoot Linux,
Ph: +91 (80) 4112 4784 / 85.

More information about the Catmail mailing list