1.55 (Dec 13, 2006)
  - New command line option to specify a local bind address.  Useful on
    machines with multiple IP addresses.
  - EHLO should never send "localhost" now.  I Added a new function
    called get_hostname() that does several new checks to get the system's
    hostname.  If all else fails it will send it's own IP address.
  - Added a new command line option, -o fqdn=FQDN, that allows one to override
    the name sent after EHLO.
  - Small change to how the timezone is sent, it was triggering spam filters.
  - Windows executable now has TLS support enabled!

1.54 (Oct 28, 2006)
  NEW FEATURES:
  - TLS support is finally here!  See the -o tls=[auto|yes|no] option.
    To enable simply install the Net::SSleay and IO::Socket::SSL modules.
    NOTE: If you experience errors related to TLS, PLEASE UPDATE your
    Net::SSleay and IO::Socket::SSL modules before reporting an error.
    I have already found inconsistancies with older versions.
  - Updated the "-o message-header=HEADER" option so that you can use
    it more than once.  Additionally you can now use it to override message
    headers that would have normally been generated by sendEmail.  This is
    particularly useful when a custom Message-ID or subject is needed.
  - SMTP authentication now supports the SASL PLAIN mechanism along 
    with the LOGIN method.
  - New optional way to specify username and password with the -o option.
  - If a username is supplied with -xu, but a password is not specified,
    sendEmail will now prompt for one rather than exiting with an error.
  BUG FIXES:
  - Fixed an annoying bug that made some MUA's believe there was always
    an attachment when there wasn't.
  - New base64_encode() function that fixes a bug that was causing certain
    usernames/passwords used with -xu and -xp to not work properly.

1.53 (never publicly released, changes merged into 1.54)

1.52 (Feb 19, 2005)
  - Fixed the bug that prevented sendEmail on Windows and Mac systems
    from working properly.  Thanks to the many people that reported that
    bug!  Sorry it took me so long to fix, I've been working on my new
    anti-spam service for businesses at http://www.dotclean.com/
  - Allow null command line arguments.  For example -u "" should work.
    Thanks to Mike Nadeau for pointing out that bug.
  - Print shell escape codes for colored help on everything but Windows.
    Thanks to Offer Kaye for that tip.  If this causes problems anywhere
    please let me know!
  - Changed default mime-encoding header to "application/octet-stream"
    rather than "base64" when sendEmail can't guess any other content-
    type to use.  Thanks to wwp for that patch.
  - Added a -o message-charset option to specify the message body's
    character set.  Thanks to Jei for letting me know not everyone
    sends messages in iso-8859-1 ;)
 
1.51 (Dec 02, 2004)
  - A few alarm() calls were being called on Win32 systems which doesn't work.
  - Added -o message-format=raw option to allow sending of raw pre-built email
    messages.  Thanks to Lutz for the patch!
  - If the hostname isn't found in common environment variables it now loads
    the Sys::Hostname module and uses it to get the hostname.  This should
    work properly on more platforms now.  If calling this module causes
    anyone grief please let me know!

1.50 (Sep 30, 2004)
  - There has been a long standing bug where sendEmail could tell you the
    remote server accepted the email when, in fact, it had been rejected.
    This is now fixed.
  - Changed the textual output of many debug messages.
  - Added a Message-ID header to each message sent.
  - You can now specify multiple to, cc, or bcc recipients by separating them
    with either a space, comma, or semi-colon.  Previously it had to be space
    separated.
  - Replaced the connect function with one from the IO::Socket library.  The
    IO::Socket module is included in default Perl installations, so this change
    does not create any new Perl module dependencies.
  - When sending to multiple recipients and one is rejected by the server
    sendEmail does not abort as long as at least one recipient was
    accepted.
  - To, CC, and BCC fields can be specified in the
    "Brandon Zehm <caspian@dotconf.net>"
    format and it will populate the appropriate fields in the email message.
  - All messages are now MIME encoded, even simple text ones.  This makes the
    program flow much cleaner.
  - SMTP Auth is now supported with the -xu and -xp command line parameters.
  - You can create multi-line messages on the command line now by putting
    a '\n' into the message specified with the -m parameter.
  - Always use +0000 for timezone, and get the current time from gmtime()
    rather than localtime().
  - Added some color to the help and documentation if the shell is Bash.
  - It now aborts with an error message if all file attachments can not be
    found before connecting to the remote smtp server.  Previously if an
    attachment specified couldn't be opened it would simply send the message
    without the attachment.
  - Allow a single custom email header line to be specified with
    -o message-header=HEADER
  - Add a -o timeout=SECONDS option so you can set the timeout used for all
    network reads and writes.
  - Added ability to specify a "Reply-to:" header with -o reply-to=ADDRESS
  - Added ability to read message body from a file with -o message-file=FILE
  - Added a lot of new documentation available via --help TOPIC.
 
1.42 (June 06, 2003)
  - It was possible to send bare CR's, so I fixed that now. (Thanks to
    Jared Cheney for the bug report)
  - Patch from Jared Cheney to add the MIME-Version field to conform to RFC1521
    (made attachments work with more mail clients)
 
