Sadly I ran out of time to complete this project and had to resort to massive modifications to the current system. It's still disociated from the communications database, but now a lot of the electronic items are tied together better. A user can subscribe/unsubscribe from the various newsletters much easier now (though I still have one more page to adjust). It probably wouldn't take much of an effort to add the ability to subscribe/unsubscribe from the print newsletter … which would be a great stop-gap solution until I have time to complete the larger overhaul.
The majority of the work, however, went into the new mailer. I had to spend a significant amount of time figuring out the format of plain-text and HTML-based multipart/mime mail. Though more "manual labor" is required on the part of the person doing the mailing (that would be me), the new system is a lot more flexible. Plain text mailing basically utilize the same system as before with the CDO NewMail object. I've moved the standard footer portion to the client side so that I could de-couple the mail creation from the actual sending of the messages. This had the benefit of allowing me to set up a preview option where an EML file is created and downloaded (thanks to the content-disposition HTTP header). All this, however, was gravy after spending around two weeks attempting to set up a system that can do multipart mailing as well. A number of considerations had to be made:
- line length … I wanted to stick to around 69 for URL modification purposes
- what encoding format to use … I wanted to stay away from quoted-printable to make my life easier; I ended up having to set up QP for the text portion of the message anyway; perhaps I should rethink the current encoding on the HTML portion of the message
- mime encoding of images and internal reference … I had originally wanted to pre-encode the images and just insert them where necessary, but decided that could cause other problems so I went with dynamic inclusion
I'm not sure if the mime boundaries are RFC acceptable, but they seem to work well enough and I'm not overly concerned about running into duplicate boundary identifyers. All tests on the system have gone smoothly. I've already sent out a text-based message and it went off without a hitch. As a matter of fact, it went better than the previous few months because I've finally implemented the new from address with the new system. This had been giving us no end of headaches previously thanks to filters and such. There were no messages stuck in the queue at all … which is a pleasant change.