The main problem you'll run into when writing your own mail script will be how to handle all the different (possibly temporary) error conditions that exist. Examples of such errors are:
- The remote mail server is heavily loaded and your transmissions time out. You need to recover gracefully and try sending the mail at a later time (preferably after some time has passed to avoid congesting the remote server even more)
- The remote server uses greylisting and asks you to try again later
- The remote server does spam filtering in an odd way and refuses some of your mails, but not others
- Due to a temporary network problem almost none of your mail gets delivered on the first try. You need to write the mail out to a spool file, or else you memory fills up, the server crashes and all mails are lost.
As I said, just a few examples. There's way to code around all of these of course, but thankfully some very clever and diligent people have already written programs that do this. These programs are called mail servers :-) (or Mail Transfer Agents if you want to be precise). I'd recommend letting these specialist programs help you by doing what they do best, a little time spent carefully RTFMing on the MTA of your choice will surely pay off more than writing another one by yourself. As for logging, I'm partial to exim, which is very flexible in what it will log, the logs are easy to parse and you should be able to get all the information you need out of them without much effort.
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.