Copyright (c) 1998-2004 by Tom Grandgent


TMail lives in the tray!TMail is a lightweight POP3/SMTP email client for Windows.  It was written in C using the Win32 API directly, without any bloated framework like MFC.  It has a Windows-like user interface designed to be intuitive, efficient, and highly configurable.  Unlike most email clients, it lives as a little smiley face in the the system tray.

TMail was designed to be left running all the time and can function either as a primary email client or in conjunction with an existing email client.  It plays nice with other email clients and can be used as a mail notification and screening program, allowing you to quickly delete spam before it ever hits your system.

I originally created TMail for my own use in September of 1998 because I wasn't happy with other email clients.  At the time, I was stuck with a very slow Internet connection (19200 baud + bad latency) and other email clients were just too slow and unreliable.  Since I was just getting into Windows GUI programming and had some time on my hands, I decided to make an email client that was fast, efficient, and worked exactly the way I wanted.

Program Requirements


TMail consists of a single 118KB file called tmail.exe.

UPDATED 5/19/2015: After 15+ years of offering TMail as a free download from this web site, I've been forced to remove the download link due to false positives from anti-virus software and the malicious people who exploit these false positives for profit.

TMail is very old anyway and would only be appreciated in this modern era by a tiny minority of computer users. If you still want to try it anyway, contact me and I'll send it to you.

Terms of Use

TMail is currently freeware.  I am not asking for any money; only feedback.  If you use TMail, I would like to hear from you.  Let me know how it works out for you, and if you have any questions, suggestions, comments, complaints, etc.  This would also qualify you for a free registration should TMail become shareware in the future.

You may not redistribute TMail on CD-ROM, on the web, on an FTP archive, or any other electronic or physical medium without my express written permission.  If you want to provide others a means of obtaining TMail, please direct them to this web page:

TMail comes with no warranty, express or implied.  I hope it will not cause problems for you, but if it does I cannot be held liable in any way.  I will try to help if you ask for help though.

Quick Start

Getting started with TMail is easy: just download and run tmail.exe.  The first time you run it, TMail will open the setup window where you must enter your vital information.  The fields filled in below are the only ones you are required to complete:

Setup window for account info

Now you can continue to the other tabs and configure TMail to your heart's content, or you can just click OK and start using it.  Don't worry: By default, TMail leaves messages on the server.  You can still download them with another email client even after they are displayed in TMail's message list.

TMail lives in the tray!Since this is the Quick Start section, I'll save the other tabs and details for later and assume you clicked OK.  The Setup window has disappeared and all you are left with is the TMail icon in the system tray.  Left-click once on this icon to open the message list window.  Since this is the first time you've run TMail, it hasn't checked your mailbox yet.  Hit the F5 key (refresh message list).  Or, if you'd like, right-click on the tray icon and choose "Check Mail Now".  If you have mail waiting on the server, it will show up in the message list like so:

Message List window

You might not have any mail on the server, especially if you've got another email client running that is downloading it as it arrives.  If you do have another email client running, close it.  Now try sending a test message to yourself.  Hit S or right-click on the tray icon and choose "Send A Message".  Enter your own email address next to "To", type a brief message to yourself, and click Send.  Now check for new mail again.  (Hit F5 or right-click the tray icon and choose "Check Mail Now".)

Once the message list shows mail waiting on the server, double-click on a message to open it.  This opens a message window, which you can position next to the message list window.  Then to read another message, single-click on that message.  When you're done, you can hit Esc to quickly close any windows you have open or you can click the X in the upper-right corner.

TMail defaults to checking for new mail every two minutes.  If you get new mail and the message list is open and selected, the TMail tray icon will change and start blinking.  The scroll lock light on your keyboard will also blink.  This behavior is totally customizable though, so go to the Notification tab in the Setup window to let TMail know how it should notify you when new mail arrives.

That's it!  You now know the basics of sending and receiving email with TMail.



AccountsPOP3 Server: The hostname or IP address of your ISP's POP3 (Post Office Protocol v3) mail server.  This is the server that TMail connects to for downloading messages that are waiting for you on the server.

POP3 Username: Your username.  This is usually just the word preceding the @ in your primary email address.  Whoever set up your email account should be able to tell you what your username is.

POP3 Password: Your password.  It will be displayed as asterisks as you type it, so be careful not to screw it up.

SMTP Server: The hostname or IP address of your ISP's SMTP (Simple Mail Transport Protocol) mail server.  This is the server that TMail connects to for sending messages.  It is often the same as the POP3 server.  If you never use TMail to send messages you can leave this blank.

