UnderMine is an email program that defies conformity to large, bulky 
clients. UnderMine is small enough to be run from a 3.5" disk without
making your floppy drive sound like its choking on a hairball. Coded
in MS Visual C++ 6.0 SP2 for Win95 and Win98. UnderMine has features
found in commercial SMTP clients and provides the user with a simple,
efficient graphical interface for quick and easy email sends.

UnderMine v4.10 was written partially with the Microsoft Foundation
Libraries - so that I would not have to build its skeleton code from
scratch (that SUCKS). However, it does not use wimpy CStrings or SMTP
wrappers. Its internal Winsock coding was initially designed by
laughing at some bloated and inefficient SMTP wrapper code, thinking
all the while: "WOW, this is some STUPID LOOKING stuff! Why did this
guy use CStrings and all this crap?". There are no lame dialog messaging
routines (DDX, etc) (that are 'automatically' defined) involved here.
Everything works either manually or through traditional Windows API.

Version 2.4:
------------------------------------------
First version released to the public :)

Fixed from v2.4 [v2.48 unreleased]:
------------------------------------------
1.) Fixed crash upon sending if email address entry was invalid
2.) Got rid of un-necessary strings involved in SMTP routines.

Fixed from v2.48 [v2.8]:
------------------------------------------
1.) Fixed "blank email" bug - discovered by Erin Phelan
2.) Got rid of many redundancies in functions
3.) Got rid of many un-necessary variables
4.) Added scrollability
5.) Added ability to save emails as text files
Note: I never intended to add features 4 and 5 in this release. v2.48
was merely a chance for me to fix some bugs and mess around, therefore,
when I initially set its version number, I had not yet started to
experiment with new features (the inspiration to begin them came to me
on a whim). Sorry! :0

Fixed from v2.8 [v2.82 unreleased]:
------------------------------------------
1.) Got rid of some code that caused crashes on machines running certain
versions of the MFC DLL's (Deallocation bugs)
2.) Compiled with Visual C++ 6
Note: Version numbers updated to where they should be :)

Fixed from v2.82 [v2.9]:
------------------------------------------
1.) FINALLY eradicated the elusive "blank email" bug. In v2.48 it was
caused by sending a string that was supposed to hold more data than
allotted. However, it probably continued through v2.48 - v2.8 due to a
stupid Netscape bug. It seems Netscape Communicator 4.5 (and quite
possibly, previous versions) give greater regard to their stupid header
formats instead of message text. If you were using a POP3 client other
than Netscape Messenger, you probably never experienced this glitch.
2.) Got rid of X-Mailer: field in the header - who cares what client
you're using? Anyone want this feature back? Email me: cband@hotmail.com
3.) Revised SMTP send routines to be shorter and more efficient.
4.) Fixed a crash associated with the About box
Note: a.) This revision (like v2.8) is primarily an updated version with
numerous fixes. b.) The PlotSoft mirror site at hroads.net was dropped
due to an inability to give v.90 access. (If Linux doesn't like the
packets it's receiving, noone will.)

Fixed from v2.9 [v3.00]:
------------------------------------------
1.) Fixed the "Save as Text" option - due to yet another deallocation
error, an annoying character was being placed before "Message:" heading 
in the saved email.
2.) Added Pai, GoPhEr GaWd, HME, and MWHAHAHA to credits section
3.) Added "Help" option to UnderMine's system menu
4.) Subject and Message fields now hold 32kb of information each. Before
they only held 30kb, but I found some documentation in Charles Petzold's
_Programming Windows 95_ that suggested otherwise. (Stupid MSDN 
documentation didn't help.)
5.) Added ability to send emails to multiple recipients. Due to this
feature, the 'To' field now holds 32kb instead of 1kb.
6.) Fixed crash regarding bad email addresses placed in 'To' or 'From'
fields. This bug has been around since v2.8.
7.) Got rid of version information (right click program icon in Windows
Explorer to see properties tabs) - it took up quite a bit of space :)