1.41 (Apr 22, 2003)
  - In some cases bare LF's were *still* getting sent, so I think I fixed it
    right this time. (Thanks to Buddy Nahay for that bug report and helping
    me test the fix!)
  - Fixed bare period encoding (it wasn't working in all cases either)
  - Changed HTML detection to require the <html> to be at the beginning of
    a line.  Otherwise any email with "<html>" in the message would get
    tagged as being an html message. (Thanks to John Rouillard for that
    bug report!)

1.40 (Dec 04, 2002)
  - A patch from Paul Kreiner (J.P van Oyen also reported a similar fix):
      "This patch forces the timestamp string to always follow
       the HH:MM:SS convention required by the RFCs, even if the
       fields could be represented with a single digit.  I also
       took the liberty of adding a global "timezone" variable at
       the top, and fixing a couple of typos."
  - A patch from Reidar Johansen that included several fixes, but notably
    he included a function called tz_offset that determines what timezone
    your in.
  - Fixed the signal handlers so they display a nice message
  - Added a quit() function
  - Added a printmsg() function to handle all printed/logged messages
  - Added a simple openLogFile() function
  - If running in Win32 it says "CTRL-Z" rather than "CTRL-D"
  - Applied fix from Yakov Lerner to fix bare period encoding
  - Check that attachments exist and are readable before trying to open them
  - Rewrote the connect() function
  - Rewrote the close/disconnect function
  - Made the -v option work with any number of -v's
  - Rewrote the read_server_response() function and renamed it to readServerResponse()
  - Did a bunch of little fixes so that perl -w won't complain
  - Redid the whole file logging stuff - now the printmsg function takes care of it,
    and it's no longer partially broken.
  - Added a global alarm variable for setting the alarm timeout, and changed
    it's default value to 60 rather than 15.
  - Fixed all the exit()'s so that sendEmail should now only exit with an
    error status of 0 if it successfully sent the email.
  - Added support for HTML email (Thanks again to Reidar Johansen)
  - Re-worked the mime-encoding function to work with -w and use strict.
  - Removed several die() calls in the file attachment process.
  - Put a fix in place that should cleanly replace any bare LF's with CRLF.
 
1.33 (Apr 16, 2001)
  - Fixed some typo's and problems with the logging option regarding the
    printing of attachment(s) names to the log file.
  - Fixed several comparisons with null strings.
  - Lots of little cleanup things.

1.32 (Aug 18, 2000)
  - Fixed a fairly serious error which in some circumstances would
    cause file attachments to be corrupted because the mime padding at
    the end of the attachment was not getting set correctly.
 
1.31 (Aug 9, 2000)
  - Totally rewrote all mime encoding code, it should now be 100%
    MIME/Base64 compliant, and it now opens files in binary mode in win32.
    This was a much bigger operation than it sounds like ;-)
  - Now it should work with LARGE file attachments. In v1.30 it had to
    load the whole file into memory before encoding it, now it encodes
    line by line so it doesn't use nearly as much memory.
  - Now checks the message for bare periods and encodes them.
  - Fixed a bug that would allow text to be printed even if -q was
    set (and -m was not).
  - The MIME delimiter is now somewhat random.

1.30 (Aug 1, 2000)
  - ATTACHMENT SUPPORT ADDED!
  - Added CC and BCC support, they are now normal command line options.
  - sendEmail should now work easier in Win32.  Win32 did not support
    the alarm() calls, so I put a check that disables the alarm calls if
    $^O matches 'Win'.
  - Added autodetection of mime type on attachments.
  - Disabled the alarm timer if there are attachments, that way people
    on modems can send big attachments without getting their upload killed.
  - Added a -q option for quiet mode
  - Added a 'Date:' field in the mail headers so messages will
    show up in the right order in my mail program ;-)
  - Changed the way you specify a port form the command line
    now you specify it in the -s <server> option as an
    optional :port addendum to the server name.
  - Added -h and --help support.
  - Updated the help to reflect all changes.
   
1.22 (Jul 8, 2000)
  - Removed the 'content-type' and 'transfer encoding type' flags in the email
    headers, in preparation for a version that will support real attachments.
  - When piping data to sendEmail often email would have lines ending with
    just \012 and many email servers do not like this. So I now have  \012
    replaced with \012\015 in data piped from STDIN.
  - When piping data as the message it now displays a message for those manually
    typing in an email.  It also changes the 15 second alarm to a 60 second alarm
    and resets it after every new line.

1.21 (May 15, 2000)
  - Removed the SIG_ALARM call (gave errors on certain non-slackware distributions)
  - Added a missing error check that could have allowed sendEmail to say a
    message was sent successfully when the server had actually returned an
    error message.
     

1.20 (May 10, 2000)
 VERSION OVERVIEW:
 -----------------
    -v    option added
    -vv   option added
    Passing the body of the email via STDIN is now an option
    Multiple <to> addresses now allowed
    Logging feature added
    Terminates itself after 15 seconds to avoid dns hangs etc
    Lots of small potential bugs fixed and a lot of code cleanup
 
 DETAILS:
 --------
  - DEBUG CODE/MODE:
    - Lots of error messages everywhere
    - 2 levels of verbosity accessible via command like parameters
    - Lots more information messages triggered by $debug's value
  - Fixed a problem which could have caused sendEmail to overlook certain
    error messages from the email server.
  - All invalid command line parameters are now reported correctly
  - Some code comments were written incorrectly, and are now fixed.
  - Added handler for HUP and ALARM (both kill sendEmail now)
  - Possible problems with certain email addresses fixed.
  - Modified date routine to not use a system call. (making it more portable)
  - Improved command line parsing (preventing a few possible errors).
  - Thanks to Nick Pasich for help with these patches:
    - You can now send the body of the email via the -m option
      as before or optionally leave the -m out and pass the body
      of the email to STDIN.
    - Alarm to abort sendEmail if it runs longer than 15 seconds
    - Multiple 'To' addresses
    - Option to log to a file
  - Updated the 'help' page to reflect all changes


1.01
  - Fixed a bug in the error/success checking routine which caused sendEmail
    to report errors when there were none. 
    Thanks to Michael Santy for this bug report.
  - Added some more documentation in the code.
  - Added this CHANGELOG file.
  - Release v1.01