E-Mail Address: Your full email address.  For example,  This is used to identify you as the sender of a message when TMail connects to your SMTP server to send mail.  It is also used in the From: header of messages you send.

Reply-To Address: Your preferred reply-to email address.  This optional field lets you specify a different email address for people to reply to.  If you do so, both a From: header and a Reply-To: header will be included in messages you send.  When people read those messages and choose "Reply", they will default to this Reply-To address.  This is handy when your SMTP server requires you to use a local email address (often a security measure taken to cut down on spam) but you want people to reply to a different address, like an redirector.

Your Full Name: Your full name.  For example, Tom Grandgent. This is used in the From: header of messages you send.  This field is optional but recommended.

Organization: Your organization name.  This optional field lets you specify the name of your organization.  Messages you send will have an extra Organization: header if you use this.  Some people put their company name here, some put their school name here, and some make comments like "what organization?"

BCC Sent E-Mail to: The email address you want to blind-carbon-copy sent messages to.  This optional field lets you specify an email address that will be copied on all of the messages you send.  Since it is a blind carbon-copy, the recipient(s) of your message will not know about it.  This is handy if you're on the road or in a public place and you want to send yourself a copy of every message you send.



Check For New Mail at Given Interval: If this option is set, TMail will periodically check for new mail on its own.  You can specify the interval.  The default is to check for new mail every 5 minutes, which is a reasonable value.  You can check more often, but it is inadvisable to check more often than every two minutes - you don't want to waste the mail server's time too much, plus checking email will cut into your bandwidth.  The performance cost of a check for new mail is extremely slight, but it is still at least a few packets.

Check for New Mail On Startup: If this option is set, TMail will initiate a check for new mail as soon as it starts up.  This is enabled by default.

Auto-download Messages up to ___ Kilobytes: If this option is set, TMail will download message contents and store them in memory (unless you are also have it set to move messages from the server to a local folder on disk.)  You can specify the maximum message size that will be downloaded - the default is 40 kilobytes.  This is handy because if someone sends you a large file, you don't have to wait for it to be downloaded.  TMail will only download the beginning of the message, then you can select "Download Full Message" from the View menu of a message window to download the full message.  Note that if this option is NOT set, TMail will only download message headers.  The message contents will be downloaded on demand when you go to read individual messages.

Don't Do LIST if STAT is Unchanged: If this option is set, TMail won't bother checking the list of messages on the server if it reports the same number of messages and total mailbox size (in bytes) as the last time TMail checked for new mail.  This is enabled by default.  The only time this could cause a problem is if you had TMail check for new email, then removed some messages from the server outside of TMail, and received new messages such that the message and total mailbox size counts returned to their exact original values.  Then TMail would think there is no new mail the next time it did a check.  This would never happen under normal circumstances.



NotificationWhen New Mail Arrives...

Flash Scroll Lock Keyboard Light: Flashes the scroll lock light when new mail arrives.  This is handy if you have your taskbar set to auto-hide or if you want to be able to know if you have new mail without looking at the screen at all.  You may want to turn this off if you regularly use an application that cares about Scroll Lock key presses, but that is very rare.  This is enabled by default.

Flash Tray Icon: Flashes the tray icon when new mail arrives.  This is enabled by default.

...Even if Message List is Already Open: Flashes the tray icon even if the message list is already open.  If this is set, the tray icon will flash if new mail arrives and the message list window is open, even if the message list does not have focus.  This is enabled by default.  You should probably disable it if you leave the message list window open all the time.

Flash Message List Title Bar: Flashes the title bar of the message list window when new mail arrives.  This is enabled by default.

Pop-up Message List: Opens the message list window when new mail arrives.  This is disabled by default, since most people would probably find that annoying.

Play A Sound When New Mail Is...

First Detected: Plays a specified sound as soon as new mail is first detected.

Downloaded: Plays a specified sound when TMail has finished downloading new mail.  I prefer to use just this for a sound, since I never have wait while email is being downloaded - by the time I know about it, it's already downloaded and ready to be read.



SpeechEnable Text-to-Speech: Enables text-to-speech synthesis.  This allows TMail to speak message information to you using your sound card.  If you are running Windows 2000, you already have everything you need to use this feature.  If you have another version of Windows, including Windows XP (!), click here for instructions on how to get text-to-speech up and running on your system.

Summarize All New Messages As They Arrive: This uses text-to-speech synthesis to speak the sender and subject of new messages as they arrive.  This is handy if you're in the room but away from the computer (or in a full-screen application) and you want to know if important email shows up.