Fixed from v3.00 [v4.0]:
------------------------------------------
1.) Moved the "Help" and "About UnderMine..." a notch above the "CLOSE"
option in the system menu - they were in a pesky location.
2.) Added an Address Book that stores email addresses and then allows you
to select single or multiple recipient addresses at the click of a button
- Katherine's idea
4.) Added a Signature option that writes your email signature to a file
- Yet another one of Katherine's ideas (who says girls don't make good
programmers?) :)
5.) Added a spiffy new menu :) I didn't feel like creating any more buttons
to clutter up UnderMine's simple appearance, and the flat buttons made it
hard for anti-mouse users to select options with the tab key.
6.) Fixed bug regarding a recipient email address rejected by the server.
7.) Completely rewrote initial email address parsing code so that it can find
invalid addresses among valid ones in a multiple recipient situation and tell
the user where the faulty address resides. For example, out of the following
addresses, "foo@bar.goo, silly@beanhead.com, dysfunctional_address,
mrbot@evilmwhahaha.org", the "dysfunctional_address" entry would be apprehended
while the other three would be left alone.
8.) Fixed archaic "rejection of recipient email address code" again. It was
originally written to support only one email address; when the mail server
deemed this email address unacceptable, it would cancel the send. However, with the
addition of UnderMine v3.00's multiple recipients, it would cancel the entire send
only if the last address was invalid. Now it won't cancel anything unless none of 
the recipient addresses work. The code that terminates the send has been modified to
be more "server friendly" - it now sends a "QUIT" and waits for the server's response
before closing the socket.
9.) Fixed the redundant 'Email Sent' messagebox at the end of a successful
send. Now it tells you the number of emails that were sent and the number
that were rejected (as invalid addresses) by the SMTP server.
10.) Fixed a possible bug in which mail server entries were all deleted because of a
faulty procedure.
11.) Fixed a bug in the 'From' section that ignored multiple recipient rules
12.) Got rid of the '\r\n' newline routine in all send procedures - the \r is 
unnecessary (if not unwelcome) since not all recipients are expected to be Windoze
users :) Also rewrote the way sends are done so info appears more nicely in headers
13.) Rewrote email server deletion code and added a messagebox that asks the user
whether the address should be removed or not
14.) Added the ability for users to specify their names within the 'From' field.
I've been intending to make this feature since day one ;)
------------------------------------------
Mail Server Combo Box Fixes:
If you don't have any programs to go by, the process of creating a control
such as a Combo Box to behave in the fashion you want it to can be rather
tedious. The code that determined the Combo Box's position no longer
consists of just one line :)
1.) Fixed an annoying bug where a user enters an email address, unaware that
it already exists in the "Mail Server" list. Upon closing and restarting
UnderMine (without selecting another server via the ComboBox, the "Mail
Server" edit box appears blank. (Nothing is selected)
2.) Fixed a host adding bug where a host could be readded if it was the
same as the first entry.
3.) Fixed a bug in which the Combo Box position functions ran TWICE :0

Fixed from v4.00 [v4.10c4]:
------------------------------------------
1.) Used a diffferent method to read signature file that was far more efficient than
ReadFile...only uses 1/10th of the original memory and still gets the job done =)
2.) Multithreaded SMTP server routines, this means the following:
	a.) During a send, you can either cancel the process or exit UnderMine
	b.) Critical dialogs such as the text boxes in the main email window, the
	signature dialog, and the address book that would disturb a send procedure are
	disabled on time and no longer appear as though they are still enabled during
	sends
	c.) All send routines are now performed in sequence, meaning: 
		A.) Simplified error reporting process, eliminating any code redundancy
		B.) Sudden cancels without delay (Unless UnderMine is still trying to
		resolve a host, or complete a time consuming action. (Most notably blocking
		sockets) If this is the case, UnderMine will wait for the command to finish
	 	before exiting.) Much of the original SMTP code was rewritten for this
		purpose
	d.) When cancelling a send, all critical buttons are disabled.
