To expect the unexpected

ethan on 2003-07-03T04:45:55

Received an email yesterday from a user who wasn't able to get Mail::Transport::Dbx to work. It turned out that the mailbox he wanted to parse was created with Outlook Express on a Macintosh and he tried to process it on a different machine running RedHat.

On installation time, the module figures out the machine's byteorder and then uses either -DDBX_LITTLE_ENDIAN or -DDBX_BIG_ENDIAN when compiling the underlying C-library.

So the poor chap ended up with a module compiled for a little-endian machine trying to process a file in big-endian byteorder (I assume that Outlook Express writes them that way on a Mac). If that eventually turns out to be the reason for the failure, I have again some work to do: Making the byteorder conversion configurable at run-time which means that I can no longer use my convenient C-macros for it. :-(

The lesson to learn from that: There's always at least one case a programmer wont anticipate. It might be as esoteric as it gets...it's still going to happen after a while.


Maybe not so exotic?

pjm on 2003-07-03T06:45:58

Are you sure that this person is throwing a mail folder/file at your module, and not a lovely piece of microsoft proprietary nonsense (read "a single, very ugly, database")? I'm pretty sure that Outlook Express could not export as an mbox, so there'd have to be some funky applescript or the like being invoked if your correspondent has produced a sensible format.

(For what it's worth: "Entourage", the successor of OE, at least implemented a "drag and drop to mbox" feature.)

Re:Maybe not so exotic?

ethan on 2003-07-03T10:11:21

Are you sure that this person is throwing a mail folder/file at your module, and not a lovely piece of microsoft proprietary nonsense (read "a single, very ugly, database")?

Well, M::T::Dbx is supposed to work with these proprietary files. It expects to see files with the .mbx extension as produced by OutlookX.

But your point isn't totally invalid. Whenever I receive mails like that, I never exclude that the user made something wrong. It's usually the first thing I try to rule out in the following mail correspondance. People only seldom give a complete report with all information necessary. :-(