Max # of Messages to Read at Once: Lets you limit how many new messages TMail will read at a time.  If you suddenly get 20 new messages, you probably don't want to listen to a summary of all of them.  This option lets you cap the number that will get read.  The default is 5.

Disable Tray Icon Flashing if Summary is Enabled: Prevents TMail from flashing the tray icon if you have it set to summarize new messages as they arrive.  (This option is here because the two don't always go well together.)



VisualMessage List Window

Display Server Name in Window Title: Displays the POP3 server name in the title bar of the message list window.  This is enabled by default.

Automatically Size Message List to Contents: Automatically sizes the message list window so that it is exactly tall enough to hold the number of messages in it.  However, the message list window will not grow so that it is too tall to fit on the screen.

Retain Focus When Opening A Message Window: Keeps focus on the message list window when you open a message.  If this is not enabled, the newly opened message window will get focus.

Open the Message List on Program Startup: Opens the message list automatically when you start up TMail.  This is handy if you like to keep the message list open all the time.

Reading and Writing Messages

Font for Messages: Lets you choose the font used to display messages.  It defaults to System but I recommend you change it to your favorite font.  You can also set the font size when you choose a font.  My favorite for email is Fixedsys.

Read Messages in a Single Window: If this is enabled, you can only have one message window open at a time.  If you switch to a different message in a message list window, the message window will change to that other message.  This is the default.  If you disable this, separate message windows will be opened for each message that you open.

Display HTML Part in Multi-part MIME Message: This is disabled by default to hide HTML email.  When people send HTML email, they usually include both plaintext and HTML versions of the message.  Having this option disabled lets you read the plaintext version without ever seeing the HTML, which is nice.  If you ever need to see the HTML part, just hit H while reading a message or choose "Toggle Full Headers" from the View menu.

Bold Header Names: Displays the headers (like From:, To:, and Subject:)  in boldface.  This is disabled by default because it can be slow on some systems and it's not that helpful.

When composing mail, word-wrap at ___ Letters: Performs word wrapping as you type a message.  When you reach the specified number of characters (75 by default), TMail will automatically wrap the word you're typing down to the next line.  It is highly recommended that you leave this option enabled, since it makes it easier for people to quote from your messages when they reply to them.  It is also standard practice to keep lines under 80 characters in length in email messages.

Use sig file: Lets you specify a signature file.  This file will be loaded whenever you go to write a message.  Many people like to put contact information and possibly a quotation in their signature.



Folders/FiltersMail Folder Settings

Enable Mail Folders: Enables support for mail folders.  These are files on your computer (or a network share) that you can save mail in.  If you enable mail folders, you must specify the location of a folder to put them in - see the next setting for that.

Base Folder Location: The location of where your mail folder files will be stored.  You should create a new folder for this purpose.  If you put TMail in its own folder (like C:\TMail), you can use that for your base folder location.

Automatically Transfer Mail off of Server into Inbox: Downloads messages from your mail server, saves them in a folder called Inbox, and remove them from the server.  This option should be enabled if you want to use TMail as your primary email client.  Make sure you have set a valid base folder location (see previous option) before enabling this option.  Note that you can enable mail folders without having this option enabled.  In that case, mail will stay on the server - you can choose to transfer it to the Inbox by clicking on the TMail icon in the upper-left corner of the message list window and choosing "Store Messages".

Vacation Mode: Only Download Auto-Moved Mail: This feature is currently broken.  Don't enable it.

Compact Folders When Waste Exceeds ___ KB: Automatically compacts a folder when you close it if its waste exceeds the specified amount.  Mail folders are simply text files containing all of the messages in them.  If you delete a message from a folder, TMail remembers (in an index file with extension .mbi) that you deleted the message instead of actually removing it from the folder.  This is because it can take a while to remove messages from the middle of a folder - the folder must be partially (or completely) reconstructed.  So, the "waste" is the size of all of the deleted messages that are still in a folder.  You can let TMail automatically compact folders with this feature, and/or you can compact a folder manually by hitting C from the folder.

Link Mail Folders and Message List Windows: Links the mail folder list and message list windows together, so that when you open one the other will be opened too, and when you close one the other will be closed too.  This is handy if you always want the mail folder list to be displayed when you have a message list window open.


Enable Filters: Enables mail filtering support.  Filters let you set up TMail to automatically do things when it sees messages that match the criteria you specify.  For example, you could set up a filter to automatically move messages whose subject contains "accept credit cards" into a folder called "Junk E-Mail".  Or, you could set up a filter to automatically play a sound called "uhoh.wav" when a message is received from a certain email address (or several email addresses).  This is only a small glimpse of what you can do with filters in TMail.

Filter Definition File: This is the file that stores your filter information.  Make sure you have a complete filename in this box if you use filters, like this: C:\TMail\filters.ini  Just having filters.ini there is not good enough.  The filter definition file is a text file that you can look at with Notepad if you want.  Just be careful if you edit it outside of TMail (I don't recommend doing that...)

Disable Notifications on Auto-Moved Messages: Prevents TMail from doing its usual notification(s) of new mail when you receive messages that are automatically moved to a different folder.  This is really handy for spam or high-volume mailing lists - you won't be interrupted every time you get one of these messages, and you can just go and check the folder contents whenever you feel like reading these messages.  This is one of my all-time favorite TMail features!



MiscellaneousMIDI Display SysEx

Use MIDI Display: Displays the status of your mailbox on the LCD display of an external Roland MIDI module.  Choose the MIDI-Out interface that your device is connected on here.  This feature was added on a whim but it might be handy for the select few who own one of these external MIDI modules - email me if you've actually used this feature!  I'm probably going to remove it at some point.  I should take a picture of TMail on my Roland MT-32 sometime. :-)

MIDI Device Type: Choose whether you have a Roland MT-32 or Sound Canvas module.  The SysEx is slightly different between them.

Test MIDI Display: Displays the given text on the MIDI module's display when you hit this button.

Version Checking

Check for New Version on Program Startup: Has TMail check for a new version of itself when it starts up.  This is done in an independent thread, so it doesn't impede performance at all - you'll never notice it being done.  To check for a new version of itself, TMail connects to my web server and downloads a tiny file with the timestamp of the latest version, just as regular web browser would download a web page from a web server.  No information about you or your system is sent to the web server.  TMail compares the downloaded timestamp to its own timestamp.  If they're different it asks you if you want to upgrade to the latest version.  If you choose to upgrade, TMail will download the latest version and replace itself with that version, automatically restarting itself.  You will then be shown a window that tells you when the new version was compiled, and you can hit a button to go to a web page with version history showing what's new.  The whole auto-update process is very smooth and safe.

Spam Reporting URL

This lets you specify the URL of a web page to open when reporting spam.  This is optional - if you leave this blank, you can still use the "Report as Spam" feature, it just won't open a browser window for you.  The "Report as Spam" feature is accessible by right-clicking on a message in the message list window or selecting a message and pressing the 'O' key.  It will copy the message contents to the clipboard, open the URL you specify here, and delete the message (with confirmation if you're not using folders.)