3.) Whether the "Attach Signature" button is checked or not is now determined upon startup
4.) Made UnderMine's internal code far more efficient and deleted or shrunk many variables
ex.) error buffer, receive buffer, and write path buffer
5.) Changed 'From' and 'To' fields so that you must provide a username and host to send an
email, also optimized UnderMine's error checking routines
6.) Double clicking on an entry in the email address listbox will add an address to the
recipient list now - also fixed a 'clearing' problem when the user hits 'Done/OK' and hasn't
selected any email addresses
7.) Wrote ULink.exe to accomodate mIRC support. Now you can call on UnderMine through an mIRC
popup menu. Refer to IRC_INSTRUCTIONS.txt for more information.
8.) Made email saving procedures much more efficient
9.) Added ability to connect to a specific port of a remote host. Simply add a colon followed
by a port number after the mail server. ex.) [mail.FriendlyAdmin.com:99]
10.) Added the "Name:" textbox, now you do not have to specify your name or witty quote in
quotation marks before your email address, also made UnderMine's main dialog taller and
wider
11.) Fixed bug where delete button did nothing or deleted the wrong servers (instead of in
sequential order). 
12.) Fixed a serious bug which could prevent the successful transmission of an email due to
the speed at which a server sends data back to the client. This condition was almost
impossible to diagnose when testing on my ISP's fast mail server. I found this problem
while messing around with blah.org - thanks to admin Marc Nicholas for allowing me to test
UnderMine repeatedly on his server, along with Wem, memset, and Mayhem^ =)
13.) Had to re-add the \r\n sequence to all send routines because the lame ass microsoft
SMTP daemons won't accept a \n only (UN*X SMTP daemons have no problem with this). Leave
it to microsoft to change a standard then fail to tell everyone about it. UnderMine v4.0
will not work on any of these servers, so be warned :|
14.) Completely changed receive structure around, totally eliminated code redundancy
15.) Fixed bug in Address Book where a user deletes or adds an email address, hits 'Done/OK',
closes the dialog, then quickly brings the dialog back and nothing's there. This is because
people's hard drives are different speeds, and upon loading the Address Book dialog, an
attempt is made to read from the AddressBook.txt file. If the file is still being written
to, nothing turns up in the Email Addresses listbox. (This is proven by hitting cancel and
bringing the dialog back; it will be filled with the appropriate addresses by then) - Thanks
to HME for reporting this - I never got this error because I'm running a SCSI II UW hard
drive =)
16.) Created a method of allowing "broken" server and addressbook files to be read
17.) Changed the format of ServerList.txt and AddressBook.txt to a more efficient one.
Previously, entries were listed in .ini file format. Now, entries are simply listed in
in sequential order. 
18.) Wrote converter.exe to change old AddressBook.txt and ServerList.txt files to
UnderMine v4.10 format.

Current features of UnderMine are:
------------------------------------------
1.) Up to 1000 mail servers are saved and sorted upon closing
2.) Scrollability - New lines are automatically implemented without having
to press the enter key each time - just keep typing as you normally would :)
3.) Emails can be saved as text files for future reference by clicking the
"Save as Text" checkbox.
4.) About box displays Winsock information - Local Host, IP Address, Winsock
maximum sockets, and Winsock version, simple stuff.
5.) Emails can be sent to multiple recipients
6.) Address book - Suggested by Katherine
7.) Signature feature - Suggested by Katherine
8.) Specifiable user name
9.) Multithreaded send routines
10.) mIRC support
11.) Tight, fast code
12.) Specifiable mail server ports

Future features of UnderMine may be: 
------------------------------------------
1.) Simple Mailbomb Cleanup
2.) POP3 mail checking - this won't be around for awhile :)
3.) Spoofable Email client versions - ex.) Netscape, Pine, Eudora
4.) Spoofable Time Zones ex.) Beijing time, Jakarta time, etc
5.) Ability to attach files (with MIME) :) - coming soon
6.) Rich Text capability
7.) Alias book for "From:" entries - coming soon - Suggested by HME
8.) Variable signature files - coming soon - Suggested by HME
