I've just finished writing a little "review" of Email::Store. I'd like to elaborate slightly on my usage of said module.
Various groups that use our machines have mailing lists. Up until recently no one has ever asked for a browse-able archive of list messages. The higher ups agreed that this would be a good idea as it would also allow our public lists to be archived and searched on the web.
We're always looking for something that gives us fine control over most aspects of display/functionality -- So, in my infinite wisdom, I decided that Email::Store might be worth a shot.
I had originally gone with an SQLite DB backend only for convenience sake. Email::Store sets up all the necessary tables once you issue a Email::Store->setup
command. I then created a little script that slurped and fed a few hundred messages to Email::Store::Mail->store
. SQLite didn't seem to be holding up too well, so i switched to MySQL and things were speedy once again.
Having a decent test bed of message, I then put on my web app hat and wrote a bit of CGI::Application and TT2 to display a list a new messages, their message bodies, their related threading and such. After only a day's work, I had a good enough mockup to show my boss who was pleased and urged me to continue.
I really wanted to add some monthly statistics (messages/month). After some talking with Simon, he helped me to work through my first plugin for Email::Store -- Email::Store::Mail::DateParts. It simply breaks down a message's date (stored as an epoch based integer normally) into its day, month and year parts. It also allows you to get the number of message in a particular month (as well as a listing of those message), or a break-down of each month of a given year. It's only about 150 lines long, of which at least 25% is SQL!
Over the course of the week I had added a few things like attachment downloading, quoted message coloring, highlighted urls (mostly stolen from Simon's Buscador code.
I've picked away at it a few times since then, tweaking a few bits of it here and there. It's nearly ready to "launch" -- another success story for perl (in a mostly ASP based organization of all places :).