Been writing an email archiving application for the office here. It stores every message in a MySQL table as follows :
| Field | Type | Null | Key | Default | Extra |
-----
| message_id | int(10) | | PRI | NULL | auto_increment |
| whofrom | varchar(80) | YES | | NULL | |
| subject | varchar(255) | YES | | NULL | |
| date | datetime | YES | | NULL | |
| source | longblob | YES | | NULL | |
| msgid | varchar(255) | YES | | NULL | |
The “source” field is the message source compressed with Compress::Zlib. Everything is going well, but my main problem is parsing all the damn different types of messages, I’ve got it displaying almost 99% of the messages headers and body, but the hardest part is getting the attachments. I’m using MIME::Parser.. Basically the workflow is:
if ($part->mime_type eq 'text/plain') {
$body .= $bodyHandle->as_string;
}
else { push @attachments, $bodyHandle; }
So this will assume if it’s not ’text/plain’ then we’ll assume it’s an attachment. However, sometimes this doesn’t work.. I dunno, I’m just frustrated, I’m sure ill figure it out soon.. also needa figure out how to make parse the attachment and allow the user to view it.