Web Tools

These are just handy little tools that you can access from the TMail tray icon.  They present a window which lets you enter a line of text, such as a word, stock symbol(s), or a zip code.  This text is remembered between program sessions.  When you hit Enter or click OK, a browser window is opened with the information you requested.



DebugEnable Debug Logging to tmail.log: Logs information about what TMail's doing to a file called tmail.log.  This file is created from scratch each time you start TMail, and it exists in the same folder as tmail.exe.  If TMail is crashing or not behaving properly, I may ask you to send me the tmail.log file so I can get a better idea of what's going on.  You can also feel free to look in this yourself to see what TMail's doing internally.  Note: I recommend leaving this option enabled.  Writing to the log file does not cause much overhead.

Include Communications Trace in Log: Includes a trace of all communications done by TMail in the log file.  The actual data being communicated is NOT included - only the size, purpose, and direction of the data.

Remove registry entries when this session ends: Removes your TMail configuration from the Windows registry when you close TMail.  This setting is not persistent, obviously - it only applies for the session when you enable it.  This is handy if you're using a public computer and don't want to leave your configuration in its registry, or if you're switching to using a config file and want to clean out your old configuration from the registry.

Disable Tray Icon Updates: Stops TMail from doing updates to its tray icon.  This was put in to help diagnose a specific person's problem and should not be used...  I should probably take this out.

Create Timestamp/Version File: Creates a timestamp file (timestamp.txt) for the current version of TMail.  I use this when I go to upload a new version of TMail to my web server - this function is useless to anyone else.

Display Debug Output Window: Displays the debug output window, which shows all of the information being stored in tmail.log.  This is sometimes handy for seeing exactly what TMail is doing, though I've tried hard to make TMail keep you informed at all times through title bar updates and progress bars.  You can also open this window by hitting D from a message list window.