Gammadyne Mailer Revision History

Version 60.0 (November 4th, 2020)
* Added SMTP/POP3/IMAP4 support for OAuth authentication for Microsoft servers.
* Added SMTP support for OAuth authentication for Gmail.
* Added the ability to specify a range for the Universal Domain Throttle Count and/or Period.  The range specifies what the value should be at the beginning and end of the mailing list, and for each recipient, the value will be somewhere in between depending on their position in the mailing list.  This can be used to gradually "warm up" the SMTP server's IP address.
* Recipient File: added support for specifying the URL of a mailing list on your website.
* Resume Send: if the Send Operation was tracked, the resumption will now accumulate tracking stats on the original campaign instead of creating a new one.
* View In Browser: added support for internal HTML images.  The images will be automatically uploaded to the FTP server, and the <img> tags in the uploaded HTML Body will be converted accordingly.
* Tracking Report: when there are multiple subjects, the actual subjects are now listed on the report.
* Suppression files are now copied into a temporary database file during a Send and Incoming Operation.  This greatly reduces the amount of memory used and reduces the likelihood of an "out of memory" crash.
* Preview Window: the "Test Send" tool now allows you to specify how many test emails will be sent.  Previously, one email was sent for every recipient.
* Backup Database: if the database file cannot be automatically located, the user is now given the chance to locate it manually.
* The "Preview Limit Reached" warning window now provides an option to change the Preview Limit.
* Constructed Attachments: added support for unicode in the filename.
* Spell Check: added a tool for looking up the word in a dictionary.
* Added a "Edit HTML File" tool to the File menu.  This allows you to edit an external HTML file that is not inside the project.
* View Result Set: it is now possible to "drag-select" a range of rows quickly.  Move the mouse cursor to the "#" column of the first row.  Press and hold the left mouse button.  Move the mouse up or down.  You will see rows being selected.  If the mouse is at the top row, the table will automatically scroll up.  Likewise, if the mouse is on the bottom row, the table will automatically scroll down.  Release the left mouse button when you have reached the last row that you wish to select.
* HTML Editor: Insert Image: the width, height, and border width are now assigned to the style and not just the attributes.  This is important because the style overrides the attributes.  Previously, if the style was present, changes on the dialog would have no effect.
* HTML Editor: Paste Image: added a "Match Width Of Selected Image" option to the Resize Image window.  This will appear if an image is selected for being pasted over, which is useful when replacing a template placeholder image.
* HTML Editor: Paste Image File: if an image is selected for being pasted over, the new image's width will now match the old image.
* The "Resume Send" tool is now compatible with the "Only Send To Range Of Recipients" option.
* The "Test Send" tool is now compatible with the "View In Browser" option.
* Import Suppressions (to database): this will now ignore addresses that are already suppressed.  Previously it would import a duplicate.
* Added the remember() G-Merge function.  This allows the Send Script to set a variable that can be used by the Success/Failure Script.
* Tracking Report: Recipient Table: added a column containing the links clicked.  Using the Filter, you can now build a list of all the recipients that clicked on a particular link.
* View In Browser: added a "Test" button that will login to the FTP server, look for the folder, and report any problems.
* HTML Editor: added support for pasting a .jp2 image file.  However, it will be converted to .jpg since most email clients don't support the JPEG2000 format.
* When clicking on a control that is disabled because of an unchecked checkbox, the checkbox will flash briefly.
* The "Exclude Domains" setting is now enabled by default for new projects, and is pre-populated with some common domains to avoid.
* Templates: added the "Three column, image/text" Section type.
* Single Send: when using a database or CSV file, the "Value" column will remember its contents from the last time the Single Send tool was run.
* HTML Editor: Image Properties: added the ability to specify padding between the image and the border.
* HTML Editor: Insert Button: added the ability to change the vertical padding.
* HTML Editor: Insert Pie Chart: added the ability to hide the numerical values on the generated pie chart.
* External HTML editor: added an "Enter Subfolders" option to the "Validate Folder" tool.
* SMTP Servers table: added a tool to print the table.
* Suppressions: Calculate Hash: added an "Add To Database" button.
* Send Summary: the "View Successes" and "View Failures" tools now support unicode.
* Test Send: when using the "First n Recipients" mode, rejections will no longer count against this number.
* Test Spam Score: this no longer reports a penalty when the From: header is "<user>", which has a special meaning.
* Tracking: a language code with an unknown sub-language is now handled gracefully.
* HTML Editor: if an image is selected, the context menu will now show the "Image Properties" tool when opening the context menu from the toolbar.  Previously, this menu option was only visible if the image was right clicked on.
* Added the -RecipientIndex- predefined variable.  Unlike -Index-, it counts rejections.
* Upgraded SQLite from 3.25.3 to 3.33.0
* Preview Window: Recipients List: holding down the Shift key while pressing up/down will now extend the selections to the previous/next recipient.  Also, Ctrl+D is now the hotkey for "Deselect All".
* View Attachments: added support for .jp2 images.
* Several improvements to soft-bounce detection.
* Verify Links: this will now test <link> elements.
* Template Designer: the "Font" field now has a tool for browsing for a font.
* The default HTML body now uses a <div> instead of <p> because later inserting a <div> inside a <p> is problematic.
* Import SMTP Servers/Incoming Servers: when choosing the "CSV data in clipboard" option, this now supports a CSV file that was copied to the clipboard.  Previously, it only worked on raw CSV data in the clipboard.
* Test Spam Score: removed the "Click To Trust" button.  The sample email is no longer restricted in any way.
* Added a help file chapter on List Management.
* Operation History/Incoming: this now reports the number of emails that did not meet the criteria.
* The Operation History no longer creates an entry if there is an error that prevents the Send Operation from starting.
* Pseudo-Projects: the ExplicitAttachmentUTF8 field now supports UTF-8 in the filename of the attachment.
* Suppressions table: added a "Paste" button.
* Tracking report: the Subject section now calculates the average interest by dividing by the number of opens, not the number of recipients.  This matches how it is calculated on other parts of the report.
* When the menubar has focus, pressing a letter will now open the menu with the corresponding hotkey.  The menubar will give up focus if a function key or the tab key is pressed, or a control is given focus.  (since 59.0)
* The "Custom Set Statement" Removal Method now supports unicode.
* SMTP Servers table: added buttons to rearrange the rows.
* Follow-Ups table: added support for copying and pasting rows.
* HTML Editor: the "Customize Toolbar" tool now also appears on the "Options" submenu of the WYSIWYG editor's context menu.
* Added the "Seraph" skin.
* The "Use CSV File For Mailing List" wizard now supports unicode in the CSV filepath.
* Template Designer: Export To HTML: file details are now reported, and there are buttons to open the export file or explore its folder.
* Analyze Database: the searchability of each data type is now reported.
* Added the -ElapsedSeconds- predefined variable to the Post-Send Script.
* Verify All Addresses: the log now supports unicode.
* Preview Window: removed the labels at the top of each tab, allowing the content to completely fill the area.
* SMTP Servers table: added a context menu tool to shuffle the rows.
* Email Viewer: View Attachments: if a text attachment has no hyperlinks, it will not be converted to HTML as there is no advantage to doing so.
* Domain Throttles: added buttons to the bottom of the table that will move the selected row up or down.
* Tracking Report Settings: this window will now remember its position and the selected tab.
* The "Email Send Log To" and "Email Summary To" features can now tolerate extra whitespace when determining the Sender.
* The "Close log between repetitions" option is now checked by default for new projects.
* The "Login with user name & password" checkbox has been replaced with a combobox named "SMTP Authentication".
* Improved the mouse-over effect of transparent buttons that are inside an editbox's interior.
* The Attachments branch will now remember which tab is selected between sessions.
* Check Blacklisting: removed the dynip.rothen.com and orvedb.aupads.org blacklists.
* Fixed: one minor memory leak and one minor GDI resource leak.
* Fixed: HTML Viewer: the balloon popup was not always disappearing when scrolling.
* Fixed: the "Periodically Send Copy" option was not ignored during an Auto-Response or Forward-To-All as documented.
* Fixed: the Simple Send tool now ignores the "Wait Until" project setting.
* Fixed: the Incoming Log was failing to properly list the Criteria keywords (since 59.0).
* Fixed: when the Attachment filename contained unicode, Content-Type auto-detection was not working.
* Fixed: Tracking: Estimated Opens was calculating as 0 if "Links Clicked/Unopened"=="Emails With 1+ Links Clicked".
* Fixed: HTML Editor: Insert Button: the caret was not being positioned correctly in some situations.
* Fixed: if the Resume Send tool is launched a second time, and a database is being used with "Store Successful Send Date" enabled, the resume was beginning at a row index rather than at the date when the original operation stopped.
* Fixed: HTML Viewer: the horizontal line graphical glitch has been mitigated by redrawing the browser shortly after scrolling.
* Fixed: Test SMTP Servers: when reporting an error, focus was not given to the correct cell in some cases.
* Fixed: a Send Operation that is aborted after all emails have been built but not finished sending was not registering as aborted, which was preventing the Resume Send tool from working.
* Fixed: OAuth-Gmail authentication could fail on some firewalls (rare).
* Fixed: tracking report: the Domains section would list the same domain more than once if the only difference was upper/lower case.
* Fixed: View Result Set: the Duplicate Row tool was causing all rows below it to be considered "changed".  Although this was not causing data loss, it was unnecessarily saving all of those rows back to the database.
* Fixed: TLS can no longer hang its thread if the server doesn't send data when expected to.  TLS will now obey the socket's timeout.
* Fixed: HTML Editor: Paste Image: if an image is selected, it would first appear to overwrite the pasted image.  However, going to the Raw or Preview tab and then back to Edit, the old image would reappear below the pasted one.
* Fixed: HTML Editor: Insert Hyperlink: this was failing if an image was selected.


Version 59.0 (June 8th, 2020)
* There are now three Subject fields.  Each email will choose one in round-robin order.  If tracking is enabled, you will be able to see the effectiveness of each Subject regarding opens and clicks.
* Added the "Resume Send" tool, which can resume an interrupted Send Operation.
* Exclusions and the "Eliminate Duplicate Recipients" feature now keep their email addresses in a temporary database file.  This greatly reduces the amount of memory used and reduces the likelihood of an "out of memory" crash.
* Added the "Compress HTML" option to the HTML Body/Options branch.  This will reduce the size of the HTML code without altering its appearance, reducing bandwidth and making the mailing faster.  This capability was introduced earlier as a tool that could be launched manually; the option makes sure it happens automatically.
* Test Send: added the ability to limit the number of test emails that are sent.  Previously, the entire mailing list was tested.
* S/MIME: added support for .CRT and .PEM certificates.
* Tracking report: the World Map now has an option to show the Average Interest Score.
* Templates: Content: added an option to have a "link bar".
* Added a tool that allows you to view and edit the contents of the Suppression Database table.
* HTML Editor: Paste Image: added the ability to resize the image before it is pasted.
* Import Suppressions: added the ability to import into the Suppressions Database.
* Send Summary: added two tools that allow you to view the list of successful and failed email addresses.
* View In Browser: configuration window: added a tool that lets you choose a folder on the FTP server.
* Preview Window: the Recipients List now supports "drag-select", a mode that allows you to quickly select a range of recipients.  Move the mouse to the first recipient that you wish to select.  Press and hold the left mouse button.  Move the mouse up or down.  You will see additional recipients being selected.
* Backup/Recover Database: added an option to only display the backups for the specific database that is specified in the project.  Previously, it always displayed all database backups.
* View Attachments: for unknown data types, the user can now choose to display it as 8-bit characters, 16-bit characters, or in a hex editor.  Previously it was always displayed as 8-bit characters.
* The Header, Subject, and Body Criteria now support unicode.
* View In Browser: added an option to secure the connection to the FTP server with SSL/TLS.
* All incoming Wizards now ask you to specify the Authentication Type.
* HTML Editor: added support for pasting a .webp image file.  However, it will be converted to .jpg since most email clients don't support the WEBP format.
* Repeat Send: added the "Close Log Between Repetitions" option.  Previously, the Send Log would record every Send Operation, which could make the log grow very large.
* Simple Send: Add Recipient: when you type into the Search field, it is no longer necessary to press Enter or click the icon.  Instead, after a 1 second delay, the list of recipients will become filtered by the Search text.
* HTML Editor: Insert Pie Chart: added the ability to rearrange the rows.
* Tracking report: the method for calculating Estimated Opens was unsound and has been replaced.
* Tracking: added support for detecting the Yahoo image pre-fetcher.  This was causing Yahoo and AOL emails to register as opened even if they weren't, and was blocking GeoIP and view time stats.
* When auto-detecting the HTML Body's character set, the new HTML 5 meta tag is now supported, e.g. <meta charset="UTF-8">
* Import SMTP Servers Table: this now offers to import from a CSV file or CSV data in the clipboard.  Previously you could only import from another project file.
* Test Spam Score: each entry is now color coded in green, yellow, or red.
* Test SMTP Servers: added a "Discard" button, which can be used to remove or disable all of the failed SMTP servers from the table.
* Pseudo-Projects can now utilize the View In Browser feature.
* Single Send: this will now remember the last email address entered.
* Connection String: Browse: for Excel, this will ensure that the readonly mode is disabled.
* Rename/Move Project: if the new project filepath already exists, the user is now given the option to overwrite it.  Also, the old and new project filepaths are now shown on the summary window.
* Preview Window: in the Recipients List, if only one recipient is selected, pressing the up/down arrow will now also move the selection highlight, not just the dotted focus box.
* Templates: the spacer below the title and above the footer is now optional and appears in the Content list.
* The Recipient File field now supports unicode.
* Tracking: add the "Summary: Show Operation Stats" report setting, which determines if the "Elapsed Time", "Mailing Duration", and "Emails Per Hour" statistics are included on the report.
* Analyze Database: this now reports if a data type is case sensitive.
* View Result Set: the "#" column is now a different color to indicate that it is not editable and not part of the result set.
* View Result Set: if an error occurs while fetching records, this is now reported in a popup window.
* Incoming Sources: Import From Clipboard: added support for tab, semi-colon, and vertical bar separators (auto-detected).
* Lookup Recipients: if the result set is empty, there is now a "Revise" button that will re-launch the tool.
* Compress HTML: this will now remove unnecessary whitespace from CSS selectors.
* Tracking: automatic FTP upload: the CSV file now contains the "Interest Score" and "Links Clicked" columns.
* Added the -ProcessedEarlier- predefined variable to the Post-Incoming Script.
* Before a Send or Incoming Operation starts, it will now examine the first row of the Suppressions Database and report if the suppression hash is in the correct format.
* View In Browser: any problem with the server information or credentials is now reported immediately.
* HTML Editor: Insert Button: this window will now remember all of its settings.
* HTML Editor: the Attribute and Style Editors can now operate on a selected image or form control.
* View Archive: Refresh: the currently selected email is now re-selected after the refresh completes.
* Incoming Servers Table: added buttons to the bottom of the table that will move the selected row up or down.
* Added the smime_status() G-Merge function, which can be used to determine if an incoming email was signed.
* Added the build_email_address2() G-Merge function, which allows for the first and last names to be in separate parameters.
* Validate HTML: in attribute values, added detection of bad encoded characters and characters that need to be encoded.
* Validate HTML: added detection of when elements can only appear inside other elements.
* HTML Editor: the Attribute Editor now supports unicode in the attribute values.
* The "Operation must use an updatable query" Excel error will now include advice on how to fix it.
* S/MIME: the "Info" tool will now report the certificate's encryption algorithm.
* SMTP Servers table: added support for copying and pasting rows.
* Operation History/Outgoing: this now reports the number of database records with an empty email address.
* Validate HTML: improved detection of bad URL's in hyperlinks and images.  Local images are no longer flagged as warnings.
* Verify All: this now supports the Remove From Files field.
* HTML Editor: Insert/Edit Hyperlink: this now encodes spaces in the filename so that they work correctly.
* HTML Editor: Text Format: the Font Face field now has a button for adding a font from the drop-down list, and a button for browsing.
* Direct Delivery Possible: the DNS query is now performed in a background thread so that it can be aborted.
* S/MIME: the "Subject Name" field will now remember past inputs in a drop-down list.
* HTML Editor: Insert Button: the "Text" field now supports unicode.
* The charw() G-Merge function will now return a 4-byte surrogate pair when n > 65535.
* Troubleshoot HTML: the log now supports unicode.
* Database Clauses: added arrow buttons that rearrange the table.
* Check Blacklisting: the total number of bans and clears is now listed at the bottom of the log.
* HTML Editor: Insert Pie Chart: "width" and "height" attributes are now specified in the new <img> tag.
* Verify Links: if the tool is launched a second time, the window from the first time will now close automatically.
* Email Viewer: the "Attachments" tab is now greyed out if no attachments are present.
* View In Browser: the total number of failed uploads is now reported on the Send Summary.
* The Send Log now shows how long the database query took.
* Incoming: the progress window will now show the progress of the Members Only feature as it parses the mailing list.
* Preview Recipients: the Abort button will now respond instantly during the phase where Exclusions are being processed.
* On the Content and Mailing List branches, each tool now shows a description.
* Custom Headers: the Fixed Pitch and Word Wrap options are now remembered.
* SMTP branch: clicking on the overview will now take you to the Delivery branch.
* Tracking Report: added a "Help" option to the bottom of the Tools menu.
* Test Send: the "Append Rejections" option is now ignored.
* Single Send: the "Periodically Send Copy" option is now ignored.
* HTML Editor: Neutralize Characters: the previous and new size of the HTML is now reported.
* Check Blacklisting: removed the rbl.megarbl.net and aupads.org blacklists.
* Fixed: during the Delayed Retry phase, the text at the top of the progress window could get clipped.
* Fixed: Rename/Move Project was allowing the project to appear twice in the recent project history.
* Fixed: Auto-Responding, Forwarding, and List-Serving should have been ignoring the "Wait Until" project setting.
* Fixed: Tracking Report: the "Export Overview to CSV" tool was not working correctly if the "Show Summary" report setting was unchecked.
* Fixed: Export To Pseudo-Project was exporting the Repeat Interval as an integer, not a rational.
* Fixed: Simple Send: paste image was leaving a temporary file on the hard drive if the image was a JPG with an EXIF rotation.
* Fixed: the Post-Send Script was running after aborting the Preview Window if no emails were sent, contrary to documentation and past behavior.
* Fixed: Tracking Report Settings: if Maximum Browsers is set to 0, there was still 1 browser being shown (same for Platforms, Countries, Languages).
* Fixed: HTML Editor: Style Editor: the "Apply to each element" scope did not work correctly in some situations.
* Fixed: HTML Editor: Image Properties: for <img> tags with inline pixel data, there was a possible crash.  Also, newlines in the 'src' and 'alt' attributes were not being handled properly.
* Fixed: Preview Window: the Test Individual and Test All tools were adding the test emails to the statistics inappropriately.
* Fixed: the Connection String Password was not being reset when opening a different project.
* Fixed: Tracking Report Settings: normally settings are kept on the hard drive, and all is well.  But when generating a report for the first time on a new computer, the Report Settings are downloaded from the server.  When this occurs, new settings that have been introduced since when the settings were last uploaded would be set to 0 instead of being defaulted.
* Fixed: Tracking: some Outlook opens were not registering Outlook as the browser.
* Fixed: HTML Editor: the Preview and Edit tabs were not always supporting HTML5 and CSS3.
* Fixed: S/MIME: Test: an error could be reported that a new certificate is not yet valid due to time zones.
* Fixed: View Result Set: the Excel error -1047 now has a work-around.


Version 58.0 (January 27th, 2020)
* Added the ability to put a "View In Browser" link in your emails.  When enabled, each HTML Body will be uploaded to your website and the appropriate link will be generated.
* Added support for Gmail OAuth authentication for POP3 and IMAP4.  The Incoming Sources table has a new column, "Authentication".
* Added the ability to have Exclusions in a database.  Rather than add a bunch of settings to the Exclusions branch, we simply added a new mode called "Unhashed" to the "Hash Type" field on the Suppressions branch.
* Added the "Track Bounces" option to the Tracking branch.  If checked, at the end of an Incoming Operation you will have the opportunity to transfer the number of bounced emails into a tracking report.
* HTML Editor: added a tool that reformats the HTML source code.
* The Suppression Database will now reject recipients during an Incoming Operation.
* Added the "Store Removal Date In Column" setting to the Remove/Options branch.
* Preview Window: it is now possible to select multiple recipients.  The Discard, Send, and Test buttons will operate on all selected recipients.
* Tracking Report: there is now a World Map Type setting, with a new mode: Opens Per Capita.  Previously, the World Map always showed total opens.
* HTML Compression: this can now compress style sheets and inline style attributes.
* Incoming Processing Mode: added the "Add to Suppression Database" mode.
* Tracking: added a setting to control the appearance of the graph data.  Previously, graphs always used the "Solid" mode.
* View Result Set: Filter: the Advanced mode now supports subexpressions enclosed in parenthesis.
* Backup/Recover Database: this tool can now work with ODBC data sources and Connection Strings provided that the filepath of the database can be determined.  Previously, it only worked with the Internal Database.
* Tracking Report: the number of rejections for the entire campaign is now reported.
* S/MIME: added a tool that displays information about the certificate.
* Tracking: Record Name: if you have separate columns for the first and last name, you can now specify both columns separated by a comma (e.g. "FirstName,LastName").
* Tracking: when downloading a report, the email addresses are now encrypted.  This prevents your mailing list from being exposed to an eavesdropper.
* Validate HTML: added detection of an illegal character after an attribute value.  Also, a slash can only terminate the tag if it is followed immediately by the >.  Other minor improvements.
* Lookup Recipients: added "Case Sensitive" and "Whole Word" options.
* Test Send: added a "Preview Emails" option.  Previously the Preview Window would never appear, even if enabled in the project.
* Added support for SCRAM-SHA-1 authentication for SMTP.
* DKIM/DomainKeys: the "Test" tool will now report specific problems with the DNS record, rather than reporting a generic error that the test failed.
* Rename/Move Project: this will now rename the folder where the Delayed Retries are stored.
* Templates: added the "Three column, image/title/text/button" Section type.
* The "Test Spam Score" tool now reports if Direct Delivery is not possible.
* Tracking: Export Recipients To CSV: added an option to encode the CSV file in UTF-8 so that unicode characters appear properly.
* Import Suppressions: added "Paste Addresses", "Import Addresses", and "Find Illegal" tools to the bottom of the email address list.
* View Attachments: CSV attachments are now displayed in an interactive table control rather than as static HTML.
* HTML Editor: Insert Hyperlink: unicode characters are now supported.
* HTML Editor: Verify Links: redesigned the results window.  It now uses a table instead of a listbox.  The line number is now reported.
* Test Sender Domain: added a "More Testing" button to the error window that will take you to the MXToolbox.com website.
* Change Recipient Address: this now supports multiple email addresses in the recipient column on a single database row.
* HTML Editor: Paste Image: the new <img> tag will now have 'width' and 'height' attributes.
* Import CSV Data To Database: when looking for an existing record, unicode is now supported.
* HTML Editor: Image Properties: added the ability to round off the corners of the image.
* Updated the SSL module (bug fixes and security improvements).
* Help: the Tracking Report now has its own chapter and has been greatly expanded.  Added a Help button to the Report Settings window.
* View Result Set: added the ability to copy and paste rows.
* View Result Set: the Delete Row tool will now automatically reconnect if the database connection is dropped.
* Test Sender Domain: added a "Don't show this again" option to the warning window.
* Tracking Report Settings: added an option to limit the number of languages on the report.
* Check Blacklisting: added a green/yellow/red summary bar above the log.  Improved the log format.
* HTML Editor: Edit Style: redesigned the window so that scrolling is no longer necessary.
* Add Recipients: added Copy/Save As/Print buttons to the bottom of the log.
* Test Server: added Copy/Save As/Print buttons to the bottom of the log.
* Incoming Servers table: the Import tool now offers the option to import CSV data from the clipboard.
* The Generate Host Stats, Append Rejections, Append Successes, and Append Failures fields now support unicode in the filepath.
* Tracking: the Forwards section for each recipient is now sorted by date.  Previously the order was random.
* When right clicking on an .HTM file in File Explorer, Gammadyne Mailer is now listed on the "Open With" sub-menu.
* Tracking Report: added hotkeys for Zoom In/Out:  Ctrl+[ and Ctrl+]
* HTML Editor: Insert Button: rounded corners is now optional.
* Operation History: this now reports the number of incoming emails that had no recipients to process.
* Send Summary Graph: added the "Diamonds" appearance option.
* Analyze Database: the Index type is now reported.
* Incoming Servers table: added tools for copying and pasting rows.
* Preview Window: numerous minor improvements.
* Added the directory_create(), directory_delete(), and directory_exists() G-Merge functions.
* The "Preview Mobile" and "Restore Project Backup" tools can now be placed on the toolbar, although they are hidden by default.
* Incoming Summary: clicking the "View Log" or "Recipients" button will no longer close the window.
* Welcome: if the clipboard contains a project file, you can now press Ctrl+V to open the file.
* Calculate Suppression Hash: the suppression file is now chosen in the dialog rather than prompting the user for it.
* Tracking: Recipient Table: the View Time column now shows a digit after the decimal point for times under 10 seconds.
* The "Delete Log" tool now has an option to move the log into the Recycle Bin.  The "Copy File" tool now supports wildcards.
* Change Recipient Address: the log is now unicode.
* HTML Editor: the Font Face/Size/Format tools will now operate properly when there is a selection across multiple HTML elements.
* During a mailing, if the database connection is lost, there was not always an error message to that effect.
* Analyze Sent Dates: this now obeys the G-Merge Default Date/Time Format.
* HTML Editor: improved the way the "Font Size" drop-down list detects the current font size.
* Locate Mail Server: the "Copy Report" button no longer closes the window.
* When Direct Delivery is enabled, the overview on the SMTP branch will now remind the user that these settings are not used.
* View Archive: it is now possible to select multiple emails quickly by clicking and dragging.
* HTML Editor: Insert Hyperlink: if the clipboard contains a URL, it will be automatically pasted into the URL field.
* Behavior change: if the Incoming Script uses the abort_operation directive, the current email will now be deleted if appropriate.  You can call incoming_delete(FALSE) to prevent this.
* HTML Editor: Neutralize Characters: the number of encoded characters is now reported.
* The Single Send tool will now ignore the Wait Until option.
* Added a context menu button to the bottom right of the main settings tree.
* Removed the "Secure Authentication" option.  This can now be set on a per-account basis, in the new "Authentication" column of the Incoming Sources table.
* The email_send() function will now produce an error if the 'headers' parameter is invalid syntax.
* Import CSV Data To Database: this now produces an error if you try to import into the Primary Key rather than silently ignoring it, and other minor improvements.
* Simple Send: when the HTML template is left on the default, it can now be updated when GM is upgraded.
* HTML Editor: the Font Increase/Decrease Size icons are now visible on the toolbar by default.
* The "Backup/Recover Database" tool now appears as an icon next to the Internal Database Name field.
* The First-Time Greeting will now offer to upgrade if a newer version exists.
* Customize Toolbar: it is now possible to force a row-break.
* The toolbar will no longer lose the user's customization when a new version is installed and new icons have been introduced.
* The "Connection Timeout" and "Retry Direct Delivery Failures Indirectly" settings are now hidden by the Hide Advanced Settings option.
* Recycle Connection now defaults to unchecked since it is not recommended for Office 365 and accomplishes nothing when throttling.
* Check Blacklisting: removed the spam.abuse.ch, short.rbl.jp, and virus.rbl.jp blacklists which are no longer active.
* Fixed: small memory leak in the SSL module.
* Fixed: if a G-Merge error occurs in the Text Body, and there are unicode surrogate pairs before the error, the caret was not being positioned at the correct location of the error.
* Fixed: utf8_from_unicode() and unicode_to_utf8() were not supporting unicode surrogate pairs.
* Fixed: Test Incoming/Outgoing Server: if the window was too wide, the layout of the controls could be incorrect.
* Fixed: Tracking: the "Export Overview To CSV" tool was not always producing a valid CSV file.
* Fixed: images might not appear on the HTML Preview tab if the HTML contains a <link> to a font.
* Fixed: HTML Editor: making a choice from the Font Size drop-down list was not undoable.
* Fixed: the Tracking Report did not initially have focus, and had to be clicked on before some hotkeys would react.
* Fixed: DKIM: Generate: the private and public key's "Copy" buttons were disabled.
* Fixed: Wait Until: an invalid date was not being handled properly.
* Fixed: certain characters in the database user/password could cause an inability to connect to the database (since 45.0).
* Fixed: unicode_to_utf8(), unicode_to_header(), and unicode_to_html() did not work correctly in the Success/Failure Script when using Simple-Merge.
* Fixed: unable to track a recipient with the "\'" character sequence in the Recipient Name or Company Name.
* Fixed: the Pre/Post-Send Batch was failing to properly set a predefined variable if its value contained an ampersand.
* Fixed: Excel error -1047 now has a work-around and should not occur.
* Fixed: possible fatal error if the database connection drops at an inopportune moment.
* Fixed: Tracking: the "Total Links Clicked" statistic was under-reported if several clicks came in rapid succession.  This also affected the total for an individual link.
* Fixed: Tracking: if the mailing had no failures, the number of successes and the mailing duration was not getting recorded.
* Fixed: tracking could corrupt hyperlinks that contain percent encoding.
* Fixed: Tracking FTP Upload: the World Map was not on the report.
* Fixed: Tracking FTP Upload: the user's uploaded report settings were not affecting the report.
* Fixed: ODBC-SQL escapes were disabled since 54.0.  This broke stored procedures and could cause date literals to not process correctly.


Version 57.1 (August 6th, 2019)
* Email Viewer: the Raw HTML tab now has a Validate HTML tool.
* Simple Send: when pasting a JPG file that has an EXIF rotation, the image will be converted to an unrotated PNG to ensure that it appears right side up in all email clients.
* Simple Send: added support for <img> tags that specify a filename in UTF-8.
* Attachment Viewer: when viewing a single RTF file, it will now take up all the height that the window can give it.
* Check Blacklisting: removed the bl.emailbasura.org blacklist which is no longer active.
* Fixed: Templates: Buttons: in the HTML Editor, it was not possible to edit the text in a button.
* Fixed: HTML Editor: Insert Button: after inserting the button, it would not respond to clicking or selecting with the mouse.  Only with the arrow keys could you get in to edit the text.
* Fixed: upon completing any wizard where an internal database is chosen, the internal database wizard was inappropriately starting.
* Fixed: the "Add Record" tool was not saving binary columns correctly.
* Fixed: sometimes the window could not be minimized, or would become inappropriately unminimized.


Version 57.0 (July 30th, 2019)
* Added a tool that compresses the HTML body without altering its appearance.  This typically reduces the size of the HTML code by 15-30%, which speeds up the mailing and reduces bandwidth.
* Added the ability to use a Suppression List in a database, which is important for very large lists.
* Added the "Backup/Recover Internal Database" tool to the Database menu.
* Tracking Report: the number of successes and failures for the entire campaign are now reported.  This includes untracked emails.
* Tracking: the email addresses that are transmitted to the Gammadyne email tracking server are now encrypted.  This prevents your mailing list from being exposed to an eavesdropper.
* Lookup Recipients: this can now perform multiple lookups at one time.
* Added the "Connection Timeout" setting to the Database/Setup branch.
* Added a tool to import email addresses into a Suppression List.  There is now an "Import" button at the bottom of the table.
* Templates: added the ability to put a LinkedIn link on the caption.
* S/MIME: when taking the signing certificate from the Windows Certificate Store, this will now look for the certificate with the latest expiration date.
* The "Bar Drawer" control now allows the bar to be horizontally scrolled if the tab labels are wider than the control.
* Tracking Report Settings: added an option to limit the number of countries on the report.
* Simple Send: Insert Image: if the image file is a rotated JPG with an EXIF Orientation tag, the image will now be converted to an unrotated form.  Because some email clients do not support EXIF tags, this ensures that the recipient will see the image right side up.
* Simple Send: Paste Attachment: the "JPG Quality" window now displays the JPG size and updates it whenever the quality is changed.
* Added support for images with unicode filenames when Image Locality is "Both".
* S/MIME: the "Test" tool this will now report if the certificate is expired or not yet valid.
* Send Summary Graph: added the "Curves" appearance type, which is now the default.
* When editing the External HTML Body, if the path to the .HTM file contains unicode, the editor can now display images that are in the same folder as the .HTM file.
* Email Viewer: added the ability to drag and drop attachments.
* Tracking Report: the Mailing Duration stat is now for the entire campaign, not just for the emails that were tracked.  Without this, the Emails Per Hour stat is inaccurate when Spread Tracking is enabled.
* Import CSV Data To Database: this can now detect the separator character (commas, semi-colons, tabs, or vertical bars).  Previously, only commas were supported.
* S/MIME: added the "Manage" button, which launches the Windows Certificates Manager.
* Internal Database Wizard: if an existing database is chosen, the user is now prompted for the Table Name, Recipient Column, Primary Key, and Removal Method.
* Operation History: this now reports the number of recipients who were rejected because they were removed.
* HTML Editor: Verify Links: it is now possible to abort an individual thread.  Improved performance.
* Forward To All Recipients: this now removes the CC:, Return-Path:, and Received: headers.
* Validate HTML: this now detects if there is exactly 1 <html>, <head>, and <body> element.  Also, the total number of errors and warnings is displayed.
* Mobile Preview: the zoom of the preview is now smaller, as it would be on a mobile phone.  Also, there is now an Exit button.
* Templates: Content: added an option to have a row of three buttons.
* Check Blacklisting: this now logs blacklists that do not respond properly or at all.  Also, if the user never changes the list of blacklists, the list will be automatically updated to a new default in future releases.
* Insert Column: when using Simple-Merge, if the chosen column has the {d} suffix indicating that it is a date, the user is now prompted to choose a date format.
* Send Prepared Emails: if S/MIME signing is enabled, and the preprepared email is already signed, the old signature will be stripped before adding the new signature.
* Tracking: Record Name/Company: unicode characters are now supported.
* Auto-Start Project: the "User Name" field now has a drop-down list of all user account names on the system.
* Tracking Report: the "Recipients Table" window will now remember its position, column widths, and preferences.
* The Regex Tester tool will now remember its window position, preferences, the Regex, the Subject, and the Case Sensitive option.
* Spell Check: pressing the Enter key when the Misspelled Word field has focus is now equivalent to clicking the Change button.
* Tracking Password: added a "Forgot" button that launches the Retrieve Password tool.
* The Send Summary now includes the total number of Delayed Retries that were successful.  If a Send Operation is aborted, the Send Summary now reports the number of Delayed Retries that are still in queue.
* Direct Delivery + Delayed Retry + Preview: the log summary was before the Delayed Retry phase.  Now there is a second summary after Delayed Retries.
* Tracking Report: Recipients Table: added the Table Menu, Export To CSV, and Export To HTML tools to the toolbar.
* Simple Send: the Text Body now allows the Tab key to insert tabs.
* The HTML Body's Spell Checker will now skip over the <style> section.
* Attachments branch: whenever a file is dropped, pasted, or browsed for, if the Attached Files Folder is empty, it will be set to the path of the file.
* Tracking Comparison: this now reports the number of bounces if the Specify Bounce Count tool was used for either campaign.
* Simple Send: numerous improvements to the default HTML template.
* Wait Until: the wait is now performed after the Tracking confirmation prompt, not before.
* Tracking Report: the Refresh tool now has a hotkey, F5.
* Check Blacklisting: there is now a progress meter for the overall operation, not just for each thread.
* Tracking Comparison: the list of languages is now sorted by usage rather than by name.
* The "Attached Files Folder" now supports unicode characters.
* Tracking: Specify Bounce Count: an error is now reported if you enter a number greater than the number of emails tracked.
* The add_recipients() G-Merge function can now add to a Suppression List.
* The "Auto-Start Project" and "Rename/Move Project" tools can now appear on the toolbar, although they are hidden by default.
* Post-Incoming Script: added the -CensoredEmails- and -CensoredWords- predefined variables.
* The email_send() G-Merge function will now produce an error if an attachment filename is bad syntax.
* Send Summary Graph: the inner box between the data and the labels is now optional, and is hidden by default.
* Send Summary Graph: the mouse hover balloon has changed from a simple rectangle to a rounded rectangle with a triangular tip.
* Tracking Graphs: the graph appearance now has a dark border along the top, and is a lighter color.
* HTML Editor: Insert Pie Chart: this now embeds the pixel data directly in the <img> tag.  Previously, the <img> tag was referring to a temporary image file, however that file could get deleted before the mailing was sent.
* When running a scheduled task, the prompt(), mw_ok(), mw_ok_cancel(), mw_ok_long(), and mw_retry_cancel() functions are now ignored since a scheduled task is supposed to run in the background with no user interface.
* HTML Editor: the Image Properties window will now remember past filepaths in a drop-down list, the last browse path, and its window position.
* Verify All Addresses: the editbox Undo tool can now be used to discard the addresses that were added to the Removal List.
* Analyze Database: the report now uses unicode.
* The uninstaller will now remove all Auto-Start projects.
* The "/sx" command line switch will now close the Task Editor, if open.  Previously, the Scheduler would not close until the Task Editor was closed manually.  This benefits the installer/uninstaller.
* Internal Database Wizard: an error is now reported if the user tries to create a new database but it already exists.
* Schedule One-Time: the Project Filepath field now has a drop-down list of recently opened projects.
* Welcome: Recent Projects: added a context menu button.
* Suppression List table: files can now be dropped on the table.  Added a "Paste Files" tool.  The "Add" button now launches the Browse tool rather than creating an empty row.  
* Autorespond: Attach Original Attachments: this will now preserve the Content-ID header.
* Progress Window: the entire area that contains the progress meters will now respond to the mouse wheel.
* It is now possible to enter gm.exe into the "Run" system dialog (Win+R) without a path.
* Export Tracking Data: the summary now reports the filename and path of the export file, and has an "Explore" button.
* View Result Set: for a certain type of error, this now advises the user to use the MySQL Unicode ODBC driver instead of the ANSI driver.
* Welcome: Recent Projects: added a "Copy Filepath" tool.
* The Suppressions feature now has its own branch, under the Filtering branch.  The Exclusions branch has been moved under the Filtering branch as well.
* If "Use System Address Book" is unchecked, the controls below it are now hidden.
* Unicode surrogate pairs encoded in UTF-8 are now supported in the Email Viewer.
* The "Single Send" tool now ignores the "Repeat Send" setting.
* The "Test Send" tool now ignores the "Email Send Log To" setting.
* The "Sound Alarm On Error" and "Sign With DomainKeys" options are now hidden when Hide Advanced Settings is checked.
* Check Blacklisting: removed the bl.spamcannibal.org blacklist which is no longer active.
* The uninstaller's data files are now kept in a subfolder rather than the main folder.
* The "Send Preprepared Emails" tool has been renamed "Send Prepared Emails".
* Fixed: the Clipboard Inspector could display all zeros in the hex data for unsupported data types.
* Fixed: copy/paste could fail if another window has the clipboard open.  Now it will retry many times over a brief period.
* Fixed: when printing the help file, the chapter on G-Merge functions was truncated after the date_format() function.
* Fixed: the "Send Delayed Retries" tool now ignores the "Wait Until" setting.
* Fixed: Tracking Report: in the Links section, a URL was sometimes appearing inside quotes.
* Fixed: Single Send: if "Send To Last Recipient Only" is checked, Preview Emails would be enabled even if unchecked.
* Fixed: Test SMTP Servers: the negotiated SSL cipher was not logged when using port 465 and an error occurs.
* Fixed: Send Prepared Emails: when signing with DomainKeys, this now takes care to not include certain problematic headers that can change and thereby invalidate the signature.
* Fixed: View Result Set: Delete Column: this will no longer fail on SQL Server if the column has a "default value constraint".
* Fixed: Database Wizard: when selecting an Internal Database, the database name field was not being validated, the Browse button did not go to the right folder, and the Explore button was non-functional if no path was specified.
* Fixed: Insert Column/Variable/Function: this was selecting the inserted tag when the global "Select After Paste" option is checked.
* Fixed: View Result Set: Create Column: it was possible the default value was not being stored in each row of the new column.
* Fixed: Direct Delivery: the Failure Summary was not counting failures of a CC or BCC.
* Fixed: Tracking Report: the Forward Details was not showing non-ASCII characters properly.
* Fixed: a scheduled "Send Prepared Emails" operation was not always reporting a correct progress or time remaining.
* Fixed: unminimizing on a secondary monitor was moving the window to the primary monitor.
* Fixed: Automatically Parse Images, Make Styles Inline: HTML attributes containing a quote were surrounded with quotes rather than tick marks.
* Fixed: View Archive: View Attachment: text attachments were not word wrapping.
* Fixed: error when saving project to Google Drive.
* Fixed: when editing the External HTML Body, it was possible that an unwanted <base> tag could be inserted into the <head> section.  Special thanks to Julien Comellas.
* Fixed: Send Log Filepath: non-ASCII characters were not being correctly imported from old projects (56.0 only).
* Fixed: S/MIME signatures were possibly failing verification on Thunderbird.


Version 56.0 (March 18th, 2019)
* Validate HTML: this now uses an internal validator instead of the W3C online service.  Our validator is more useful in the real world as it will not complain about features that the W3C considers deprecated but will still be supported for the foreseeable future.  Also, it allows you to jump directly to where a warning or error occurred.
* Added the "Auto-Start Project" tool.  This allows you to configure the system to launch a Gammadyne Mailer operation automatically when the computer boots up.
* Added the ability to specify the number of bounces that occurred, and have it appear on a tracking report.  Generate the report and choose "Specify Bounce Count" on the Tools menu.
* Added the "Add to Suppressions" Processing Mode.
* Tracking Report: Recipients Table: added the ability to filter the rows of the table (hiding rows that do not contain some specified text).
* The WYSIWYG HTML Editor's toolbar now has two rows, and many more icons.  There is a "Reset toolbar: simplified" tool on the right click menu that will restore the toolbar to its old configuration.
* The "Automatically Parse Images" feature, as well as HTML preview, now support many additional circumstances with regard to Image Locality, unicode characters, percent encoding, subfolders, and the <BASE> tag.
* Incoming: added support for decoding S/MIME encryption and attached signatures.
* Added support for TLS 1.3
* Add Record: the "Value" column is now pre-populated with the default values for each column.
* It is now possible to schedule the "Send Preprepared Emails" tool.
* S/MIME now offers an option to take the signing certificate from the Windows Certificate Store.  Previously, the certificate had to be located in a file.
* Constructed Attachments: the attachment contents now supports unicode.
* Tracking Report: the City and State now support unicode.
* Check Blacklisting: this now performs 16 checks simultaneously, which greatly speeds up the operation.
* Auto Image Dimensions will now work if Image Locality is "External" and the image URL is relative to the <BASE>.
* Auto Image Dimensions will now work if Image Locality is "Both" and the image URL is relative to the Content-Location.
* Make Styles Inline: this now handles auto-closing elements properly.
* HTML Editor: added a "Font Size" drop-down selector.
* View Result Set: added a "Rename Column" tool, although some databases don't support it.
* Insert Column: if the chosen column is a date column, the user is now prompted to choose a date format.
* HTML Editor: Image Properties: added the ability to change the border color and style.
* Analyze Database: this now reports the default value for each column.
* Tracking Report: Report Settings: added an option to limit the number of Platforms displayed on the report.
* HTML Editor: on the Raw tab, there is now an option to hide the toolbar.
* Tracking Report: added a "Refresh" tool.
* When right clicking on an .EML or .MSG file in File Explorer, Gammadyne Mailer is now listed on the "Open With" sub-menu.
* View Archive: added an option to hide the headers.
* Added the "CSV File" wizard to the Wizards menu.
* Edit External HTML Body: added a "Spell Check Folder" tool, which runs a Spell Check on every HTML file in a folder.
* Create Table: on the window that reports the table was created successfully, there is now a button for creating more columns.
* Send Preprepared + Direct Delivery: added support for multiple addresses in the To: header.
* Send Preprepared: there is now an "Overall" progress meter for the whole operation.
* Process G-Merge Inside Attachments: this now supports UTF-8 if there is a UTF-8 Byte Order Mark present.
* Single Send: this now ignores all settings on the Filtering branch.
* HTML Editor: Insert Button: there is now a field for setting the button's horizontal padding.
* View Archive: added a tool that pastes emails into the archive.
* Insert Column: on the "No Database or CSV file specified" error window, there are now "Setup Database" and "Setup CSV" buttons.
* View Result Set: Filter: when an invalid regular expression is specified, there is now a detailed error message.
* Troubleshoot HTML: added detection of illegal character encodings in an image URL.
* View Result Set: Filter: Advanced mode: added support for the "|" operator.
* Tracking Comparison: the list of Platforms is now sorted by usage rather than being alphabetized by name.
* HTML Editor: Import CSV As Table: if the caret is already inside a table, the CSV data is imported into the existing table.
* Pseudo-Projects: added the "TestSMTP" label, which controls if the SMTP Server is tested before the Send Operation begins.
* View Result Set: Create Column: the "Default Value" field now supports unicode.
* HTML Editor: Verify Links: added support for URL's that contain unicode.
* Autorespond: Attach Original Attachments: this will now preserve the Content-Type header's media type, which helps ensure that the attachment is opened with the correct application.
* Analyze Database: this now reports if each data type can hold a null value.
* Behavior change: if the "Character Set" setting on the Text Body branch is unchecked, the character set will now default to the operating system setting.  Previously, no character set would be specified at all, which by the MIME standard defaults to US-ASCII, which does not define codes 128-255.  This change ensures that the recipient sees what you see.
* Constructed Attachments: added the ability to rearrange the order of the attachments.
* Added the "/sx" command line switch, which instructs the Scheduler to exit gracefully as soon as there are no running tasks.
* Added the random_order(), str_find_any(), str_remove_find() G-Merge functions.
* Locate Mail Server: Copy Report: this now includes SPF and PTR records.
* Upon checking the "Use Internal Database" box for the first time, the user is now asked if they want to create a new database, or use an existing one.  When creating a new one, the "Create Table" tool will launch immediately.
* HTML Editor: Insert Pie Chart: added a tool that displays a preview of the pie chart.
* Welcome: if the Recent Projects List has two projects with the same filename, now both of them will be listed by their full filepath, not just the second one.
* Welcome: Delete Project: the file is now moved to the Recycle Bin instead of being permanently deleted.
* Tracking Campaigns window: cells in the Expires column are now highlighted if the campaign expires within a week.
* Scheduler: Edit Task: the "Project Filepath" field now has a drop-down list of recently opened projects.
* HTML Editor: when opening the toolbar's Font Face drop-down list, the current font will now be pre-selected.
* Single Send: View MIME: added "Copy", "Save", and "Exit" buttons to the bottom.
* HTML Editor: Insert Hyperlink: this now tolerates leading and trailing whitespace, which will be removed.
* Post-Incoming Script: added the -AttachmentStripped- and -AttachmentsStripped- predefined variables.
* Constructed Attachments: if an attachment's filename is illegal syntax, an error is now reported in a popup window.
* Added a help file chapter on the "File" menu.
* Numerous improvements to the "Suppression Lists" table and its tools.  Rows can now be rearranged.
* HTML Editor: Insert Button: added the "Small-Caps" option.
* Database Wizard: Internal Database: there is now a drop-down list populated with recently used databases.
* Clipboard Inspector: numerous improvements.
* The Internal Database's Browse tool will no longer prompt you if you choose an existing file.  Also, it will strip the path if the file is in the default folder, and will strip the extension if it is the default.
* Check Blacklisting: this now avoids the operating system's DNS cache in order to obtain up-to-date information.
* Simple Send: added the "Encoding" column to the Attachments tab.
* Simple Send: Import From File: this will now preserve the character set of each attachment.
* HTML Editor: Insert Pie Chart: added the ability to set the width and height.
* Write Email To Files: added an "Explore Folder" button.
* Connection String: Browse: added a "Help" button to the "Choose ODBC Driver" window.
* Tracking Report: added the "View" and "Tools" menus.  Some tools from the File menu have moved there, and added other tools that only appeared on the toolbar.
* Troubleshoot HTML: this no longer logs the text that came before the erroneous HTML tag.
* Performance Statistics now includes the average DNS query time.
* The Send Summary now includes the total number of Immediate Retries that were successful.
* Import CSV To Database: there is now an error message if the same database column is specified more than once.
* Progress Window: the Overall meter will now be hidden if it is known that there is only one recipient in the mailing list.
* The Send Log Filepath field now supports unicode.
* The interface now supports mouse tilt wheel.
* The "Button Drawer" control now has an animation effect when switching tabs.
* Tracking Report: Recipients Table: added support for unicode in the City and State columns.
* Tracking User: added the "Create" button.
* Test Send: this now ignores the "Email Summary To" feature.
* The /ee switch's editor now has a "Load Default Value" tool for the "Raw" tab.
* The "Count Recipients" box is now checked by default.
* The "Detect Broad Mail Systems" option is now hidden if Hide Advanced Settings is checked.
* Removed the "Login to POP3 server" authentication method for SMTP.  This feature has been obsolete for 10+ years.
* Fixed: S/MIME: the "Obtain" button was going to a web page that no longer exists.
* Fixed: Help: Print: some hyperlinks were not followed by the page number.
* Fixed: when using Image Locality = "Both" and an image has no remote counterpart so it must be embedded, the image might not appear in some email clients including Thunderbird.
* Fixed: if a database connection times out, it was then timing out a second time except without running the hourglass animation and freezing the main thread (since 54.0).
* Fixed: HTML: an image with the same number of characters in its filename as an earlier image could become a copy of the earlier image if there are unicode characters in the filename.
* Fixed: View Archive: S/MIME verification was not verifying the entire certificate chain.
* Fixed: Test Spam Score: this would fail with a cryptic error if "Build Text Body From HTML" is checked but there is no HTML Body.  Special thanks to Stewart Berry.
* Fixed: HTML Editor: Undo was not working correctly for Delete Table Row and Insert Table Column.
* Fixed: Locate Mail server: if a PTR record could not resolve to an IP address, the error message was incorrect.
* Fixed: Suppression Lists: Calculate: Add To File: this was not obeying the "Ignore" column.
* Fixed: the Scheduler's Abort button was not working if the task was in the Delayed Retry phase.
* Fixed: Simple Send: after clicking "Send Another", any attachments present for both sends would be duplicated.
* Fixed: rare crash when right clicking on an editbox.
* Fixed: unnecessarily high CPU usage when Auto Image Dimensions or Shrink Images is enabled.
* Fixed: inability to send email when using DIGEST-MD5 authentication and the server advertises support for qop=auth-int (since 55.0).  Special thanks to Dave Gorman and AuthSMTP.com


Version 55.0 (December 3rd, 2018)
* There is now an internally managed database.  This allows you to keep the mailing list in a database without having to install and maintain a third-party database.
* Verify All Addresses: added a new "Shallow" method that only verifies that the recipient's mail server exists.  This makes the tool usable, as the old method (now referred to as "Deep" verification), was basically worthless.
* Added the "Boundless" template.
* Tracking Report window: added the "Recipient Table" tool, which displays all of the recipient data in a table.  This makes it easier to examine the recipient data, and allows you to sort them on any column.
* Delayed Retries and Preview Messages are now compatible, with one difference:  once the Send Operation is complete, the Preview Window will not reappear showing failed emails.
* It is now possible to prevent scheduled tasks from running simultaneously.  Check "One task at a time" on the Options menu.
* Direct Delivery and SMTP Encryption are now compatible.
* Tracking: links with unicode characters in the URL can now be tracked.
* Added the /var command line switch.  This allows you to declare a variable.  Any field that supports G-Merge can refer to this variable.
* HTML Editor: added a toolbar to the Raw tab.
* Spread Tracking: you may now enter the value "9999999" to spread the tracking out over the entire length of the mailing list.
* HTML Editor: added a tool to insert a Pie Chart.
* Incoming Summary: added a button that will display the list of processed email addresses.
* Added the "Detect Broad Mail Systems" option to the Throttles branch.  Uncheck this box to revert the Universal Domain Throttle to the pre-53.0 behavior.
* Toolbars can now have more than one row of tools.
* Recipient/Exclusion/Removal List: Import/Paste: any address that is already present will not be imported.
* S/MIME: added a button to test the settings, and a button to obtain a free email signing certificate.
* If S/MIME encryption fails because the recipient's certificate is not installed, now the message will still be signed regardless.
* View Archive: the Search tool now offers support for wildcards and regular expressions.
* Tracking Report: added the ability to limit the number of browsers listed on the report.
* Wizards: added the ability to specify an internal database.
* Wizards: added a "Create Table" button to the database table window.
* Create Table: the recipient column is now indexed for performance.
* The Send Preprepared tool now obeys the project's S/MIME settings.
* Analyze Database: this now lists all of the table's indexes.
* Regex Tester: added a "Case Sensitive" option.
* Regex Tester: if the regular expression is invalid syntax, a description of the error is now presented.
* Multiline editboxes: the block selection (Alt+Drag) is now compatible with most editbox tools.
* Direct Delivery Possible: the result of the PTR record's resolution is now displayed.  Also, a success/fail icon now appears next to each field.
* Locate Mail Server: there is now an icon next to each PTR record that indicates if it is valid.
* View Result Set: Add Row: the columns of the new row are now populated with their default value.
* View Result Set: Create Column: added the ability to create a Primary Key.
* Added the /ee command line switch, which opens an email file in an editor.
* Operation History: the number of auto-response successes and failures are now reported.
* Most windows now calculate their width as a factor of the interface font size.  Previously they were a factor of the screen size.  This ensures that windows are the optimal size, even when the font is very small or very large relative to the screen.
* Tracking Comparison: the list of Browsers is now sorted by usage rather than being alphabetized by name.
* Added the /sp command line switch.  This runs the Send Preprepared Emails tool.
* On the Tracking Login window, saving the password for next time is now optional.
* The Scheduler can now gracefully handle a task that has crashed.
* Tracking Campaigns Window: the View menu now contains the Hide Columns, Alternating Rows, and Row Dividers options for the table.
* Added the incoming_get_body_unicode() and incoming_get_text_unicode() G-Merge functions.
* Change Recipient Address + Simple Merge: this now supports compound email addresses in the Recipient Column.
* HTML Editor: Insert Hyperlink: a bare domain beginning with "www." is now allowed.
* Send Script: added the -RecipientRemoved- predefined variable.
* It is now possible to disable the 54.0 feature where databases are opened in an abortable background thread by modifying the Locations.INI file.  Also, the window with the Abort button now displays an animated hourglass graphic.
* Send Summary: Pie Chart: the labels are now two lines, which allows the pie chart to be larger.
* The Send Progress window now shows the progress of the "Processing Exclusions" phase, and will respond to the Abort button.
* While running through a large mailing list of nothing but rejected recipients, the Send Progress window will now continue to update.
* Suppression Lists are now processed after the Send Progress window appears so that the user knows what is going on.
* Scanning a plain text mailing list is now 5.5 times faster.  This is especially noticeable when using the Preview Recipients tool or the Count Recipients option.
* Tracking Report: the recipient's compound email address now supports unicode.
* Scheduler: added a button to end the grace period.
* Rename/Move Project: there are now separate fields for renaming, moving, and both.
* Tracking: we have switched to a newer, more extensive geographic-IP database, but unfortunately it does not have area code information.
* It is now possible to abort an Auto-Response.
* View Attachments: JPG images that specify an EXIF Orientation tag will now obey it, and appear with the proper rotation.
* Single Send: Resize Image Attachment: for JPG's it is now possible to specify the quality.
* Tracking Report: Export Section To CSV: the number of records exported is now reported, and there is a button to open the export file.
* Improved how the TIME database type is handled.
* Single Send: if a delivery error occurs, it is now reported in a popup window.  Previously it was necessary to scan the Send Log to determine the cause.
* Tracking: Report Settings: if no changes were made, the report will not unnecessarily refresh.
* Added the %HTMLBodyPath% environment variable for the DOS Batches.
* Create Database Table: a Primary Key is no longer mandatory.
* Members Only: the Incoming Summary now reports the total number of emails that could not be verified for membership due to a missing or invalid From: header.
* The log() function now allows multiple parameters, which are logged in succession.  Also, the parameters are not required to be strings.
* All of the dbe_xxx() functions now allow a blank connection string parameter, in which case it will default to the one specified in the project.
* HTML Editor: it is now possible to put a "Font Face" combobox on the toolbar, although it is hidden by default.
* View Result Set: Save & Exit now has a hotkey, Ctrl+Shift+S.
* Troubleshoot HTML: now warns that only GIF, JPG, PNG, and BMP have universal support.
* Validate HTML: the validator is now informed of the charset detected from the HTML meta tag, previously it always assumed UTF-8.
* Rename Project: the "Project To Rename" field now has a drop down list containing all of the recently opened projects.
* Regex Tester: added a Help button.
* Welcome: Open Project: if the project doesn't exist, there is now a button to remove it from the list.
* Import CSV To Database: there is now a button to clear a column mapping.  Also, if the import file doesn't exist, an error is now reported rather than leaving the column mapping blank.
* Welcome: when renaming a recent project that does not exist, an error is now reported immediately rather than letting the dialog appear.
* latch_html_unicode_until(): the "until" parameter is now optional, and the search for the "until" parameter is now case insensitive.
* Welcome: there is now an icon next to the title.
* Incoming Log: the "Final list of processed recipients" summary no longer omits recipients where the Incoming Script issued a [[disregard]] directive.  Also, this summary now only appears once for the entire set of incoming mail accounts, rather than once for each.
* Added a help file chapter on how to generate an HTML table from a database mailing list that contains multiple records per recipient.
* Added a help file chapter on HTML Encoding.
* S/MIME encryption: improved how the log reports the result of the encryption.
* Single Send will now ignore the following settings: Append Rejections, Append Successes, Append Failures, Add Successfully Sent Recipients To Exclusions List, and Append Failures To Removals List.
* Single Send no longer wastes time processing Exclusions and Suppressions.  Auto-Respond no longer wastes time processing Suppressions.
* Lookup Recipients: the drop-down entry for the Recipient Column now displays the column name.
* Choose ODBC Driver: this now reminds you that the 32-bit ODBC driver is required.  Also the help file and website are now more clear on this.
* Troubleshoot HTML: images are no longer reported as missing just for having unicode in their URL.
* Import CSV Data To Database: the filepath now supports unicode characters.
* Bar Drawer: when changing folders, there is now an animation effect.
* Calculator: added the "Convert Units" tool.
* Added a "Copy File" tool to all File Specification controls.
* The "Delete Log" tool now asks for confirmation.
* Create Table: this now warns in advance if the database is read-only.
* When opening the database, if an error occurs, the ODBC error message now supports unicode.
* The term "Messages" has been deprecated in favor of "Emails".
* Removed the "Canonicalize Extended ASCII" setting.
* Fixed: HTML canonicalization will now properly encode characters 128-159.  This went unnoticed for so long because most HTML agents are tolerant of the old behavior, though it was technically incorrect.
* Fixed: tracked links that go directly to a .gif would not function as a hyperlink, nor track.  .gif's enclosed in a hyperlink were not affected by this bug.
* Fixed: Verify All Addresses: an out of memory error could occur for a large mailing list.  The log is now kept in a file rather than memory.
* Fixed: Firebird: database assignments to BOOLEAN columns were not working.
* Fixed: Import CSV To Database: this will no longer try to import a blank CSV cell as NULL to a boolean database column.
* Fixed: rarely, the Scheduler would glitch out if two tasks were running simultaneously.
* Fixed: DIGEST-MD5 authentication did not support multiple QOP's.
* Fixed: Progress Window: occasionally a thread's Abort button was inappropriately disabled.
* Fixed: when running a pseudo-project with the /q switch, not all error messages were being suppressed.
* Fixed: View Result Set: Add Row: if all columns were left empty, an error would occur under MySQL and SQL Server.
* Fixed: the Simple Send tool was refusing to send another email to the same recipient after clicking "Send Another".  Also, it was unnecessarily loading the Suppression Lists.
* Fixed: S/MIME: emails formatted in a certain way could be signed or verified incorrectly.
* Fixed: Make Styles Inline: this could cause an Out Of Memory crash for certain malformed emails.
* Fixed: after running a database tool, changing the database configuration, and running another database tool, the database connection was not being closed and reopened.  This could cause the second tool to operate on the wrong database.
* Fixed: Eliminate Duplicate Recipients: when restarting the Send Operation from the Preview Window, the recipients that appeared on the Preview Window were being excluded as duplicates.  Special thanks to Vijay Kumar.


Version 54.0 (July 23rd, 2018)
* Tracking: added the ability to spread the tracking limit across the mailing list.  Previously only the beginning of the mailing list could be tracked.
* S/MIME: added the ability to encrypt outgoing emails.
* View Result Set: Filter: added support for conditional expressions, such as "amount < 50".
* Added the "Rename/Move Project" tool to the File menu.  This not only renames/moves the file, it also synchronizes the change with the Scheduler, Operation History, Project Backups, and Recent Project History.
* The Welcome Wizard is no longer a separate window.  It now appears in the main window's interior when no project is open.
* Tracking Report: added the ability to override the report title.
* Simple-Merge: added support for big endian unicode files.
* Database assignments to a unicode column are now truncated automatically to prevent a fatal error that occurs when the column cannot hold the entire string.
* The Domain Throttles table can now be used to override the Universal Domain Throttle speed for the three big mail systems by specifying a special keyword in the Domain column:  "gmail", "microsoft", and "yahoo".
* Tracking: added the ability to export the tabular data (links, domains, browsers, platforms, countries, languages) to a CSV file.
* Tracking Report: the custom copyright field now supports HTML code.
* Single Send: the "Value" column is now populated with the default column values.
* Forwarding: S/MIME signatures are now removed before forwarding.  Better to have no signature at all than one that is invalid.
* Added a "Context" button to the bottom right of various tables and editboxes.
* When a database is being opened, if the connection cannot be made, rather than freezing Gammadyne Mailer, an abortable popup window will appear.  This is especially important for SQL Server which may never timeout.
* Recipient/Exclusion/Removal List: added a tool to deduplicate the email addresses.
* Test Email: added a tool to compose the Test Email in an email client like interface.
* Tracking: added detection of the Edge browser.
* The Universal Domain Throttle is now hard-coded to detect the entire GMX mail system.
* The "Add Record" tool now supports Simple-Merge mailing lists.  Previously it only worked on a database.
* HTML Editor: added a "Paste CSV As Table" tool.
* Added a Speak tool to the HTML editor and HTML viewer controls.
* View Attachments: added the ability to display CSV files.
* Simple Send: Import From File: the HTML editor will now display embedded images correctly.
* View Result Set: Create Column: added the ability to specify a default value for the new column.
* Simple Send: Export To File: images that are pasted into the HTML body are now preserved inside the export file.
* HTML Editor: Import CSV As Table: added support for CSV files that have a unicode byte order mark.
* Analyze Database: the number of characters in each column is now reported.  Improved how the column types are reported.
* View Archive: when an email passes S/MIME, DKIM, or DomainKeys verification, there is now a visible "Lock" icon.  Hovering the mouse over the icon will display a summary of verification.
* Added the charw(), incoming_get_html(), and incoming_get_text() G-Merge functions.
* Welcome: Create New Project: added a button that opens the video tutorials page on our website.
* Scheduler: added a button that will extend the grace period.
* Direct Delivery Possible: this will now warn if the PTR record does not resolve back to the IP address.
* Added the "Regex Tester" tool to the Interface menu.
* Added the /ev command line switch, which will display an email file.
* Tracking Comparison: the Custom Copyright report setting is now obeyed.
* Recipient/Exclusion/Removal List: Import Addresses: when importing from a database, this now supports multiple email addresses in a single cell.
* The "Unable to determine external PTR record" error will no longer appear if "Test DNS Servers" is unchecked, or when using the "/q" command line switch.
* Tracking Report: when the "Show Forward Details" option is enabled, the report is now re-downloaded since otherwise the forward data will not appear.
* Operation History: the number of emails tracked is now reported.
* The first time a tracking report is generated on a new computer, the account's report settings that are saved to the server will be downloaded.
* HTML Editor: Customize Toolbar: this now allows most tools to appear directly on the toolbar rather than only in a drop-down menu.
* Tracking Comparison: the countries are now sorted by number of opens.
* Add Record: added support for unicode characters in the column data.
* View Archive: added support for drag and drop of emails onto the table.
* The tracking banner's width and/or height are now allowed to be 0 in which case it is automatic.
* Numerous skin improvements.
* Database: in numerous places, GM can now automatically reconnect a dropped ODBC connection.  Also, numerous error messages now support unicode.
* Locate Mail Server: the priority of each mail server is now reported.
* HTML Editor: Insert Hyperlink: this now allows a bare email address.  Previously the mailto: prefix was required, now it is inserted automatically.
* Incoming Sources Table: the "Import" tool now asks if you want to import from a project or CSV file.
* Simple Send: the "HTML" menu will now display relevant options when on the "Preview" tab.
* Added a help file chapter on the Operation History tool.  Added a "Help" button to this window.
* Import CSV Data To Database: added a "View Results" button to the summary window.
* Custom Headers: when this window is closed, any syntax errors in the headers is now reported.
* Tracking Report: improved the appearance of the "Simple" theme.  Also, the "Map" link will no longer appear when printed.
* View Result Set: Filter: added an "Auto-Complete" option.  This is unchecked by default to match the old behavior.
* View Archive: the size of the email is now displayed to the right of the Subject.
* Added the csv_append2() G-Merge function, a more advanced version of csv_append().  It examines the first line of the file, and honors the byte order mark, separator, and type of newline.  It will also produce an error if anything is wrong to protect against data loss.
* Basic Template: added the "Left Icon" Section type.  The "Add" button below the Sections listbox now inserts rather than appends.
* HTML Editor: the context menu will now display the "Image/Hyperlink/List/Table Properties" option even if it was not opened by a right click.
* Members Only: when using a database, the Recipient Column is now allowed to contain compound addresses.
* Added a "Schedule" button to the bottom of the Send branch.
* Members Only: this feature now allows both a Recipient File and Recipient List at the same time.
* Members Only: when there are multiple Recipient Files, they are no longer required to have the same byte order mark.
* Post-Incoming Script: added the "-RemoveAlready-" predefined variable, which holds the number of recipients who were not removed because they had already been removed previously.
* Added the %InstallPath% environment variable for the DOS Batches.
* HTML Editor: no longer using the operating system Image Properties dialog to avoid a bug with inline images.
* Raw HTML Editbox: added a hotkey for Paste Text (Ctrl+Alt+V) and Paste Unmodified (Ctrl+Shift+V).
* Simple Send: Add Recipient: this is now careful not to add a duplicate address.
* Recipient/Exclusion/Removal List: Import Addresses: when importing from a database, any email address that has the "!" prefix is now ignored.
* If an incoming email has no HTML body, Gammadyne Mailer will no longer look for an HTML attachment to use in its place.
* The Simple-Merge wizard now supports CSV files with a unicode byte order mark.
* Mistakes in the Domain Throttles table will now produce a popup error.
* The tracking login window, which only appears if the tracking information is not specified in the currently open project, will now remember the password.
* The Expiration Date feature now generates an Expires: header.  Previously it generated an Expiry-Date: header which is obsolete.
* Test Spam Score: a hyperlink to an anchor within the email will no longer be spam-penalized as an illegal hyperlink.
* Test Spam Score: a trailing period on a hyperlink will no longer cause a penalty.
* Test Spam Score: <wbr> tags in the HTML body no longer cause a hyperlink to be penalized as illegal or misdirected.
* Test Spam Score: all illegal hyperlinks in the Text Body are now reported, not just the first.
* Members Only: the Incoming Summary now reports the total number of senders who are not members of the mailing list.
* Remove Recipients: the log now supports unicode characters.
* Attachments: Copy Files: added a "Keep Folder Structure" option.  Previously, all the files were dumped in one folder without regard to subfolders.
* Tracking Report: the View In Browser tool now appears on the File menu, and now has a hotkey: F7.
* Tracking Report: added a "View Source" tool to the toolbar, although it is hidden by default.
* Digest-MD5 authentication: added support for multiple realms and a rare QOP option.
* Tracking Report: graphical images now use less memory with no loss in quality.  This makes the report smaller and faster.
* Added the -TotalTracked- predefined variable for the Post-Send Script.
* Extract Text From HTML: added a Print tool.
* View Result Set: the Delete Row tool now has a hotkey, Alt+Del.
* View Result Set: Filter Settings: added a "Help" button.
* Compose: Insert Button: improved the appearance of the shadow.  It is now thinner, more blurred, and slightly tinted.
* The "Convert Forwards To Text" option is now hidden when Hide Advanced Settings is checked.
* Help: added the "Rectangle" Selection Mode, which is useful for copying columns of text.
* View Archive: Copy Attachment/Open Attachment With: if the attachment has no extension, its Content-Type header is now used to provide a default.
* Improved speed of the Strip Attachments feature and G-Merge functions that manipulate the incoming email.
* The toolbar's size can now be adjusted by hovering the mouse over it, holding down the Ctrl key, and spinning the mouse wheel.
* Tracking Campaigns window: View menu: added 3 tools for auto-setting the column widths.
* Preview Test Email: this window will now remember its position and preferences.
* Added an animation effect when changing tree branches.
* Added a help file chapter on A/B testing.
* Import Addresses To Database: the "Import Compound Addresses" option is now remembered.
* Domain Throttles: the "Load Defaults" tool now recommends to use the Universal Domain Throttle instead.
* Data Source Name: the drop-down list no longer contains the names of drivers.  Support for prompting was removed in 53.0 so these won't work.
* The Customize Toolbar window now remembers preferences such as its position and the table column widths.
* Fixed: Preview Window: the raw HTML editbox had some useless buttons along the bottom.
* Fixed: the CC: and BCC: are now deduplicated to avoid a foolish error produced by Yahoo's mail server.
* Fixed: Members Only: a sender can now be rejected via the Exclusions branch as documented.
* Fixed: View Archive: when printing an email, the right and bottom of the document could get clipped.
* Fixed: unable to send to an email address containing a quoted name that has unicode characters and a trailing comma or semi-colon.
* Fixed: Import CSV To Database: was failing to report if a CSV file record has an incorrect number of columns.
* Fixed: if an error occurs in db_set_unicode(), the error message was blank.
* Fixed: the "Test HTML Images" feature was not correctly handling a redirect from http: to https:
* Fixed: View Result Set: added a workaround for a bug in the Firebird ODBC driver that would cause numerous bogus columns to appear.
* Fixed: Create Table: this can now create a correct Primary Key in a Firebird database.
* Fixed: the Auto-Respond feature was insisting that a mailing list be specified, but there is actually no need for one.
* Fixed: the Single Send tool was insisting that the mailing list not be empty, but this is irrelevant.
* Fixed: Email Viewer: the lock icon was not reporting the DKIM/DomainKeys status.
* Fixed: a crash is now avoided when reading unicode characters from a VARCHAR column in a Firebird database due to a bug in its ODBC driver.
* Fixed: the Locate Mail Server and Test Spam Score tools were not handling SPF records correctly.
* Fixed: unable to start a tracked campaign if any hyperlink in the HTML Body contains a newline in the URL.
* Fixed: database error when trying to use the Microsoft Text Driver with a CSV file.


Version 53.0 (February 12th, 2018)
* The Universal Domain Throttle has been redesigned.  It can now detect broad mail systems that have multiple domains and IP addresses.  The entire mail system will now share a single throttle.  This is especially important when sending to domains that have their email service provided by Office 365 or Gmail.  The improved method will result in better delivery success rates and less likelihood of blacklisting.  However, it will also slow the mailing down considerably.  This can be mitigated by increasing the throttle rate to the new recommended level of 1 email every 8 seconds.  Previously there was one throttle per domain name, with no ability to recognize that two different domains were actually using the same mail system.
* Tracking Report: the IP address, date, and location of each forward can now be reported.  However, this information is not displayed by default because it slows the report download.  It can be enabled on the Report Settings window.
* Added the ability to cryptographically sign outgoing emails with the S/MIME standard.  The recipient will be able to confirm that the email is authentic and unchanged.
* View Result Set: Filter: added support for Regular Expressions.
* Editbox: Search/Replace: added support for Regular Expressions.
* View Archive: added the Filter Emails tool which will hide all emails that do not contain a given piece of text.
* Simple Send: Zip Attachments: added the ability to encrypt and password protect the Zip file.
* Repeat Send/Repeat Incoming: improved tolerance and recovery regarding transient DNS errors.
* View Archive: added a toolbar.
* Verify Links: added support for HTTPS links.
* Tracking Report: the number of forwards now only counts unique IP addresses.  Previously, all opens from any IP address other than the original counted as a forward.
* Tracking: Report Settings: added a tool that allows you to reset all settings to the factory default, or load them from the tracking server.
* Tracking Report: added the ability to put a copyright notice or other text at the bottom of the report.
* Add Recipients: added "Paste", "Import", and "Find Illegal" buttons to the bottom of the email addresses field.
* Template Designer: added the ability to export the current template's HTML to a file.  This is useful if you want to edit the template in a third party editor.  Previously it was only possible to copy the template into the project's Internal HTML Body.
* Added support for images relative to the Embedded Files Folder that contain unicode characters in the filename.
* Images that contain unicode characters in the filename will now preview correctly.
* Added the /extract command line switch, which runs the Extract Addresses From Files tool but with no user interface.
* Behavior change: the ODBC driver is no longer allowed to prompt the user to provide information that is missing from an incomplete Connection String, or for a user name and password.  This information must be specified in the project.
* Locate Mail Server: errors are now reported in a log at the end.
* Basic Template: added variants of the "One Column, Left/Right Image" contents that utilize an image that takes up a third of the width rather than half.
* HTML Editor: the "Insert Hyperlink" tool will now revert to the "Hyperlink Properties" tool if a hyperlink is already present.
* View Result Set: dual column sorting is now optional.  Also, the "Tab Thru Cells", "Alternating Rows", and "Row Divider" settings are now global rather than being specific to a particular database result set.
* HTML Editor: Import CSV As Table: the user can now choose which columns should be imported.
* HTML Editor: Insert Hyperlink: this now allows hyperlinks to an email address by specifying the mailto: prefix.
* Repeat Send/Repeat Incoming: improved the way that a lost database connection is handled.
* HTML Editor: Insert Button: the drop shadow is now optional.
* Raw HTML Editor: the "Paste Text" tool will now create functioning hyperlinks anywhere it detects a URL.  Also, it will no longer encode inside G-Merge statements.
* View Attachments: added support for Rich Text (RTF) files.
* Operation History: this now reports the number of rejected recipients for all Send Operations.
* View Archive: added the ability to drag emails out of the table and into a folder in File Explorer.
* Tracking Report: added the "View In Browser" tool to the toolbar.
* Tracking Report: Save To HTML File: there is now a summary window with Open and Explore buttons.
* Tracking Report: the colors on the World Map are now logarithmically scaled as too often there was one red country and a bunch of dark green ones.
* Tracking Report: the tabular sections of the report now use the interest score as a tiebreaker for sorting.
* Tracking Comparison: the links are now sorted by number of clicks.
* Recipient/Exclusion/Removal List: when pasting files, the email addresses in the files are now extracted and deduplicated.  Previously, all contents of the files were pasted as is, with no tidying up.
* The Tracking Comparison now supports the custom banner setting.
* Added the incoming_get_body() and color_saturation_scale() G-Merge functions.
* Operation History: the tables now support dual column sorting, although this can be disabled.
* Recipient/Exclusion/Removal List: Import Addresses: when importing from a database, the email addresses are now deduplicated.
* Verify Links: added the ability to pause the operation.
* Tracking Report Settings: added an option that controls if the settings are uploaded to the tracking account.  Previously they were always uploaded.
* Added the %AttachmentsDir% environment variable for the DOS Batches.
* HTML Preview: added a "Copy Image" tool when right clicking on an image.
* Reset DNS Cache: now this will also clear the cache of PTR records used when "Override EHLO Domain" is unchecked.
* HTML Editor: there is now a "Tools" button in the bottom right corner of the Raw HTML editbox.
* Hide Advanced Settings: when an error occurs in one of these settings, the "Hide Advanced Settings" option is now automatically unchecked so that the setting with a problem becomes visible.
* View Result Set: the "Create Column" tool now has a "Not Null" option.
* The Task Scheduler window now displays a countdown of the 60 second grace period before it starts launching tasks.
* Recipient/Exclusion/Removal List: the Paste Addresses tool now has a hotkey: Ctrl+Shift+V
* Manage Tracking Account: FTP Browse: added a "Refresh" button.
* Extract Addresses From Files: the separator is no longer appended after the last extracted address.
* Added a "Speak" tool to the Help viewer.
* Post-Incoming Script: added the -RemoveFailed- predefined variable.
* Send Summary: added an Options menu with a "Display this window after sending" option.
* Basic Template: the button's drop shadow is now a darker, desaturated version of the button's background color.  Previously it was medium grey.
* Attached Files List: when adding files, the root specified in the Attached Files Folder will be discarded from the filepath if possible.
* Simple Send: Import From File: attachment filenames with unicode are now supported.
* prompt(): added a flag that forces the window to the foreground, unminimizing if necessary.
* Simple Send: the Import/Export tools now support unicode in the filepath.
* The /r and /x command line switches, which perform a Remove Operation, will no longer display the operation log unless the /dl switch is specified.  Previously the /q switch suppressed the log, but now this is used exclusively to suppress error popups.
* Literal branch: Preview Email: images will now appear by default without the need to click the "Click to Trust" icon.
* Email Send Log To: this field now supports a compound email address.
* The log's Failure Summary now includes the number of failures due to a user abort.
* Changing the current Follow-Up on the HTML Body branch will no longer automatically switch to the Raw tab.
* Extract Addresses From Files: Save To File: the target filepath now remembers past inputs in a drop-down list.
* Import Addresses Into Database: this will now remember the Convert Case option.
* Tracking Campaigns window: clicking on the number of credits will open the website where more credits can be purchased.
* Simple Send: the "HTML" menu will now display options for the Raw HTML editor when on the "Raw" tab.  Previously, it only displayed options for the WYSIWYG editor.
* Tracking Report: the Email Report and Distribute Leads tools will now deduplicate the list of project names.
* Tracking: Download All: the destination path now supports unicode.
* Simple Send: the tools on the "Attachments" menu will now automatically switch to the Attachments tab first.
* Tracking: Download All: when creating a Zip file, the compression ratio is now logged.
* Added a help file guide titled "Global vs. Project Settings".
* Check Blacklisting: added Sender Score to the default list of blacklists.
* Template Designer: this now supports template files that have a byte order mark.
* The Import Addresses tool's final window now has a button that launches the View Result Set tool.
* Import CSV Data To Database: this will now ignore any column mapping to the Primary Key.
* The Task Scheduler no longer has a 60 second grace period if none of the tasks are enabled.
* Incoming Encryption now defaults to "Optional" as many servers require it.
* Added the "Hyperborean" skin.
* Reduced launch time by 65% and improved rendering speed by 10%.
* Import CSV To Database: any misnamed columns are now reported immediately rather than running an operation that will fail on every record.
* Template Designer: it is now possible to alter the zoom of the preview.
* The "Override EHLO Domain" setting is now hidden by the "Hide Advanced Settings" feature.
* The "Default Date Format" and "Default Time Format" settings have been moved from the Details branch to the Scripts branch, in a new tab named "Options".
* The "Details" branch has been renamed "Security".
* The "Literal" branch has been renamed "Test Email".
* Passwords can now be up to 1024 characters.  Previously they were limited to 64.
* Removed the process and thread priority settings.  These have little effect on a modern computer.
* Fixed: Process Images: when Image Locality is "External", and there is a <base> tag, a bare filename was producing an embedded image instead of having the base URL inserted (since 52.0).
* Fixed: the Scheduler was potentially auto-starting in the system tray even when there are no scheduled tasks.
* Fixed: Literal branch: Preview Email: embedded images were not always appearing.
* Fixed: Operation History: numeric columns were not be sorted properly.
* Fixed: Tracking Report: IE8 fails to render graphical images that exceed 32K.
* Fixed: HTML Editor: Customize Toolbar: changing the toolbar size was not instantly adjusting the toolbar's height.
* Fixed: View Archive: View Attachments: when viewing many text attachments, they were being displayed too short or not at all.
* Fixed: Test DNS: a certain type of error was not being reported.
* Fixed: scheduled tasks were sometimes producing an error that the global settings could not be saved.
* Fixed: HTML Editor: right clicking on a hyperlinked image was not always displaying the "Hyperlink Properties" option on the context menu.
* Fixed: HTML Editor: clicking on an image then using the Insert Hyperlink tool was not working.
* Fixed: Preview Window: after switching to the Text Body or Headers tab, then going to another recipient, then going to the HTML Body tab, the HTML preview was not updated to the new recipient.
* Fixed: Simple-Merge: restarting the operation from the Preview Window was causing a "No Recipients Qualified" error.
* Fixed: possible hang for a minute or more upon starting a Send Operation when Image Locality is "Both" and the server redirects http to https.


Version 52.0 (September 12th, 2017)
* Tracking Report: added a "World Map".
* When "Override EHLO Domain" is unchecked, Gammadyne Mailer will now attempt to automatically discover the correct PTR record for your computer's network adapter.  This may improve the delivery success rate slightly, as some mail servers foolishly try to evaluate the EHLO domain.
* Zip Attachments: added the ability to encrypt and password protect the Zip file.
* Simple-Merge will now obey the Removal Method.  Previously, the entire row was always deleted.  When opening an old project, the Removal Method will be set to "Delete Row" if appropriate to ensure that no change in behavior occurs.
* Added support for database schemas.  Specify the schema in the Table Name field, followed by a period, then the table name.
* Tracking: upon saving new Report Settings, those settings are now uploaded to the tracking server so that they are later obeyed when performing an automatic FTP upload.
* Tracking Report: the average interest score is now reported for countries and languages.
* Tracking: added the ability to customize the report with a graphical banner across the top.
* Tracking: Report window: added Find, Find/Next, Find/Previous tools to the toolbar.
* Tracking: Compare: added a "Total" column to the Top Domains section.
* HTML Preview: the document now scales to the system's DPI setting, which is important on high resolution monitors.
* HTML Editor: added the "Import CSV As Table" tool.
* Import Addresses Into Database: added an option to import compound email addresses.
* This "Limit Number of Messages Processed" feature is now compatible with "Process MAPI Email" and "Process Local Email".
* The "Process Messages Only Once" option is now compatible with "Process Local Email".
* Operation History: added the ability to open the log file for a selected operation.
* Numerous interface improvements, especially regarding 4K monitors.
* Recipient/Exclusion/Removal List: added the "Convert Case" tool to the context menu.
* Recipient/Exclusion/Removal List: Paste Addresses: this now works with copied files, not just text.
* Recipient/Exclusion/Removal List: Import Addresses: the list of addresses is now deduplicated.  This also applies to drag & drop.
* View Archive: embedded images will now appear when you click "Click To Trust".
* Operation History: this now reports the number of successful and failed forwards for each Incoming Operation.
* Added the dbe_call_func() and dbe_call_proc() G-Merge functions, which allow you to call a function or procedure in a different database.
* Editboxes: block selection: Paste: instead of deleting the selection, the selection is replaced on a line-by-line basis with the clipboard text.  Or, if the clipboard only contains one line, that line will replace each line in the selection.
* Automatically Parse Images: added support for unicode characters in the image filepath.
* Change Email Address: this now supports multiple recipients in the Recipient Column, although the "Fast" mode must be unchecked.
* Test Incoming Mail Servers: a warning now appears if the port is POP3 but the protocol is IMAP4, or vice versa.
* Tracking: the "Distribute Leads" tool is no longer limited by the "Maximum Recipients Shown" report setting.  It will now distribute all recipients, regardless of whether or not they are visible on the report.
* Updated the SSL module.  The Test Server tools now report the SSL version of the established connection, not the cipher's version.  Fixed possible SSL problem with Exchange 2010.  Fixed a rare SSL connection error.
* Database Clauses: the "Value" column's drop-down list will now enumerate values in a Simple-Merge file just like it does for a database.
* Tracking settings now have their own branch.
* View Archive: it is now possible to select multiple emails, and copy or delete them as a group.
* View Result Set: this window now has an Exit button on the caption, which will prompt you to save changes if necessary.
* View Archive: Save Attachment: this now displays a follow-up window that allows you to Open or Copy the saved attachment, or Explore the folder where it was saved.
* View Archive: Open Attachment: if the attachment has no extension, its Content-Type header is now used to provide a default so that the attachment can be opened in the appropriate application.
* Recipient List: the Paste Addresses tool now supports unicode.
* Import Addresses Into Database: the "Prevent Duplicates" option now ignores additional occurrences of the same email address in the import files.
* Convert Email Addresses Case: this will now examine the first 1000 database records to verify that the Primary Key is unique.
* date_format_regional(): added the ability to control whether or not a day of week appears in the long date format.  Also, the "MMM." format will now output "May" instead of "May." because no abbreviation occurred.
* Tracking: when combining multiple campaigns into one report, the list of project names is now deduplicated.
* Behavior change: db_call_func() and db_call_proc() will now halt the operation if an error occurs.  It could be dangerous to ignore such an error.
* Text attachments will now specify a character set in the MIME headers.  This will obey a byte order mark if present, otherwise it uses the system default character set.  This ensures that the recipient will see the proper characters even if their system uses a different system character set.
* View Result Set: Filter Settings: added the "Don't Remember" option.  If checked, a history of past inputs is not remembered in the drop-down list.
* Import CSV Data To Database: this tool now supports CSV files with a little-endian byte order mark.
* Tracking: Compare: Save To HTML File: this now produces a much better automatically chosen filename.
* Mobile Preview: you can now see the HTML without images by right clicking on the phone's frame and checking the "Disable Images" box.
* Tracking: Save To HTML File/Export CSV: added support for unicode in the filepath.
* View Archive: View Attachments: for 8-bit text attachments, the character set specified in the MIME header is now honored.
* Attached Files List: Browse/Paste/Drop: if the chosen files are located under the Attached Files Folder, this root is removed from the filepath.
* Edit External HTML Body:
  * The Preview tab now supports HTML5/CSS3.
  * If the file does not exist, the error message now has a "Create" button that offers to create the file.
  * It is now possible to set a relative font size for the raw HTML editor and the preview.
  * Fixed: the Customize Toolbar tool was refusing to launch.
* Delayed Retries: when starting a new phase, this will now detect if the ODBC connection timed out.  If so, a new connection will be made.
* prompt(): added a flag for making all button controls larger.
* Add Recipients: the "Import From Address Book" sub-tool now supports unicode.
* HTML Editor: Insert Hyperlink: added a button that opens the entered URL in your web browser, which is useful for testing its correctness.  Also the Enter key is now equivalent to clicking OK.
* Add Recipients: the log is now in unicode.
* Tracking Report: the Pie Chart will now shrink the text up to 50% if necessary to prevent clipping.
* The /a, /o, /r, and /e command line switches are now much better at handling multiple email addresses.
* Post-Incoming Script: added the -RemoveNotFound- predefined variable.
* Send Batches: added the %HTMLBodyFilepath% environment variable.
* Use System Address Book: when the Import Mode is "Email Addresses Only", unicode is now supported.
* The /a and /v command line switches now support unicode.
* HTML Editor: it is now possible to adjust the relative font size of the Raw and Preview tabs.
* Tracking Report: added the ability to hide the toolbar.
* Now supports installation to a path that contains unicode.
* The "Email Send Log To" feature now obeys the Sender specified in the project, as delivery may fail otherwise.
* Simple Send: Paste image file: added support for unicode characters in the image filepath.
* Verify Links: this now ignores links that contain G-Merge.
* View Archive: this now remembers all of the preferences for the email viewer.
* Added the ability to disable support for multiple lines in the editbox search/replace tool that was added in 51.0.
* Simple Send: Edit/Resize Attachment: this now operates on the table row that has a cell with focus, rather than requiring that a row be selected.
* Improved the performance of how a Domain Throttle is searched for.
* date_current() now has an optional parameter that, if TRUE, omits the time from the returned value.
* The Tracking Report Settings window is now organized into tabs as it was getting too tall for some screens.
* The HTML Body branch is now above the Text Body branch, and the Throttles branch is now above the Details branch.
* Archive Outgoing Emails: this field now supports unicode.
* Template names now support unicode.
* Insert Column: this now only obeys the "Support Unicode Characters" option if the column type is string.
* Begin With Recipient: a compound email address is now allowed, even though only the simple address is used.
* Added the "Clipboard Inspector" tool to the Interface menu.
* Repeat Send/Repeat Incoming: the taskbar button no longer reflects the operation progress meter.  While running continuously this is more distracting than useful.
* Renamed the "Use O.S. for DNS" setting to "Automatic DNS".
* Fixed: View Result Set: the mouse wheel was not working on the Filter's drop-down list.
* Fixed: some rare database errors were not being logged.
* Fixed: when maximized, the window's border could possibly be visible on a secondary monitor.
* Fixed: Mobile Preview: the window was sometimes too small.
* Fixed: View Archive: the Refresh tool was broken.
* Fixed: Insert Column: if both Use Address Book and Use Database are checked, the Address Book columns were appearing.  This is wrong because Use Database overrides Use Address Book.
* Fixed: http_fetch() was not supporting redirects on or to https: URL's.
* Fixed: Remove from Recipient File/List: the line number was possibly incorrect.
* Fixed: possible flicker when rendering window on 4K monitors, or when many System-G windows are open, or when kernel memory becomes scarce.
* Fixed: if the file specified by the /f command line switch was empty, the clipboard contents were erroneously being used instead.
* Fixed: Add Recipients: the "Import From Address Book" sub-tool was not putting a space between the contact's quoted name and their email address.
* Fixed: HTML Editor: when right clicking on a table, image, list, or hyperlink, the context menu was not always including the associated Properties option.
* Fixed: when the HTML Character Set is set to Auto, this was not being applied to the HTML editor's Raw editbox.
* Fixed: Simple Send: Edit Attachment: clicking Cancel was corrupting attachments that contain a byte order mark.
* Fixed: problem with G-Merge in a header when there is a space between statements.  Example: "[[1]] [[2]]" >>> "1 [2]]".  Special thanks to David Sedlacek.
* Fixed: Simple Send: repeatedly rotating a JPG was degrading the quality due to the nature of lossy compression.
* Fixed: View Archive: the table needed to be re-sorted after it was fully populated by its background worker thread.
* Fixed: possible hang in uninstaller.
* Fixed: the "Lock Project" option was preventing backups from being made.
* Fixed: editboxes: double clicking was selecting to the beginning of a word instead of the whole word.
* Fixed: possible crash performing a scheduled Incoming operation (since 51.0).


Version 51.0 (April 10th, 2017)
* Added the ability to combine multiple tracking campaigns into a single report, which is useful when a mailing is interrupted and resumed.  Simply hold down the CTRL key while choosing campaigns, then click the Generate Report button as normal.
* Added the regex_find() G-Merge function.  This adds a powerful new ability to process the contents of an incoming email using regular expressions.
* The Recipient List now supports unicode.
* View Result Set: added the ability for the Filter to act more like a search engine, with multiple keywords, quoted phrases, and negative keywords.  To the right of the Filter editbox is a button that opens the Filter settings.  Choose the "Advanced" mode.
* Tracking Report: added the ability to zoom the report in and out.
* Simple-Merge is now allowed to use the Database Clause Table to filter out recipients.
* Simple-Merge now supports 16-bit unicode CSV files that have a byte order mark.
* Multiline editboxes: Search and Replace: added support for search/replace strings that contain multiple lines.
* Multiline editboxes: added support for selecting columns of text.  Hold down the Alt key while selecting with the mouse.
* Redesigned the Attachments branch.  The "Constructed" branch is no longer separate.
* Tracking Report: added a toolbar.
* View Archive: added tools to Forward or Resend a selected email.
* Removed the "Send Mode" setting.  The "Normal" and "No Preview" modes now correspond to a new "Preview Messages" checkbox.  The "Last Recipient Only" mode is now a checkbox on the Filtering branch.  The "Identical" mode has been removed altogether, as it was an ancient throwback that gets blocked by spam filters.  Upon opening an old project, the Send Mode setting will be imported such that no change in behavior occurs.
* prompt(): it is now possible to specify a variable name for each control to store its state in.  Previously, the states were stored in variables named "Prompt1", "Prompt2", etc. which was unwieldy.
* Process Messages Only Once: this feature is now compatible with MAPI.
* Added a tool to import the SMTP Server table from another project.
* Check Blacklisting: added an option to test your computer's IP address for blacklisting.
* Tracking Report: the average interest score is now reported for browsers and platforms.
* Tracking Comparison: added a new section that lists the top recipient domains.
* Recipient/Exclusion/Removal List: added buttons for the Import Addresses, Find Illegal Address, and Paste Addresses tools.
* View Result Set: added the ability to specify a secondary sorting column.
* Test Incoming: if the mail server doesn't support Secure Authentication, this option will now be automatically unchecked, and the test retried.
* Tracking Report: Distribute: added the ability to BCC each distributed email.
* Basic Template: added the ability to create a horizontal rule, and a horizontal rule with centered text.
* The "Unable to open database" error message now has a Retry button.  It will automatically retry every 30 seconds, which is important for unattended operations.
* View Archive: Attachments: added an "Open With" tool, which allows you to select a different program to open the attachment in.
* Tracking Campaigns: added an "Expires" column that informs you when the tracking data will be deleted.
* In controls that support G-Merge, if you right click on a function, the last option on the context menu will be labeled "Help: function_name()" and will take you to the help file description of the function.
* Tracking: whitespace is now removed from the beginning and end of all hyperlinks to avoid potential problems.
* Recipient/Exclusion/Removal List: the Find Illegal Address tool now supports multiple email addresses separated by commas when Simple-Merge is enabled.
* Preview Window: the Test Single and Test All tools now support multiple email addresses.
* Added the convert_from_unicode(), convert_to_unicode(), day_of_month(), and str_put() G-Merge functions.
* Locate Mail Server: the PTR record for each mail server is now reported.
* Repeat Send/Repeat Incoming: improved the way that a lost database connection is handled.
* Operation History: you may now double click on a row to open the corresponding project.
* Insert Function: when a function is selected, its documentation will be shown in the sidehelp panel.
* View Result Set: added an "Insert Date/Time" tool to the context menu for cells.
* Recipient/Exclusion/Removal List: Paste Addresses: the list of addresses is now deduplicated.
* Change Recipient Address: this will now examine the first 1000 database records to verify that the Primary Key is unique.
* Tracking: FTP Folder: added support for unicode characters.
* Pseudo-Projects: added the "RecipientsUTF8" label, which is useful if the mailing list contains unicode characters.
* Tracking: Download All: added Open/Explore/Exit buttons to the operation log window.
* Operation History: the number of incoming emails deleted is now reported.
* While an email is being downloaded, the interface will now remain responsive, and the progress meter will update.  This was not done before because most emails download in less than a second, but it is helpful for very large emails.
* Preview Window: the Attachments List now supports unicode characters.
* Add Recipients: MIME header encoding is now decoded, if present.
* Troubleshoot HTML: a warning is now produced if an image is 20%+ larger than necessary.
* Added the -AutoRespondSuccesses- and -AutoRespondFailures- predefined variables to the Post-Incoming Script.
* Test Spam Score: the sample email used for testing was previously displayed as raw MIME format.  Now it is possible to observe the Text Body, HTML Body, Attachments, and raw HTML code.
* Add Recipients: ASCII codes 0-31 are now converted to a space character, and runs of multiple spaces are now reduced to a single space.
* Import Addresses: the "Prevent Duplicates" option now supports multiple email addresses in the Recipient Column.
* Troubleshoot HTML: an error is now reported if a hyperlink has trailing whitespace.
* Added the %ProjectPath% variable for the Send Batches.  It holds the path of the folder where the project file is located.
* Spam Test: hyperlinks containing G-Merge are no longer flagged as illegal.
* Begin With Recipient: this is now tested before other types of filtering.  Previously, if the recipient was rejected for some other reason, the mailing would never start.
* Mobile Preview: references to external style sheets are now ignored, since they are rarely supported by email clients.
* Extract Addresses From Files: when the output is transferred to the Add Recipients tool, unicode characters are now supported.
* POP/IMAP: if plain authentication fails, a secure method is now attempted.  It doesn't hurt, and the server may actually require it.
* Updated the SSL module (bug fixes and security improvements).
* The External Text Body Filepath and External HTML Body Filepath fields now display unicode characters without encoding.
* Failure Script: added the -Aborted- predefined variable, which can be used to determine if the user interrupted the delivery.
* Process Messages Only Once: added a "Forget Downloaded Messages" tool to the context menu.
* Exclusion/Removal List: the Import Addresses tool will now simplify email addresses when importing from a database.
* If an external Text Body file has a UTF-8 byte order mark, this will now override the project's Character Set field.
* External HTML Body: Edit In Internal Editor: if the file has a unicode or UTF-8 byte order mark, it will now be converted to ASCII.
* Mobile Preview: the dimensions of the preview area are now displayed faintly in the bottom right corner.
* The "HTML Character Set" field now defaults to "(Auto)" and is now hidden when "Hide Advanced Settings" is checked.
* Email Summary To: this now obeys the Sender specified in the project, as delivery may fail otherwise.
* When dropping multiple files on the "Process Literal Email" button, there is now a single comprehensive log.  Previously, the last email was overwriting the logs from the previous emails.
* Log Recipient Data: the data is now logged before rejections are tested, otherwise it may not be clear why a rejection occurred.
* Behavior change: the /r command line switch now obeys the settings on the Remove/Options branch.
* HTML Editor: Insert Hyperlink: past inputs are now remembered in a drop-down list.
* prompt(): added the ability to make the window be maximized initially.
* Added a "View Archive" option to the Send Summary's File menu.
* Email Send Log To: if there is an error, this now displays the conversation with the mail server.
* View Result Set: CSV Import/Export: added support for unicode characters in the filepath.
* Tracking Report: added support for numerous obscure languages.
* HTML Editor: Insert Button: added an option to use a solid background instead of a gradient.
* The foreachfile.exe utility now supports unicode characters in its command line parameters.
* Process G-Merge Inside Attachments: in the event of an error, the filepath of the attachment is now mentioned.
* Project Properties: all fields now support unicode.
* The installer and uninstaller can now gracefully close a running instance of GM that is performing a repeated Incoming/Send operation.
* Address Book fields can now be inserted with the Insert Column tool rather than the Insert Variable tool.  This is more logical.
* Check Blacklisting: if Direct Delivery is enabled, the log will now warn that the "Check Relaying Servers" option is pointless.
* The DNS IP Addresses field now allows IP's to be separated with a comma.
* Added a "Help" option to the bottom of the Logs menu.
* Fixed: the Constructed Attachments editbox was not remembering its Fixed Pitch and Word Wrap options.
* Fixed: the get_recipient_list() function was broken.
* Fixed: Verify All Addresses: the operation should have been treating addresses as case-insensitive.
* Fixed: foreachfile.exe was producing an error if the project filepath contained spaces.
* Fixed: G-Merge functions that expect a variable name as the first parameter were not tolerating whitespace before the variable name.
* Fixed: a change made to a cell in the Clause Table was ignored when the Send Operation was launched before moving to another cell.
* Fixed: Basic Template: after adding a new section, the newly added section was not being selected.
* Fixed: when aborting a repeated send between operations, it was not aborting promptly.
* Fixed: Preview Window: after performing a Test Send All, the CC's and BCC's were not being sent during a regular send.
* Fixed: a rare error downloading an email via IMAP4.
* Fixed: Import Addresses: the "Prevent Duplicates" option was not working at all (since 50.0).
* Fixed: batches that contain unicode characters would not run on Windows Vista/2008.
* Fixed: some minor installation problems on Windows Vista/2008.
* Fixed: Change Email Address: when using Simple-Merge, this could possibly fail to find a second occurrence.
* Fixed: HTML editor: the Insert Hyperlink tool was not working when an image was selected.
* Fixed: now able to cope with a particular POP3 server that was not responding correctly to the QUIT command.
* Fixed: Tracking: the "non-unique Primary Key" warning would erroneously appear if the Recipient Column contained multiple recipients.  Special thanks to William Horan.
* Fixed: possible inability to receive certain messages from MAPI.  Special thanks to Konstantinos Sirganis.
* Fixed: IMAP4: large emails were taking too long to download.  Special thanks to Wesley Iamaguti.


Version 50.0 (November 9th, 2016)
* Added the Operation History tool.  This displays a record of recent Send and Incoming operations, with statistics.
* Added a tool for browsing emails in the incoming and outgoing archives.
* View Result Set: added the ability to hide all rows that do not contain some specified text.  There is a new "Filter:" field on the toolbar.
* Add Recipients: added support for unicode characters.
* Added the ability to display the recipient's company name on the tracking report.
* Tracking: Top Domains: the average interest score for each domain is now reported.
* HTML Editor: added the "Insert Button" tool.
* Test Send: added the ability to specify more than one email address.  This is useful when you have mail accounts with Gmail, Yahoo, AOL, etc. and want to test them all in one shot.
* Added the ability to limit the number of recipients listed on a tracking report.
* Added the "Check All SMTP Relays" option to the Check Blacklisting tool.
* Tracking: Distribute Leads: added the ability to limit the number of recipients that are distributed.
* Compare Tracking Campaigns: added a "Languages" section to the report.
* When a global setting is changed, it will now be automatically applied to all other running instances.  Previously, each instance held an independent copy of the global settings, and the global settings file was completely overwritten when an instance closed.  If a global setting was changed while multiple instances were opened, the change would not affect the other instances, and might not be permanent depending on the order that the instances were closed.
* Recipient/Exclusion/Removal List: the Import Addresses tool now supports import from a database.
* Mobile Preview: added support for when only a Text Body is specified (no HTML Body).
* Numerous improvements to the Spell Checker.  Download the latest version of the Spell Checking Module from Gammadyne.
* The recipient() G-Merge function is now compatible with Incoming Operations.  This now makes it possible to support unicode characters in a processed email address.
* Recipient/Exclusion/Removal List: the "Find Illegal Address" tool now supports Simple-Merge.
* Follow-Up Index/Date Column: added a "Create" button next to these fields, which will create the database column for you.
* Behavior has changed when [[abort_operation]] is encountered in the Success/Failure Script.  The Send Summary will now display as normal.  The Post-Send Script will no longer be circumvented.  The "Notify Operation Errors" feature is now ignored.  And if the operation was launched from the command line, Gammadyne Mailer is now allowed to terminate silently if appropriate.
* IMAP receiving is now faster and much less likely to run out of memory for large messages.
* Use System Address Book: it is now possible to support unicode characters in address book fields by using unicode_to_header(), unicode_to_html(), or unicode_to_utf8().
* Recipient/Exclusion/Removal List: added a "Paste Addresses" tool.
* Simple-Merge: when the CSV file is UTF-8, when converting the columns to 8-bit variables, the conversion is best-fit instead of leaving the raw UTF-8 encoding.
* Process Compound Addresses: when the Processing Mode is Add To Database, Add To Recipient File, or Add To Exclusion File, unicode characters in the recipient's email address are now supported.  For the other "Add..." Processing Modes, the MIME header encoding is now left intact so that unicode characters are preserved.  Previously, addresses were converted to ASCII.
* SQL Server: MARS is now enabled automatically to prevent a possible "Connection is busy with results for another hstmt" error.
* Added support for email addresses that contain an Internationalized Domain Name with an encoded top-level domain.
* Verify Links: you can now return to the main window without closing the window with the list of bad links.  Also, when using an external HTML Body, this tool will now open the HTML file in an editor first.
* Tracking: added support for negative Primary Keys.
* Import Addresses Into Database: added support for unicode files with a byte order mark.
* Added the "/fast" command line switch, which works with the /ch switch to accelerate a "Change Recipient Address" operation.
* Insert Variable: after a variable is inserted, Side-Help will display the variable's documentation.
* Tracking: Manage Account: FTP Browse: added a "Delete Folder" button.
* Suppression Lists: Calculate: added an "Add To File" tool that will append the calculated hash to one of the suppression list files.
* Basic Template: added the ability to create two side-by-side buttons.
* Added the "Logs" menu.  It includes the new tools for viewing the Operation History, Outgoing Archive, and Incoming Archive.  The View Send Log and View Incoming Log options were moved here from the Tools menu.  Also included are shortcuts for opening the Success, Failure, Rejection, and Host Statistics logs.
* Simple Send: Rotate Image Attachment: added the ability to rotate GIF's, including animated GIF's.
* Added the smtp_select() G-Merge function, which selects a particular SMTP server to send the current email with.
* Troubleshoot HTML: if tracking is enabled, this now warns if any hyperlink is too long to be tracked.
* Basic Template: added the ability to control the main title's vertical padding.
* Archive Incoming Emails: the filepath of the archived email is now logged.
* Added the "Validate CSS" and "Validate HTML" options to the Test menu.
* HTML Editor: the "Neutralize Characters" tool now supports the presence of a UTF-8 byte order mark.
* Test Send: this tool now operates in "No Preview" mode.  However, there is an option to enable preview mode on the "Send Messages?" confirmation window.
* Preview Window: added the "Display this window before sending" option to the Options menu.  Unchecking this box will set the Send Mode to "No Preview", something that new users have trouble figuring out.
* Extract Addresses From Files: improved performance and reduced memory usage.
* HTML Editor: when clicking on the Edit tab, the "X-UA-Compatible" meta tag is now inserted into the <HEAD> automatically to ensure that HTML5 and CSS3 are supported.
* HTML Editor: pressing F1 when the caret is on a G-Merge function will now open the help file to the section that describes the function.
* Preview Window: Test Send: unicode characters are now supported in the email address.
* Added the envvar() G-Merge function, which resolves DOS environment variables.
* Tracking Report: Export CSV Data: the number of records and total file size is now reported.
* Simple-Merge: the CSV columns are now listed in the log.
* Added the "Video Tutorials" option to the Help menu.
* Recipient File: Edit Files: if there is only one file specified and it does not exist, the error window now has a button that will create the file.
* Added the %ArchiveInDir% environment variable for the DOS batches, which holds the folder where incoming emails are archived.
* Find Illegal Address: when performed on a Recipient File, there are now hotkeys for Find Next (F4), Open Next File (F2), and Save File (F9).
* View Result Set: reorganized the menus.
* Welcome: the Rename Project tool now has a hotkey, F2.
* If the Database Connection String contains "readonly=1", the error message will now point the user directly to the source of the problem.
* Changed how date_years_between() calculates the result.  It now accounts for leap days.
* An error is now reported if the Incoming Log cannot be created.
* Tracking: Download All: the All/Selected option is now remembered.
* The following attachment extensions will now produce a correct Internet Media Type: 7Z, APK, F4V, FLV, LOG, MDB, MP4, MPKG, P7B, P7M, P7R, P7S, P8, P10, P12, QXD, QT, RAR, TSV, VCF, WPD
* Welcome: if another instance already has the Welcome window open, it will be brought to the foreground and the current instance will terminate.
* Post-Incoming Script: added a -RemoveSuccesses- predefined variable, which holds the total number of recipients who were successfully removed.
* Mobile Preview: <object> elements are now removed, which matches the behavior of virtually all email clients.
* Customize Toolbar: added a new column that contains an overview of the tool.
* Image Locality now defaults to "External" for new projects.  Because the "Internal" mode can adversely affect performance, it should be manually elected.
* The uninstaller now removes the project backups.  Also, there is now a limit of 1000 total backup files.
* The "Trim Whitespace From Data" and "Close Database Between Operations" options are now hidden when Hide Advanced Settings is enabled.
* Added 32 tools to the System Tools tool.
* Fixed: dropping folders on the Process Literal Email button was not working correctly.
* Fixed: Single Send: in the To: header, email addresses inside quotes are now ignored.
* Fixed: when opening the Tracking Report from the Welcome window, if no project is selected, the Start Date and Report Date were coming up blank.
* Fixed: on Windows XP, in the Arizona time zone, the Date header's time zone bias was always +0000 instead of -0700.
* Fixed: the tracking system was not producing an error when the Primary Key is an empty string.
* Fixed: Add Recipients: when adding to a big endian unicode file, an extra newline could be inserted.
* Fixed: Email Send Log To: this was only sending to the first recipient if the other recipients were in different domains, and Direct Delivery is enabled.
* Fixed: the unicode_to_xxx() functions could possibly produce a blank error popup.
* Fixed: Tracking: Download All: the operation would abort with an error if any campaign had zero recipients tracked.
* Fixed: SQL Server: possible error when a column is fetched first as ASCII, then later as Unicode.
* Fixed: certain operation errors were preventing the Send Summary from being logged.
* Fixed: Tracking: the View Time Pie Chart was sometimes not displaying correctly on IE8 and earlier.
* Fixed: possible timeout if an IMAP server mis-reports an email's size.
* Fixed: Test Spam Score: when testing the SPF record, the "mx:" mechanism was not being handled properly, possibly resulting in an incorrect rejection.  Special thanks to Mark Miller.
* Fixed: when tracking, GM was failing to detect if the Primary Key is not an integer (since 47.0).
* Fixed: HTML Editor: the Insert Quotation tool was deleting any selected text.
* Fixed: a certain type of soft bounce was considered a hard bounce.
* Fixed: View Result Set: if there is no Primary Key, text cells would not respond to the mouse.
* Fixed: unable to generate tracking report when the recipients are hidden.
* Fixed: the "Insert Database Column" tool was not working in the HTML editor.
* Fixed: possible crash when pressing Escape to close the Mobile Preview window.
* Fixed: after a SMTP connection error, the rotation was not advancing to the next SMTP server.
* Fixed: on Windows XP/2000, the installer was failing to migrate settings from before 48.0, and the uninstaller was failing to remove some files (49.0 only).
* Fixed: on Windows XP/2000, the Pre-Send and Post-Send Batches were failing to run if they contained unicode characters (49.0 only).
* Fixed: IMAP messages are now processed in reverse order to avoid a problem with the foolish IMAP Auto-Expunge feature that some servers employ.  Previously, an error could occur when downloading an email after the previous email had been deleted.


Version 49.0 (July 11th, 2016)
* Added the "Mobile Preview" tool to the Test menu.
* Added the "Distribute Leads" tool to the Tracking Report window.  This will email a portion of the recipient data to each member of your sales staff.
* Added the "Top Domains" section to the tracking report.  This displays the open rate and click through rate for the most common recipient domains.
* Added the "Archive Incoming Emails" option to the Incoming branch.  This feature allows you to create a backup of every email that is received.
* Added the ability to search the Recipient Files for illegal email addresses, and to edit or delete them.  Click the "Find Illegals" button below the Recipient Files field.
* Exclusion Files can now contain unicode or UTF-8 provided that a byte order mark is present.
* Added the "Language Totals" section to the tracking report.  This displays the open rate and click through rate for each language.
* Added the ability to display the recipient's name on the tracking report.
* Added the ability to remove recipients from a Suppression List.  Simply check the "Suppression Lists" box on the Remove/Options branch, then run a Remove Operation as normal.
* Project filenames now support unicode characters.
* Unicode surrogate pairs are now supported in headers and the Text Body.
* Added support for CRAM-SHA1 authentication for SMTP and POP3.
* Basic Template: added the ability to create a button.
* Email Summary To: the Send Summary Graph is now included in the email.
* Added support for SHA1 Suppression Lists.
* The Pre-Send and Post-Send Batches now support unicode characters.
* Added the following G-Merge functions: batch_run(), color_scale(), db2_get_unicode(), extract_filename(), hash_sha1().
* Extract Addresses From Files: Eliminate Duplicates: when adding to the Recipient List, Exclusion List, or Removal List, extracted addresses are now ignored if they are already present in the list.
* Convert Email Addresses Case: when the Recipient Column contains compound addresses, this will no longer corrupt non-ASCII characters.
* Simple Send: added the ability to rotate image attachments.
* Added a tool that calculates a hash for a Suppression List.  Click the "Calculate" button at the bottom of the Suppression Lists table.
* Auto Image Dimensions: this feature now supports external images when the Image Locality is "External".
* Insert Function: after a function is inserted, Side-Help will display the function's documentation.
* Tracking: Automatic FTP Upload: it is now possible to specify a different port for the FTP server.
* Updated the SSL module (bug fixes and security improvements).
* The Incoming Summary and Log now report the total number of recipients that were processed but rejected.
* HTML Editor: added a "Neutralize Characters" tool to the Raw editbox's context menu.  This will encode all non-ASCII characters using the character set specified in the HTML, thereby making them character set neutral.  This improves the odds that the characters will appear correctly in the recipient's email client.
* HTML Editor: added the "View In Browser" tool.
* Email Send Log To: multiple email addresses are now supported.
* Single Send (no database): unicode characters are now supported in the email address.
* Tracking: the "Export Tracking CSV Data" and "Download All" tools now sort the exported records by Interest Score.
* Added the recipient() G-Merge function, which is needed to obtain unicode characters from a unicode Recipient File.
* prompt(): added the ability to enclose controls inside a groupbox that is also a checkbox.
* Troubleshoot HTML: added the ability to detect illegal hyperlinks.
* change_address(): added optional abilities to simplify the old and new addresses, convert the new address to lower case, and control the "Fast" mode for databases.
* The Host Statistics log is now in unicode, and supports Internationalized Domain Names.
* Compare Campaigns: if there are not two campaigns selected, the user is now prompted to choose two from a checklist.
* Tracking: Report Settings: added an option to disable the bar chart that appears on the right edge of the tables.
* mime_print(): added an optional third parameter: a title that is printed at the top of each page.
* Delivery Status Notification: this setting is now obeyed when an Incoming Operation is forwarding an email.
* HTML Editor: Raw tab: Open From File: if the opened file is .EML or .MSG, the HTML code is extracted from within it.
* Extract Addresses From Files: added Open, Copy, Save As, and Print buttons to the bottom of the log window.
* Added the optional /lc command line switch in support of the /ch switch.  It will cause the new email address to be converted to lower case.
* Added the %DelayedRetryDir% variable for the Send Batches.  It holds the path of the folder that stores Delayed Retries.
* Added the "Open Containing Folder" tool to the Welcome window.
* Connection String: Browse: the "readonly=1" attribute is now automatically removed.
* The /f command line switch now supports files that contain unicode or UTF-8 provided that there is a byte order mark.
* NTLM authentication is now preferred over CRAM-MD5 as it is more secure.
* List-Serving: the following headers are now removed:  Read-Receipt-To, Delivery-Receipt-To, Return-Receipt-Requested, Return-Receipt-To, Registered-Mail-Reply-Requested-By, X-Confirm-Reading-To.
* Scheduler: added an option to animate the tray icon.  Previously, it was always animated.
* Troubleshoot HTML: added a warning if any image does not specify a width or height, unless "Auto Image Dimensions" is checked.
* prompt(): added the "advance" property for checkboxes and radio buttons.  When the box is checked, focus moves to the next control.  The basic template puts this to good use.
* Post-Incoming Script: added the -IncomingRejected- variable.
* Added the "/he" command line switch, which opens an HTML file in an editor.
* Single Send (database): if the clipboard contains an email address, the dialog will be pre-populated with it.
* The /a and /e command line switches now support the optional /ns switch, which prevents the project from being saved.
* The Content-Location field now supports https:// URL's.
* Export/Run Pseudo-Project: added support for unicode characters in the filepath.
* "localhost" is now considered a valid mail server name.
* Test Send: added support for unicode characters in the target email address.
* The Send Log now reports a Recipient File's encoding and size.
* The "Edit External HTML Body" window is no longer modal.  You can return to Gammadyne Mailer's main window without closing it.
* Single Send: tracking is now automatically disabled.
* The "Track Count" field has been renamed "Limit Number Tracked" and is now controlled by a checkbox.
* Import Settings: if only one branch is selected, that branch will be displayed after the tool finishes.
* Send Preprepared Emails: this now obeys the project's Delivery Status Notification field, although this can still be overridden by the X-DSN: header.
* HTML Editor: Insert Groupbox: if there is no prior selection, it was previously impossible to edit the contents.
* Pseudo-Projects can now utilize the "Generate Host Statistics" feature.
* decode_header() will now attempt to translate unicode characters into the system codepage.
* Verify All Addresses: this tool will now refuse to run if the computer does not meet the requirements for Direct Delivery, since this is required for address verification to work correctly.
* Preview Window: single send: any error is now reported in a popup window with transcript instead of the displaying the Send Summary window.
* An SMTP delivery is now considered failed if there is no response from the server after the email content is transmitted.
* Improved MAPI error reporting.
* Added the -AutoResponses- predefined variable to the Post-Incoming Script.  It contains the total number of emails that were ignored or deleted due to the "Auto-Responses" setting on the Criteria branch.
* There is now a sensible error if the Success/Failure Script tries to read/write database data without a Primary Key.
* Added the "Lookup Recipients" shortcut to the Mailing List branch.
* GMCOM: load_mem_w(): there is now an effort to translate the wide characters into the system codepage, rather than simply truncating the top 8 bits.
* The options on the Database menu are no longer disabled if the "Use Database" box is unchecked.  Better to see an explanatory error message.
* Check PTR Record: renamed this tool to "Direct Delivery Possible?".
* The free trial no longer inserts the "Not For Commercial Purposes" message.  Instead, it permits a fully functional mailing to a mailing list of up to 100 recipients.
* The "Send Preprepared Emails" tool, "Begin With Recipient" option, and "Send Only To Range Of Recipients" option are now disabled in the free trial.
* Fixed: the calculation of the Click Rate on the Tracking Campaigns Window now matches the calculation on the tracking report.
* Fixed: Export Tracking Data: the Interest Score of unopened email was .1 when it should be 0.
* Fixed: Compare Tracking Campaigns: the Browsers, Platforms, and Countries sections were not correctly reporting the click stats.
* Fixed: Change Email Address: when using a database, was not working when the old address is compound.
* Fixed: possible hang when processing an improperly formatted Suppression List.
* Fixed: the window caption and taskbar text were not set correctly while sending a pseudo-project.
* Fixed: GMCOM: load_file_w() was not truly supporting non-ASCII characters in the filename.
* Fixed: Extract Addresses From Files: when "Extract Compound Addresses" was unchecked, the "Eliminate Duplicates" feature was broken (since 48.0).
* Fixed: prompt(): the Bar Drawer control was fatally broken.
* Fixed: rarely, balloon help was not appearing promptly, or not at all.
* Fixed: DIGEST-MD5 authentication was mistakenly disabled for POP3.
* Fixed: DIGEST-MD5 authentication for SMTP was always being tried first, even if the server did not advertise support for it.
* Fixed: possible inability to make database assignments in the Success/Failure Script when using a Custom SELECT Statement.
* Fixed: unicode_to_html() was not encoding the "<>&" characters.
* Fixed: hang if a Simple-Merge file contains a null character.
* Fixed: when a database error occurs while fetching records for a Send Operation, the "Notify Operation Errors" feature will now work correctly.
* Fixed: executables were signed with a revoked SHA1 cert.  Because the SHA256 cert is valid, this would only be reported to the user on systems prior to Win7.
* Fixed: crash after selecting Simple-Merge in a wizard.


Version 48.0 (March 7th, 2016)
* Recipient Files can now contain unicode or UTF-8 provided that a byte order mark is present.  This applies to Send Operations, Incoming Operations, and all tools that operate on the mailing list.
* Added support for unicode characters in the Recipient Column (for databases and CSV files).  Unicode will now appear correctly in the outgoing email's To: header.
* Redesigned the image cache engine.  Improved performance and memory usage.  Fixed a problem with having more than 60 unique images.
* Added the "Import Settings" tool to the File menu.  This allows you to import the settings on one or more branches of another project.
* Tracking: added the "View Time" graph to the tracking report.
* Added support for DIGEST-MD5 authentication for SMTP, POP3, and IMAP4.  This improves security and compatibility with some mail servers.
* Tracking: added a bar graph along the right edge of all tables.
* HTML Editor: Unicode Character Map: added the ability to create a list of favorite characters.
* Shrink Images: added support for non-animated GIF's.
* Shrink Images: previously both the width and height attributes were required for this feature to work.  Now only one is needed.
* Added the "Find Illegal Address" tool to the Recipient List, Exclusions List, and Removal List.  The hotkey is Ctrl+I.
* Extract Addresses: added support for import files whose contents are unicode or UTF-8.
* View Results: added the "Direction" field to the Find And Replace window.  This allows you to start a search from the beginning of the table, the current cell, or the end of the table, in either forward or reverse.
* Preview Window: the Recipients listbox now supports unicode characters.
* Extract Addresses: when extracting to a file, the user may now choose the character encoding of the output file, and whether to overwrite or append to an existing file.  Previously, ASCII was always used, and the file was always overwritten.
* Single Send: added support for unicode characters when simulating a database record.
* The Single Send tool is now compatible with the Simple-Merge feature.
* Insert Column: added the "Support Unicode Characters" checkbox.  If checked, this will add the additional code necessary to make unicode in the database column appear correctly.
* Change Recipient Address: if the old address is simple, it can now be detected and changed inside a compound address in the mailing list.
* Added the /wt command line switch, which can set a time when the mailing should begin.
* Wait Until: the date is now optional, in which case the operation will start at the next occurrence of the specified time.
* Change Recipient Address: added the "Fast Search" option.  Previously this mode was always used.  The advantage to turning it off is that the search is not case sensitive, and the Recipient Column is allowed to contain compound email addresses.
* View Results: added the ability to save changes to the database data without closing the window.  Previously there was only a "Save and Exit" command.
* Preview Recipients: added support for unicode characters.
* Tracking: the automatic report FTP upload feature now supports SSL/TLS encryption.
* Troubleshoot HTML: remote images are now tested for corruption, wrong extension, and excessive size.  Added a warning that a meta tag is required for SVG images.  Excessively large images produce no warning if the Shrink Images feature will resolve the problem.
* Most global settings are now separate for each Windows user account.
* Added the /ch command line switch, which will change an email address in a mailing list.
* Remove Illegal Addresses: this now supports addresses that are separated with commas or semi-colons.  Previously, each address had to be on a separate line.  Also, it can now handle an unmatched quote mark gracefully.
* Test Spam Score: this now reports all illegal hyperlinks, not just the first.
* Tracking: Manage Account: FTP browse: added a "Create Folder" tool.
* Tracking: added a "Clicks%" column to the Link Tracking table.
* Basic Template: added the ability to hyperlink the text in the footer.
* HTML images embedded using db_embed() will now appear correctly on the Preview Window.
* Added the str_trim_front() and str_trim_end() G-Merge functions.
* The str_trim() function now has an optional second parameter that specifies the characters that should be trimmed.  Previously, this function would only trim whitespace.
* Added the incoming_get_header_unicode() G-Merge function, which is useful for displaying the original email's headers in an auto-response or forward.
* Auto-Respond Wizard: the default message body now includes the original email's headers, with full unicode support.  The help file chapter on auto-responding also gives an example.
* Added the build_email_list() G-Merge function.
* Tracking Report Settings: added the ability to set the size of the pie chart.
* Add Recipients: the "Ignore Duplicates" option now supports database cells that contain multiple email addresses.
* Import Addresses: the file specification now supports unicode characters.
* Scheduled tasks now obey the "Notify Operation Errors" feature if the operation aborts due to a failed pre-send test.
* The mime_print() function now has an optional second parameter that allows you to specify that the email's headers should be printed at the top of the first page.
* Send Preprepared: added support for a "X-DSN:" header which controls the Delivery Status Notifications feature.
* When modifying an <img> tag, Gammadyne Mailer will now preserve the XML-style trailing slash, if present.
* HTML Editor: the Preview tab will now properly display images that are not located in the Embedded Files Directory, but are present in the Embedded Files List.
* Added the "Preview Email" button to the bottom of the Literal branch.
* The "Customize Toolbar" window now allows you to change the toolbar size.
* Scheduler: the tray icon is now animated whenever a task is running.
* Added the utf8_to_unicode() G-Merge function.
* Connection String: if you hold down the shift key while clicking Browse, you will not be prompted to choose a driver.  The previous driver will be used.
* Store Successful Send Date: now produces an error if the database connection string contains "readonly=1".
* prompt(): added the "depend_ignore" property, which makes the control invisible to the other depend_xxx properties.
* Numerous improvements to how G-Merge script errors are reported.
* The Open/Save Template window now supports selecting with arrow keys.
* Verify All Addresses: added Copy, Print, Save As, Exit buttons to the bottom of the log window.  The "Verify Addresses.log" file is no longer automatically created.
* HTML Editor: Verify Links: now 10 links are verified simultaneously instead of one at a time.
* HTML Editor: when applying a stock format, if the caret is already inside a stock format, the old format will be changed in-place.  This is important because an <h2> should never go inside an <h1> for example.
* Added the ability to have scheduled tasks be shared among all users rather than each user having a separate set.
* The /e command line switch now supports the optional /d switch, which prevents duplicate addresses from being added to the exclusions.  It also now supports the /q switch, which suppresses errors.
* Test SMTP Servers: the server's supported authentication methods are now listed in the log.
* Simple Send: added the "Delivery Status Notification" option.  When enabled, the relaying mail server will send an email that reports whether the message's delivery was a success or failure.
* The Troubleshoot HTML and Test Spam Score tools now warn if there is no <title> element in the HTML body, as this may cause the email to receive a spam penalty.  The default HTML Body now includes the <title> element.
* Added the %HostStatsFilepath% environment variable for the Pre-Send and Post-Send batches.
* Convert Email Addresses Case: the total number of changes is now reported.  Previously this was only reported when using a database.
* The "b" date format code was generating the timezone bias for the current date.  It will now generate the timezone bias for the specified date.
* There is now a visual indication when side-help has focus.
* Added the /nosum command line switch, which suppresses the Incoming Summary.
* An error is no longer reported if the Override EHLO Domain field contains the "IPv6:" prefix.
* Preview Window: the splitter can be double clicked on to set it to an optimal position.  This will occur automatically if the window is maximized or unmaximized.
* Preview Window: the "View Info" tool will now report all images embedded with the db_embed() function.
* An error is now reported if two Simple-Merge columns have the same name.
* The "Notify Operation Errors" feature will now report errors that occur in the Pre-Incoming Script.
* Fixed: Validate HTML: for HTML5, the appearance of the W3C Nu HTML Checker page was glitchy.
* Fixed: the Incoming Summary was not always reporting a correct number of failed auto-responses.
* Fixed: using db_embed() will no longer cause an "Unable to load image" error to appear in the log.
* Fixed: Make Styles Inline: for an internal style sheet, canonicalized characters (such as "&amp;") were not being handled correctly.
* Fixed: Make Styles Inline: was failing to download an external style sheet if its URL was completed with a <base> tag.
* Fixed: Preview Removal: the "Proceed With Removal" button was missing if only illegal addresses were found.
* Fixed: mime_convert_to_html() was failing if the text body lacked a Content-Type header.
* Fixed: View Results: after creating a new column, the cells in the column were in ASCII editing mode instead of unicode.
* Fixed: when using CRAM-MD5 authentication, passwords longer than 64 characters were not working.
* Fixed: specifying a project on the command line was sometimes causing it to be lost from the project history list.
* Fixed: Test Spam Score: was penalizing anchors in the form of <a name="foo"> as being an illegal hyperlink.
* Fixed: Preview Window: a header with a comma or semi-colon followed by a space was saved with an extra space.
* Fixed: a DLL injection security vulnerability.
* Fixed: View Results: Find And Replace: the search was not obeying the sorted order of the rows.  It was moving through the unsorted order.
* Fixed: Send Summary Graph: visual glitch with the mouse tracking.
* Fixed: the db2_execute() function was returning FALSE for all UPDATE commands even if they succeeded, and logging a bogus database error.
* Fixed: Parse Images, Make Styles Inline: unicode characters are no longer converted to question marks in a modified HTML tag's attributes.
* Fixed: latch_html_unicode_until() was not converting canonicalized characters to unicode.
* Fixed: the HTML editor's Preview tab was not displaying certain images depending on how they were specified.
* Fixed: "Login Timeout" error when connecting to databases that take a long time to connect (since 41.0).  Special thanks to Konstantinos Sirganis.
* Fixed: Simple Send: the text body was being corrupted if the Default Format option was set to "Text".
* Fixed: the help file was not remembering many of its global settings, including the Favorites and Search history (since 46.0).
* Fixed: sometimes failing to detect a SMTP server's authentication methods.


Version 47.0 (October 6th, 2015)
* Added the "Shrink Images" option.  When enabled, HTML images will be automatically reduced to the same size that they are displayed at, thereby slimming the emails, reducing bandwidth usage, and increasing the delivery speed.
* Improved the appearance of icons.  Changed from 8-bit GIF's to higher resolution 32-bit PNG's.  Many icons have been redesigned.
* Tracking: added the "View Time" pie chart to the tracking report.
* Command Line: added support for unicode characters.
* Tracking: report download speed is 78% faster thanks to compression.
* Simple Send: added support for attachment filenames that contain unicode characters.
* GM can now find a local HTML image that has no path information if that file's full path is listed in the Embedded Files List.
* Improved support for latching unicode data from an incoming email and auto-responding with that data:
   * Added the latch_text_unicode() function, which will perform a latch on the incoming email's Text Body and return the result in unicode.
   * Added the header_from_unicode() function which can merge unicode data into a header.
   * Added the html_from_unicode() function which can merge unicode data into the HTML Body.
   * Added the utf8_from_unicode() function which can merge unicode data into the Text Body.
* External HTML Body: now supports a file in unicode or UTF-8, provided that a byte order mark is present.
* Internal HTML Body: now fully supports the UTF-8 byte order mark.  Previously in this situation, unicode characters could be corrupted.
* View Result Set:  improved the global Search tool.  Added the ability to perform search and replace.  Added the ability to specify case sensitive, whole word, and wildcard searches.  Added the ability to search backwards.
* Added support for the APOP authentication method for POP3.
* Numerous improvements to the project backup system.
* Pseudo-Projects and Tracking are now compatible.  Added the "Tracking" label.
* Tracking: Manage Account: added the ability to browse the FTP server for the folder where the reports will be uploaded.
* Make Styles Inline: added support for the "@import" directive.
* Process Remote Email: IMAP Folder column: there is now a drop-down list that is populated with all the folder names on the server.
* The "Lookup Illegal Recipients" tool is now compatible with Simple-Merge mailing lists.  Previously it only worked on databases.
* Extract Addresses From Files: added the "Unallowed User Characters" field.
* Add Recipients: added the "Convert to lower case" option.
* prompt(): added the ability to create a "groupbox" around a group of controls.
* Scheduler: when enabling a task in the table, the next start date will now be calculated automatically, and will appear in the "Next Run" column.
* Simple Send: if the "Import From File" tool is used, images on the Preview tab will now display correctly.
* Proxy Server: added an "Import" button that allows you to import the proxy settings from a project of your choosing.
* Tracking: Download All: added a choice of downloading only the selected campaigns.
* Troubleshoot HTML: now warns if an embedded image is corrupted, or if its extension does not match its actual type.
* Extract Addresses From Files: the file specification now supports unicode characters.
* Basic Template: added a field for changing the main title's font.
* Added the "Verify HTML Links" tool to the Test menu.  Although this tool already existed in the internal HTML editor, the ability to verify links in the External HTML Body is new.
* The "Both" Image Locality will no longer insert the Content-Location if the resulting URL would refer to a non-existent file.  Although it would still work in most email clients, there is no advantage to doing so.
* Simple Send: added the "View MIME" tool.
* Added a tool for importing DKIM/DomainKeys settings from another project.
* Simple Send: Resize Image Attachment: this now supports 32-bit images with an alpha channel.  Previously, the alpha channel would be discarded.
* Auto-Responder Wizard: if the email body is blank, the wizard will now load an appropriate template that demonstrates how to include the original email's body in the auto-response.
* Test Sender Domain: now queries the MX record for the domain, and then the A record for the MX record.  This eliminates both false positives and false negatives.  Some domains have no website, only a mail server, although this is rare.
* HTML Editor: Raw tab: Open From File tool: now supports files with a unicode or UTF-8 byte order mark.
* Send Log: the Failure Summary now lists a brief English description of each error instead of a numeric error code.
* Simple Send: Export To File: the HTML images are not processed before the export is created.  This can wait until an email is sent.
* The mime_convert_to_html() function now supports unicode.
* Scheduled tasks will now obey the "Email Send Log To" feature if there is an error in one of the pre-operation tests.
* Added a Retrieve Account button to the Tracking Login window.
* Send Summary: added the "View Host Stats" tool to the File menu.
* The "Single Send" tool will now report if any of the project settings are invalid before prompting the user to enter an email address.
* Side-Help:  the relative font size is now independent of the windowed help file.  Images now scale to a smaller size, not just text.
* There is now a proper media type for SVG and SVGZ attachments.
* View Send Log: in some cases the log was copied to a temporary file named "TempLog.txt" in the main app folder.  Now this file is given a unique filename, and is located in the user's temporary folder.
* Previously, the "Override EHLO Domain" field had an "Auto-Detect" button.  This has been renamed "Detect Domain", and there is now a "Detect IP" button.  Either should work fine.
* mime_print(): added support for unicode characters in the Text Body.
* When the date_format_regional() function is called from a header, it will now return MIME-encoded unicode characters if necessary.
* Test Sender Domain: the DNS query is now performed in a background thread so that the "Abort" button will be instantly responsive.
* Test Incoming: the server's supported authentication methods are now reported.
* Test DNS/Test SMTP/Test Incoming/Test Sender Domain: the progress window will not be created until 2 seconds after the operation starts.  Since the test usually completes very fast, there is no reason to flash a window on the screen and then immediately remove it.
* Added the db2_get_html() and db2_get_utf8() G-Merge functions.  They fetch unicode data from a secondary database and encode them for merging in the HTML or Text Body.
* Tracking: the HTML report is now kept in a temporary file instead of in-memory.  Graphs are embedded as 8-bit PNG's instead of JPG's.  And the size per recipient has been reduced by 7%.  These measures help ensure that large reports can be displayed without running out of memory.
* Added the %ProjectFilename% environment variable for the Pre-Send and Post-Send batches.
* The db_embed() function is now compatible with the "Auto Image Dimensions" feature.
* HTML editor: the Table Properties tool now appears on the toolbar's table menu.  Previously it only appeared on the HTML editor's context menu.
* HTML editor: Raw: added a "Paste Unmodified" tool.
* External Locality: an image is no longer embedded if it is present on the server and the URL is being completed with a <BASE> tag.
* External Locality: the "cid:" prefix is now inserted if the URL that is completed with a <BASE> tag does not point to an existing file.
* There is now a 2 second pause before performing an immediate retry to the same SMTP server.  This can improve the likelihood of success.
* The Progress Window is now more responsive to clicking the Abort button for an individual thread.
* The number_format() function now allows a string for the first parameter.
* Members Only & Simple-Merge: an error is now reported if there are multiple Recipient Files with mismatched column names.  Previously, senders would be rejected as non-members for no apparent reason.
* Tracking: Manage Account: when you click OK, the FTP settings are now tested before allowing the new settings to be saved to your account.
* Added the "Validate CSS" tool to the context menu of the HTML Body File field.
* Literal branch: added a "Load Test Email" button.
* Basic Template: there is now a checkbox that controls if the background is a different color than the body.
* Campaigns window: added a "Purchase Credits" option to the File menu.
* Added the "Possible?" button next to the Direct Delivery option.
* Side-Help: the topic will now auto-switch when clicking on a tree branch if no control has focus.
* Database Connection String: Browse: if there is already a connection string that specifies a driver, the same driver will be pre-selected on the "Choose Driver" window.
* Convert Forwards To Text: this feature will now also remove all HTML embedded images from the email.
* Added a "Help" button to the Create Table window.
* The "SQL Date Format" field is now hidden when "Hide Advanced Settings" is checked.  The "Automatic" mode works on all databases as far as we know.
* Added a splitter control to the Exclusions branch.
* Fixed: the /q switch was failing to prevent certain error popups.
* Fixed: the "Validate HTML" tool was broken after the W3C made some changes to their website.
* Fixed: some pairs of characters, in certain fonts, were displayed too close together.
* Fixed: a rare but serious problem could cause a window to render incorrectly.
* Fixed: when a scheduled task encounters an error when carrying out the "Email Send Log To" feature, an error window was appearing.  Scheduled tasks are always supposed to fail silently.
* Fixed: Export Pseudo-Project: when the Deliver To MAPI Message Store is empty, the exported value was "(null)" when it should simply be blank.
* Fixed: Sign-Up Wizard: when electing to send an auto-response, the Text Body was being put in ASCII mode causing the auto-response to appear as garbage until GM is restarted.
* Fixed: Incoming Wizards: the protocol was being stored in the last row of the Incoming Source table instead of the first.
* Fixed: the unicode_to_header(), unicode_to_html(), unicode_to_utf8() functions were not working on SQL Server.
* Fixed: Process Remote Email: IMAP Folder column: error if the folder name contains a space.
* Fixed: View Result Set: was unable to store unicode characters to SQL Server.
* Fixed: when opening a project from Windows Explorer, the side-help was blank.
* Fixed: an HTML image with canonicalized characters was not always displaying properly on the Preview Window.
* Fixed: the help configuration file (help10006.gdfd) was being corrupted (since 46.0).
* Fixed: an inability to connect to some POP3 servers if "Secure Authentication" is checked (since 46.0).


Version 46.0 (April 13th, 2015)
* Added the ability to compare two tracking campaigns, side by side in one report.  This is useful for A/B testing.
* Added support for unicode characters in an attachment filename.
* Added the "Side-Help" feature.  This displays the help file in a narrow panel on the right side of the main window.  It will display help for whatever control has input focus.
* Simple-Merge: added support for CSV files that are encoded in UTF-8.  You can now use the same methods that embed unicode database data, namely the unicode_to_utf8(), unicode_to_html(), and unicode_to_header() functions.
* Added support for NTLM authentication for SMTP, POP3, and IMAP4.  This improves security and compatibility with Microsoft IIS, Exchange Server, and other mail servers.
* Numerous improvements to the "Import CSV Data" tool.  Added support for CSV files that are encoded in UTF-8.
* Basic Template: added the ability change the order of the content sections.  Previously it was necessary to manually edit the HTML code.
* Added the "Create Table" tool to the Database menu.
* Basic Template: added the ability to set a texture for the backdrop.
* When an HTML image specifies a relative URL, and there is a <BASE> tag, and Image Locality is External, the URL will be changed to an absolute URL.  This ensures that the image will appear correctly in email clients that do not support <BASE> tags.
* Added a summary of the reasons for failed sends at the bottom of the Send Log and the Send Summary.
* Troubleshoot HTML:  external images are now downloaded, and an error is reported upon failure.
* Scheduled tasks will now obey the "Test HTML Images", "Test DKIM", "Test SMTP Servers", "Test DNS Servers", and "Test Sender Domain" options.  The operation will abort if any test fails.
* Added the mime_print() function, which allows you to print an incoming email.
* Added the "Tracking" option to the Welcome Wizard.
* Added the "Open Project" tool to the File menu of the Tracking Campaigns window.
* View Result Set: the toolbar now has labels under each icon.
* HTML Viewer: View Source: this window now has a menu bar.  Added the "Validate HTML" and "Validate CSS" tools.  Added some hotkeys.
* The maximum number of threads while tracking has increased from 32 to 50.
* Added a "Create Account" button to the window that asks for your tracking credentials.
* When forwarding an email, the Disposition-Notification-To header is now removed first.
* View Result Set: if the system shuts down, the user will now be prompted to save their changes instead of automatically discarding them.
* Preview Window: the Attached Files List now has Copy, Edit, and Preview tool buttons.
* Added a "Test" button for the proxy server.
* Pseudo-projects can now specify a proxy server.
* Added the send_delay_local() and send_delay_utc() functions, which can be used to delay the sending of an individual email.
* Recipient List/Exclusion List/Removal List:  the Import Addresses tool and Drag and Drop now support unicode characters in the filepath and file contents.
* Added the mime_convert_to_html() function, which is useful for including the original email in an HTML auto-response.
* Added the mime_get_text_body_utf8() function, which is useful for including the original email in a text auto-response.
* Tracking: Manage Account: FTP Upload: added a "Test" button, which will verify that the FTP server can be connected to, the credentials are valid, and the folder exists.
* The options on the Tracking menu can now be put on the toolbar.
* Tracking: Download All: the report settings are now obeyed.
* When a G-Merge error occurs, the entire statement is now logged.
* It is now possible to select multiple tracking campaigns and delete them all in one step.
* When an "Invalid variable or database column" error occurs, the error message will show what field the error occurred in.
* Tracking: the "Opens Over Time" graph will not display more time than has elapsed since the start of the campaign.
* The various server testing tools now display a green, yellow, or red status bar above the log.
* The "Simple Send" tool will now report if any SMTP setting is erroneous before proceeding.
* Added the texture_file_to_url() and texture_stock_to_url() G-Merge functions.  These can be used to embed an inline image in CSS or in an <img> tag.
* The date_format_regional() function now supports two new optional parameters that control the date and time format.
* The "Test Incoming Mail Servers" tool now verifies the existence of the IMAP Folder (when a folder name is specified in the "IMAP Folder" column of the Incoming Source table).
* The "Schedule One-Time Task" tool will now report if any of the project settings are invalid.  Better to find out immediately, not when the task runs.
* The "Email Tracking Report" tool now supports SSL, DKIM, and DomainKeys.
* The "View Result Set" tool will now work if a Custom SELECT Statement is specified, and no Table Name is specified.
* To avoid an error, the Delivery Status Notification feature is now ignored if the SMTP server does not support it.
* Added the incoming_get_date() function, which returns the date when the incoming email was sent.
* The HTML Editor's "Verify Links" tool now displays the error code and explanation.
* Simple-Merge: blank and illegal recipients now count as rejections, and count toward the -RecipientBlank- and -RecipientIllegal- variables, just like a database.
* prompt(): it is now possible to put add/delete/move/rename buttons at the bottom of a listbox.
* Minor improvements to the HTML-to-text conversion.
* The "Test Incoming Mail Servers" tool now reports the number of emails in the mail account.
* The server testing tools will now log the authentication method used.
* Added the %EmbeddedDir% variable to the Send Batches, which holds the HTML Embedded Files Directory.
* The "Test HTML Images" feature now reports an error if the URL has no filename.
* The "Test Sender Domain" feature can now be aborted if the DNS server is not responding.
* Extract Addresses From Files:  the destination editbox now supports Undo.
* When using the "Override EHLO Domain" feature and an IP address is specified, the EHLO command will now surround the IP with brackets in order to comply with RFC 2821 4.1.3.
* Change Recipient Address:  when operating on a CSV file, the new column value will be quoted if necessary to ensure the CSV format is not compromised.
* Added the date_current_utc() G-Merge function, which returns the current date/time in UTC.
* Simple Send:  the "Add Attachment" tool now has a hotkey:  F2.
* The "Reading-Confirmation" header now supports more than one email address, although the recipient's email client may not.
* The Preview Limit now goes up to 999,999.
* Behavior change: if "Secure Authentication" is checked, and secure authentication cannot be performed, an error will occur instead of falling back on insecure authentication.  Previously, the user would never know that the password was transmitted insecurely.  To prevent this from breaking your operations, the "Secure Authentication" box will become unchecked when an old project is opened.  You may want to manually enable and test this feature.
* Incoming: the server is now asked which authentication methods it supports.  Previously, GM would try each method until one worked.
* Added the "Template Designer" button to the bottom of the HTML Body/Options branch.
* If there is an error in the To: header, the "Hide Advanced Settings" option is now automatically unchecked so that the To: header will become visible.
* Improved the MIME decoding speed.
* When the Sender is "Same As SMTP User", the SMTP server name is now allowed to be an IP address provided that the SMTP user name is an email address.
* SMTP: CRAM-MD5 authentication is now preferred over LOGIN if both are supported, as it is more secure.
* The "Identity Column" field has been renamed "Primary Key" as this term is more common.
* If an error occurs when changing the Followup Date or Index, the whole operation will abort.
* Behavior change: the Post-Send Script will no longer run if a database error occurs.
* Fixed: the Failure Script's -ErrorResponse- variable was not being populated for delayed retries.
* Fixed: the "Dial-in to Internet" option is now obeyed before the pre-operation tests, not after, since they require Internet access.
* Fixed: the system was not being allowed to shutdown while the Send Summary window was up.
* Fixed: after generating a tracking report, a temporary file was going undeleted.
* Fixed: if the List-Unsubscribe header is "<sender>", and the sender is a compound email address, the List-Unsubscribe header will now only use the simple email address.
* Fixed: the Preview Recipients tool will now ignore the "Test HTML Images" and "Test DKIM" options.
* Fixed: the file_run() function was not working if the process output was redirected to a file with the ">" operator (since 45.0).
* Fixed: if either of the Followup Columns were nonexistent, instead of reporting an error at the beginning of the operation, the entire operation would play out with an error for each recipient.
* Fixed: email addresses with a long top-level domain, such as ".consulting", were being treated as illegal.
* Fixed: the "Test DNS/SMTP Servers Before Sending" features were not logging the error if the test failed.
* Fixed: when both "Members Only" and "Simple-Merge" were enabled, the members list was built from email addresses in all columns, not just the Simple-Merge Recipient Column.
* Fixed: the "Members Only" feature was not being obeyed when the Forward-To-All operation was being launched with the incoming_forward_to_all() function instead of by Processing Mode.
* Fixed: Tracking: if you cancel the Export CSV Data tool, this tool will not work right again until after the report is re-generated.
* Fixed: Tracking: the "Forward Rate" statistic was not counting all forwards.  Also, the first 15 seconds of view time was not affecting the Interest Score.
* Fixed: when tracking is enabled, a strange error could occur if a link contains a G-Merge statement which contains any character that requires URL canonicalization.  Special thanks to Anthony Marchesini.
* Fixed: hang and eventual out of memory crash if the last row of a CSV file has no line-break, and the last column is quoted.
* Fixed: possible crash while running a scheduled Incoming Operation.


Version 45.0 (October 21st, 2014)
* Added support for SOCKS5 proxy servers.  Refer to the new settings on the Servers branch.  By renting a cheap proxy server, you can protect your IP address from blacklisting.
* Added the "Process Messages Only Once" option to the Processing branch.  If checked, an incoming email will be ignored if it was processed previously.  This is useful when processing multipurpose accounts where not all emails are deleted.
* Added the "Schedule One-Time Task" tool.  This allows you to quickly specify a Send or Incoming Operation to be launched in the future automatically.
* Added the ability to email the tracking report.  The File menu of the Tracking Report window now has an "Email To" tool.
* The toolbar now has labels under each icon.
* Added the "Verify Links" tool to the HTML editor.  This will test if all of the HTML Body's hyperlinks go to a valid web page.
* Added the "IMAP Folder" column to the Process Remote Email table.  This allows you to process email in an IMAP4 folder other than the inbox.
* Added the "Country Totals" section to the tracking report.  This lists the number of opens in each country.
* Added support for unicode in the Subject column of the Follow-Ups table.
* Added do...while loops to the G-Merge language.  Unlike a while loop, the condition is tested after the loop body.
* Added the "Run Incoming Script Only Once" option below the Incoming Script.
* Added the "Save Project After Incoming Operation" option to the Incoming branch.
* Added the ability to import and export the list of scheduled tasks.  This is useful when transferring GM to another computer.
* Added the ability to rename and delete a template in the Template Designer's "Open Template" window.
* Added support for external text body files that are in unicode or UTF-8 when using the Follow-Up system.
* The tracking report now shows the number of clicks and click through rate for each Browser and Platform.  Various other minor improvements.
* Added the "Auto-Start" option to the Scheduler's "Options" menu.  Previously there was no easy way to prevent the Scheduler from auto-starting.
* Added the ability to change the filename of the attachments zip file.  Previously it was always "attachments.zip".
* The List-Unsubscribe header now supports G-Merge.
* If the HTML Body contains a <base> tag, this is now used to locate and embed an image.  Previously the <base> tag was ignored, and GM would only find the image if it was specified with a complete URL, or was located in the Embedded Files Directory.  This makes it easier to use a web page for the HTML Body.
* When the "Use Clauses" removal option is checked, it now allows a Removal Operation to support the "Use Custom SELECT Statement" feature.  Previously, the entire database table was searched for removals.  Now, the search can be limited to the records returned by the Custom SELECT Statement.
* The Incoming Summary now reports the number of successful/failed auto-responses, and the number of failed forwards.
* Added the "Opens over time duration" tracking report setting.  Previously this was fixed at 48 hours.
* Added the "Project" button to the Scheduler, which opens the project associated with the selected task.
* Template Designer: when choosing a new color from the Color Picker dialog, the current color is now applied to the template immediately.  Previously, the template would only reflect the change after the dialog closed.
* Added the ability to control if the Scheduler's Close button will terminate the Scheduler, minimize it, or prompt the user for what to do.  Previously, the user was always prompted.
* When choosing Generate Report from the Tracking menu, if the project is not configured for tracking, the user will now be prompted to enter a user name and password.
* Template Designer: a color preview is now displayed for each theme.  It appears to the left of the theme name.
* If the Follow-Up system is enabled, the Test Spam Score tool will now ask the user which follow-up should be tested.
* The "Automatic" SQL Date Format mode now supports Oracle.
* The "Convert Forwards To Text" feature now supports unicode characters.
* Added a shadow effect to the Basic template's main title.  Also, if "Show Caption" is unchecked, the top corners of the main title will be rounded.
* The Send Summary and Send Log will now report how many emails were throttled, and the total time spent throttling.
* Added the "Tab Through Cells" option to the View Result Set window's Options menu.  When enabled, the tab key will advance to the next cell, not the next control.
* Added the "Show Common Tasks" option to the Template Report window's Options menu.
* Statistics from a "Forward To All Recipients" operation are now reported on the Incoming Summary, and are recorded in the -Forwards- and -ForwardsFailed- variables.
* The From: header now allows the "<user>" tag to appear anywhere.  Previously, it was only supported if the From: header was exactly "<user>" and nothing else.
* Added a menu bar to the Tracking Campaigns window.  Added a hotkey for the "Download All" tool, F6.
* The "Test SMTP Servers" tool will now report if any project setting is erroneous before performing the test.
* Added the "Preview Literal Email" tool to the context menu for the Literal Email.  This allows you to see what the email might look like in an email client.
* The "Make Styles Inline" feature now supports tab characters in the selector.
* Added the ability to control the alignment of the Basic template's section titles.
* The "Export Pseudo-Project" tool will now report if any of the project settings are invalid.  Previously it would export the erroneous settings without a complaint, and you would have to deal with the error when you tried to run the pseudo-project.
* Added the imap_move() G-Merge function, which moves the current incoming email into a different IMAP4 folder on the server.
* The Troubleshoot HTML tool now reports if a local image is too large.  Large images will not appear in some email clients.
* Updated the SSL module.  This resolves some important security vulnerabilities, including POODLE.
* Added to the HTML editor the "Normal" stock format, which undoes all of the other stock formats.
* Added the date_format_regional() G-Merge function, which will format a date using the computer's regional language settings, with native names for months and weekdays.
* It is now possible to hide any column in the Tracking Campaigns window.
* A semi-colon can now be used to comment out a line from the Recipient File, Exclusion File, and Process Local Email fields.
* Added the str_compare() G-Merge function, which is useful for avoiding the troublesome < and > characters in HTML.
* The Simple Send window's "Paste Attachment" tool will now remember the JPG Quality setting.
* When dragging and dropping files on a batch, this will now insert the filenames, not the file contents.
* The HTML editor's "Insert Date/Time" tool now uses the Ctrl+Shift+D hotkey, same as editboxes.  The "Move Row Down" tool's hotkey has changed to Ctrl+Shift+J.
* The installer and uninstaller will now close the Scheduler so that a reboot is not necessary.
* The "Test Spam Score" tool now checks if the subject is all upper or lower case.
* The Send Wizard will now automatically set the Exclude Users field to "mailer-daemon,postmaster,noreply,nobody,abuse,remove,unsubscribe".
* Errors in the Post-Send Script are now reported in a popup window.  Previously, the user would only know if an error occurred by looking at the Send Log.
* If DKIM or DomainKeys is used, the 7-bit and 8-bit body encodings are no longer allowed due to a rare incompatibility.
* Some of the log's operation parameters are now displayed as "No/Yes" instead of "0/1".
* The file_run() and file_start() functions now support multiple command lines separated by line-breaks.
* Added the -RecipientBlank- and -RecipientIllegal- variables to the Post-Send Script.
* The "Export Pseudo-Project" tool now exports the database password that is specified by clicking the "Password" button (next to the Connection String field).
* If the database table contains a blank value in the Recipient Column, this now counts as a rejection.
* Added the %RemovalFilepath% environment variable to the batches.  This is the filepath specified in the Log Removals field.
* Added the "Sellin' Melon" theme to the basic template.
* The Analyze Database tool now shows an example of the date format as it appears in SQL.
* Added the "/ns" switch which will prevent the project from being saved after an Incoming Operation finishes.
* If the process runs out of memory, all expired DNS records will be discarded from the cache.  This helps avoid a crash, especially for large Direct Delivery mailings.
* The root tree branches are now larger and bold.
* Send Summary Graph: there are now labels on the right side.
* The Data Source drop-down list is now alphabetized.
* Simple-Send: spaces are now trimmed from the beginning and end of all headers.
* Fixed: when generating a DKIM/DomainKeys keypair, there were extraneous spaces in the "DNS Record Value" field, although they would not cause a problem.
* Fixed: the tracking report was not reporting browsers, platforms, nor average view time if Show Recipients was set to "None".
* Fixed: when aborting a Send, and Send Only To Range is enabled, the reported index of where the operation could be resumed was incorrect.
* Fixed: certain symbolic characters were not supported in database passwords.
* Fixed: rare hang if the process runs out of memory (since 44.1).
* Fixed: the "Use All Adapters" feature was not working as documented.  It was choosing a single adapter for the entire mailing instead of one for each email.
* Fixed: on the Progress Window, rejections were causing the Overall meter value to be too low and the Time Remaining to be too high.  Also, the meter was not updating during the "Waiting For Threads To Finish" phase.  Also, the index of the message ready to be sent was incorrect when the Send Only To Range Of Recipients feature was enabled.
* Fixed: HTML editor: search and replace: if the replacement string contains the search string, an infinite loop could result.
* Fixed: email could be signed with a bad DKIM/DomainKeys signature if there are no attachments, no embedded images, not both a text and HTML body, and the body does not end with a line-break.  Special thanks to Christian Brandizi.
* Fixed: G-Merge in the Sender field was not working (since 41.0).
* Fixed: assigning a value to a LONGCHAR database column was not able to increase the length of the data (since 44.1).


Version 44.1 (June 16th, 2014)
* The Universal Domain Throttle will now periodically discard old throttles in order to lower the memory requirements of a large mailing.
* If a DNS error occurs, and there is an expired record in the cache, the cached record will be used so that the DNS query does not fail.  This is useful for avoiding transient DNS errors, improving the delivery rate on dodgy Internet connections.  An old DNS record is better than no record, since DNS records rarely change.
* The Tracking Campaigns window now displays the number of credits in the account.
* The Simple Send window now has a menu bar.  The Load and Save buttons have been removed to the File menu.
* Basic Template: added the ability to change the main title's font size.
* Added the "color" control to the prompt() function, which allows the user to choose a color.
* Added the date_weekdays_between() function.
* If the process runs out of memory, the DNS caches will now be flushed to free up some memory to hopefully avoid a crash.
* Fixed: the Alt+R hotkey was not working if the tree had focus.
* Fixed: G-Merge comments were not working when following an expression.
* Fixed: the "Make Styles Inline" feature was not tolerating runs of more than one space in a selector.
* Fixed: a DNS error could cause the Universal Domain Throttle feature to be ignored.
* Fixed: when opening the drop-down list of any database column field, if there is a Custom SELECT Statement, the list would only contain the column names in the result set.  Now, all columns in the table will be listed.
* Fixed: there was an unnecessary DNS lookup (per recipient) if Universal Domain Throttle was enabled and no Domain Throttles exist.
* Fixed: possible crash after changing the contents of a string-type database column during a Send Operation (since 6.0).  Special thanks to James Huggins.


Version 44.0 (April 14th, 2014)
* Added the Template Designer tool to the Tools menu.
* Added the ability to automatically upload the tracking report and data file to an FTP server after a specified number of days.  To configure this, choose "Manage Account" from the Tracking menu.
* Added the "Auto Image Dimensions" option to the HTML Body/Options branch.  If checked, the "width" and "height" attributes are added to all <img> tags in the HTML Body.  This simplifies HTML development and improves the load time and layout's consistency.  This feature is enabled by default for new projects, but not for old projects (to prevent a change of behavior).
* Added the "List-Unsubscribe" header to the Headers branch.  Some email clients may show an "Unsubscribe" button if this header is present.  This mitigates complaints and blacklisting.
* Added the "Validate CSS" tool to the HTML editor's Raw tab.  This will verify that there are no syntax errors in your style sheet.
* The per-campaign tracking cost has been reduced from 25 credits to 0.
* The Follow-up feature is now compatible with tracking.
* Added the "Sort By Interest Score" setting to the Report Settings window.  This will sort the recipients on the tracking report by their Interest score, which makes it easy to concentrate your marketing resources on the top prospects.
* Added the "Email Summary To" setting to the Send/Logging branch.  This will email the Send Summary or Incoming Summary to a specified email address after an operation completes.  This is especially useful for scheduled tasks.
* The "View Result Set" window's Search tool now supports unicode characters.
* Added a menu bar to the Scheduler.
* Updated the SSL module.  Numerous bug fixes and security improvements.
* Added the "Test DKIM" option to the Send branch.  This will ensure that DKIM is working correctly before a mailing goes out.
* The "Test Spam Score" tool will now test all relaying SMTP servers for blacklisting.
* Added the html_from_text() G-Merge function.  This will convert plain text into HTML code, with fully functioning hyperlinks.
* Added the mime_convert_to_text() G-Merge function.  This can be used to convert an HTML email to text, presumably before forwarding it, or to make latching easier.
* After creating or editing a scheduled task, if the "Next Run" date has not been specified, the next appropriate time will be chosen automatically.
* The Send Operation now supports multiple email addresses in the same row of a Simple-Merge mailing list.
* Added the ability to change the dimensions of the tracking graphs.
* Numerous improvements to the Simple Send window's Attachments tab.  The "Edit Attachment" tool now supports unicode.
* Added the option to have a one-time scheduled task delete itself after the task runs.
* The "Make Styles Inline" feature now supports descendant selectors, such as "div a { ... }"
* The "Bounce-Back" and "Bounce/Opt-Out" wizards will now ask the user if recipients should be removed immediately, or placed in the Removal List for manual review.
* Added support for the following SQL Server data types: datetimeoffset, sql_variant, time, xml.
* The "Use Custom SELECT Statement" feature no longer prevents "let" assignments from working, and is now supported by most tools.  However, the user must be certain that the Identity Column is selected from the table that is identified in the Table Name field.
* Added the "Insert Date/Time" tool to the HTML editor.
* When a scheduled task encounters a fatal error, the "Notify Operation Errors" feature is now obeyed.
* The "Test SMTP Servers" and "Test Incoming Servers" tools now report the SSL cipher, key size, and version.
* Added the ability to rearrange the order of scheduled tasks.
* Added an introductory window to most of the wizards.
* The HTML editor's "Insert Groupbox" tool will now put the selected text inside the groupbox instead of deleting it.
* Added the ability to comment out a line from the Exclude Users, Exclude Domains, and Include Domains fields.  Put a double slash ("//") at the beginning of the line.
* Various improvements to SMTP error messages.
* Added the "Raw" and "Edit" menus to the External HTML Body's editor.
* The Scheduler will no longer allow the computer to sleep/hibernate if a task is running.
* prompt(): added the "Bar Drawer" control type.
* Added the F5 hotkey for "Refresh" on the Tracking Campaigns window.
* Added the "Customize Toolbar" option to the "View Result Set" window's Options menu.
* All wizards now support the F1 hotkey, which opens the help file.
* The Scheduler's "Open Project" tool will no longer create a new instance if the project is already open, it will bring the existing instance to the foreground.
* Added the "Emails Per Hour" stat to the tracking report.
* Added the "Universal" mode to the SQL Date Format field.
* The "binding" method is no longer used for SQL Server because some columns may not be readable if they are in a certain order.  There is a small performance penalty for this, but it is necessary to work around the buggy behavior of SQL Server that Microsoft is clearly never going to fix.
* When an email is forwarded, the Message-ID header is now changed.  This reduces the likelihood that the email will be considered spam.
* You may now double click on a scheduled task to edit its properties.
* HTML editor: when replacing an image, the new image will have the same width as the old image.  This is important when replacing the placeholder images of a template.
* Added the "Display Bottom Buttons" option to the View Result Set window's Options menu.
* The "Test Spam Score" tool now obeys the adapter settings on the Servers branch.
* The "Troubleshoot HTML" tool now warns if the HTML Body is excessively large.
* The "Domain Throttles" branch has been renamed "Throttles".  The "Pulse" setting has been moved there.
* Redesigned the Default skin.  The old skin was renamed "Air".  Improved the appearance of tables.
* During an Incoming Operation, if a mail server domain name cannot be resolved into an IP address, a popup error would appear and the operation would halt until the user chooses to abort or retry.  Now the retry will be automatic after 30 seconds.  This prevents the operation from grinding to a halt due to a transient DNS problem.
* When GM is launched with a command-line switch, the specified project will no longer appear in the history at the bottom of the File menu.
* The "Check Blacklisting" tool will now reset the DNS cache before making DNS queries so that it reports up-to-date information.
* When using a DOS batch's "Run Batch" tool, the environment variables will now be set just as they would if an operation were running.
* prompt(): the "multiline" property for editboxes can now specify the height of the editbox, in lines.  Previously, multiline editboxes were always as tall as the window would allow.
* When printing a tracking report that uses the "Colorful" theme, the solid-colored panels are now printed as transparent in order to save colored ink.  Also, the "Map" button is not printed.
* The Incoming Log now mentions where the processed email address is located.
* Double clicking on the tree splitter will now set it to the optimal position.
* Added a Help button to the bottom of the Content and Mailing List branches.
* Added the -DeleteSuccesses- and -DeleteFailures- variables to the Post-Incoming Script, although it is rare that deleting an email would fail.
* Added the %ProjectFilepath% environment variable to the DOS batches.
* The Send Log now reports the total number of database rows fetched.
* Lookup Recipients:  pressing Enter is now equivalent to clicking the Search button.
* Fixed: the "Send Prepared Emails" tool was failing to obey the "Copy Failures" feature if Delayed Retries is enabled.
* Fixed: the db2_execute() function was not logging the database error.  Also, it was returning FALSE for all INSERT commands even if they succeeded.
* Fixed: during Send/Incoming/Remove operations, GM was not preventing sleep/hibernate on Vista and later.  The old method only worked on XP/2003.
* Fixed: the file_run() G-Merge function would fail if output is redirected to a file with the ">" operator.
* Fixed: View Result Set: the Search Column tool was not working if no cell had focus.
* Fixed: the "Notify Operation Errors" feature was always using Direct Delivery regardless of the project setting.
* Fixed: error if the URL in an <img> tag specifies a port number.
* Fixed: when connecting to SQL Server, GM was running "SET ANSI_WARNINGS OFF" to prevent errors about data truncation (since 42.0).  However, this was causing problems with some Views.  This option is no longer set.
* Fixed: the "Make Styles Inline" feature was not operating on the <body> tag, and will now skip over @media directives without disruption.
* Fixed: under rare circumstances, when "Retry direct delivery failures indirectly" is unchecked, an indirect delivery could be attempted anyway.
* Fixed: even if Direct Delivery Retries is set to 0, a retry could still be performed.
* Fixed: the Simple Send tool's "Send Another" feature was failing to recreate the HTML editor, causing it to appear black (since 43.0).
* Fixed: the Scheduler was failing to recognize that a task had completed if the "Display Send Summary" option was unchecked, and in some other rare situations.
* Fixed: the "Make Styles Inline" feature was replacing an existing style attribute without preserving its original content.  This could cause a visual glitch in the HTML body.
* Fixed: forwarding no longer fails if DKIM/Domainkeys is enabled.
* Fixed: the "Exclude Domains" field was reporting an error for top-level domains (since 43.0).
* Fixed: GM can now avoid a crash in the FileMaker ODBC driver.  Special thanks to Ed Robinson.
* Fixed: crash when running a List-Serving project as a scheduled task.  Special thanks to Greg White.


Version 43.0 (October 30th, 2013)
* Added a built-in scheduler, which is much easier to use than Windows Task Scheduler.  Tasks run in the background without taking up space on the taskbar.  Their progress can be monitored in the scheduler.
* Major improvements to the "View Result Set" tool:
   * Added support for editing unicode characters in database columns.
   * Added a toolbar.
   * Added the "Column" menu.
   * Added the "Delete Column" tool.
   * Added the ability to sort columns based on numeric values, dates, etc. instead of just alphabetically.
   * Searches can now be performed when there is no Identity Column.
   * For large tables, greatly improved the speed at which the table scrolls.
   * Added a "Revise" button to the search tool's "No occurrences found" window.
   * Fixed: error trying to save a value with an apostrophe or backslash to a binary column.
* The "Test Spam Score" tool can now determine if your emails will fail an SPF check.  This will alert you to a problem that could seriously damage deliverability.
* The "Make Styles Inline" feature now supports style sheets located in an external file or Internet URL.
* Added the "Opens Over Time" graph to the tracking report.
* Improved the detection of soft bounces by examining the "message/delivery-status" attachment.  Previously, some soft bounces were being detected as hard.  This was causing unnecessary removals from the mailing list.
* Improved the inner workings of the Send Progress window.  Lowered CPU usage and improved throughput, especially with a large number of threads.
* Redesigned the project backup system.  Instead of making just 1 backup, now up to 20 are kept.  Added the "Restore project backup" tool to the File menu.
* The Send Progress window now shows the estimated time remaining.
* Improved the cosmetic appearance of the tracking report.
* Minor interface improvements.
* Added to the tracking report a summary of the total number of each type of platform.
* The Simple Merge feature was previously considering any comma, semi-colon, or tab to be a field separator.  This would cause a problem if any field contains a semi-colon in a comma separated file, for example.  Now the field separator is auto-detected from the first line of data, and only that separator is allowed to separate fields.  Also, the vertical bar (|) can now be used as a separator.
* Added to the "Lookup Recipients" tool support for unicode characters.
* Added the "Estimated Opens" column to the Tracking Campaigns window.
* Added the "Insert Opt-Out Link" tool to the HTML editor.
* The Send Operation Wizard now allows the user to configure the Address Book profile, password, and distribution list.
* Added the ability to limit how many times the Incoming Operation is repeated.
* The tracking report now lists the percentage for each browser.
* The HTML editor's toolbar now combines many tools into drop-down menus.
* Added 69 new blacklists to the Check Blacklisting tool.
* Added the "Insert Horizontal Rule" tool to the HTML editor.
* When tracking is enabled, the maximum number of threads has been doubled to 32.  Server upgrades have made a much higher load possible.
* Added support for SSL's "Server Name Indication" feature.
* The "Export Tracking Data" tool can now export the Interest Score.
* The "Log Size Limit" field now also applies to the Incoming Log, not just the Send Log.  This field now supports values with a decimal point.  Also, if the log is truncated, the summary will now appear at the end anyway.
* Added the "Average Interest Score" tracking statistic.
* Added the "Refresh" button to the tracking campaigns window.
* Added to the "Issue SQL Command" tool support for unicode characters.
* Added the "Rename Project" tool to the Welcome Wizard.
* The "Generate Host Stats" and "Log Connection Errors" fields now support the * and ? wildcards so that a different log can be produced for each operation.
* It is now possible to exclude an individual <img> tag from HTML image processing.  Simply specify a "nomodify=1" attribute in the tag.
* Improved the way the tracking report calculates the Interest Score.
* The Locate Mail Server tool now lists the SPF record for the main domain, not just for the mail servers.
* Added a help file guide on how to configure GM to drop emails into the Microsoft IIS Pickup folder.  When GM is installed on a web server, this method is vastly faster because it bypasses SMTP.
* Generating a large tracking report is now much faster.
* All fields that are used to specify a filepath will now support Environment Variables.
* The Troubleshoot HTML tool now warns against using scripts, since they are not supported in most email clients.
* Added the "Edit" button to the bottom of the Suppression List table.
* Added the "System Tools" launcher to the Interface menu.
* Added a "Browse" context option to the Exclude Users, Exclude Domains, and Include Domains fields.
* If the user clicks Abort on the "This is the last chance" window, the Send Summary will no longer appear.
* Security fix: after a failed IMAP4 login attempt, the log was revealing the password.
* HTML editor: pressing enter at the end of an <H1> element will now escape out of the element.
* The default Cursor Type has changed from Keyset Driven to Forward Only.  This reduces memory usage.
* The HTML to text conversion process now supports horizontal rules and definition lists.
* The tree linkage is now only visible when the mouse is over the tree.
* Many more project configuration errors are now caught and reported before an operation runs.
* Added the "Help" option to the Tracking menu.
* The "AddHeaders" field of GMFW.INI now defaults to 1 if absent.  This simplifies the process of configuring GM to drop emails in IIS's Pickup folder.
* Added a "Help" button to the Test Spam Score window.
* The "Test HTML Images" feature will now report information about why an image cannot be downloaded or opened.  It will also report an error if the file is empty.
* Check PTR Record tool: pressing Enter in the External IP Address field will now refresh the results.
* Added the project_filepath() G-Merge function.
* An error is now reported if there are any invalid domains specified in the Exclude Domains or Include Domains fields.
* Send Summary Graph: added the "Pearls" appearance option.
* The third parameter to the str_remove() function is now optional.
* Improved the appearance of the Send Summary's pie chart and banner.
* The "Cut", "Copy", "Paste", and "Undo" icons on the HTML editor toolbar are now hidden by default.  Most users use hotkeys for these tools.
* Added the %ArchiveDir% environment variable for DOS batches, which holds the path of the Archive Emails folder.
* Eliminated an unnecessary RSET command in the SMTP conversation after a fresh connection has been established (slight performance improvement).
* The Incoming Log will now mention how many times the Incoming Operation was repeated.
* Fixed: the Generate Host Stats feature will no longer operate when using the Preview Recipients tool.
* Fixed: when running the Preview Recipients tool, the fatal() function was not being recognized as a valid function.
* Fixed: a few very rare cases related to validating email address and domain syntax.
* Fixed: when GM is minimized and running a Send Operation, certain notification windows could appear briefly.
* Fixed: the "Locate Mail Server" tool was using cached DNS records in some lookups.
* Fixed: the "Test HTML Images" and "Test Sender Domain" features were not obeying the /q switch.  In the event of an error, GM will now terminate silently as expected.
* Fixed: when launching the Find tool in an HTML viewer/editor, and there is selected text, the search string was populated with garbage instead of the selected text.
* Fixed: when forwarding an email, the X-Sender: and X-Receiver: headers are now discarded.  Their presence will cause Visendo SMTP Extender to produce a duplicate email.
* Fixed: the "Errors detected in HTML Body's images" window could fail to appear if the main window is minimized, and the main window would be disabled with no way to close it.
* Fixed: G-Merge was fetching binary columns in MS Access as hex digits.
* Fixed: a small number of emails were being lost if the number of threads was set to more than the operating system supports (around 700 on Windows 7).  Also, the Send Operation could get stuck in the "Waiting for threads to finish" phase.


Version 42.0 (May 13th, 2013)
* Major interface improvements.  Improved all skins.
* Added the "Make Styles Inline" option to the HTML Body/Options branch.  This will convert the style sheet to inline style attributes, which ensures that email will look right in email clients that do not support style sheets.
* Added the "Pause Mailing If Connection Lost" option to the Servers branch.
* Added the "Interest Score" statistic to the tracking report.  This measures the recipient's interest in the email, which can help you concentrate your marketing resources.
* Added the "Open Rate Over Time" graph to the tracking report.  If the open rate falls later in the mailing, this indicates a possible delivery problem.  The Universal Domain Throttle is often beneficial in this situation.
* The "Write Emails To Files" feature now supports multithreading.  This improves performance, especially when using the Universal Domain Throttle.
* Numerous improvements to the conversion process from HTML to plain text.
* Added the "Insert Quotation" tool to the HTML editor.
* Added the "Tracking" menu.
* Added a third import mode to the "Import CSV Data" tool.  This mode will update an existing record, or if not found, create a new record.
* Numerous minor improvements to the "View Result Set" tool.
* Tracking report: the number of Estimated Opens is now a more accurate calculation.  The old method of estimation was too low.
* Added the ability to control which types of failures are included by the "Append Failures" feature.  For example, you may want to exclude non-permanent failures, because these can be retried at a later time.
* The HTML search tool now supports unicode characters.
* Added to the tracking report a summary of the total number of each type of browser.  This can be disabled on the Report Settings window.
* Change Recipient Address tool: large performance improvement when using a database.
* Added support for ODBC drivers that do not support ODBC 2.0 or later.
* Added a "View Log" button to the Incoming Progress Window while waiting for the next cycle.
* DNS MX records are now sorted by priority.  Previously, this only occurred when "Use O.S. for DNS" was unchecked.  This improves the speed of Direct Delivery.
* Tracking report: the Link Tracking table now includes a percentage of the number of opens that clicked on the link.
* If the "Archive Emails" or "Write Email To Files" folder does not already exist, GM will now offer to create it.
* Added the mime_content() G-Merge function, which returns the text content of both the HTML and Text bodies.  This is useful for searching an incoming email for a text substring.
* The Send Operation Wizard now allows the user to configure the Universal Domain Throttle, which is important for improving delivery rates.
* The bounce and opt-out wizards will now allow the user to enable Fast Removal mode.
* The Exclude Domains and Include Domains fields now support an external file that contains the domains.  Simply list the filepath, inside quotes.
* Simple Send: resizing an image attachment is no longer restricted to a smaller size.  Also, a popup notice window will appear while the resize is being performed.
* The Results Editor will now confirm canceling changes when the only changes are the addition of new rows.
* Eliminated the SQL Server error "String or binary data would be truncated".  Assignments to a string column are now truncated automatically.
* If there is any problem with initializing ODBC, the "Use Database" box is no longer disabled.  Instead, when attempting to open a database, an error with valuable diagnostic information is reported.
* Simple Send: the "Paste Attachment" tool now supports unicode characters.
* Added the http_post() and write_filepath() G-Merge functions.  These can be used in the Success Script to post emails to a Google Apps Engine servlet.
* Added to the tracking report the Mailing Duration statistic, which is how long it took to send all tracked emails.
* Added a help file guide on sending SMS text messages.  Added instructions for registering a PostgreSQL database.  The help file guide on Task Scheduler has been updated for Windows 7.
* Remove tool: reduced memory usage and improved performance.
* The "Test Spam Score" tool can now be aborted.  This is important if a DNSBL is not responding.
* Added the "CountRecipients" label for pseudo-projects.  When enabled, this counts the size of the mailing list before any emails are sent so that the Progress Window can display the overall operation progress meter.  While running a pseudo-project, the taskbar button will now show the number of emails sent (if CountRecipients is enabled).
* The HTML editor's "Insert Groupbox" tool will now prompt the user to specify the title and style.
* HTML editor: added the "Stock Format" sub-menu.
* Added the str_remove_line_last(), hash_md5(), and hash_sha256() G-Merge functions.
* The "Troubleshoot HTML" tool now reports how to properly embed a NCHAR or NVARCHAR database column into the HTML body.
* The Sign-up Wizard now offers a pre-written template for the confirmation auto-response.
* The "Remove" Processing Mode: the log's "final list of processed recipients" now shows the removal status of each recipient.  Also, the log now shows the number of records removed, and if the recipient was already removed.  Also, the Incoming Summary now shows the total number of recipients that were not found, and those already removed.
* Improved the way the Results Editor handles errors when saving changes or new rows.
* Simple Send: the Attachment Viewer will now display an .EML or .MSG file as an email instead of as raw MIME code.
* The "Export Pseudo-Project" tool will now encrypt all passwords.  This fixes an important security flaw, however only version 42.0 and later will be able to decrypt the password.
* The Unicode Character Map now uses narrow cells if neither the hex nor decimal code is displayed.
* After clicking a checkbox, input focus is now given to the next editbox, if appropriate.
* When "Repeat Incoming Operation" and "Limit Number of Messages Processed" are both checked, and the email account is over the limit, Gammadyne Mailer will immediately reconnect and process more emails.  This behavior can now be changed by right clicking on the "Limit Number of Messages Processed" checkbox and checking "Don't reconnect if more".
* Improved support for non-English keyboards.
* If an "out of memory" error occurs while processing Exclusions (for both Send and Incoming Operations), it is now handled more gracefully, hopefully avoiding a crash.
* Added the "Open Database File" tool to the context menu of the Connection String field.
* Added the "Validate Table" tool to the Suppression Lists table.
* After product activation, the user is now given the opportunity to download and install a free upgrade to the latest version.
* The list of excluded addresses is no longer logged to the Send Log.  This list can be very long.  Only the total number is now logged.
* Added the project_name() G-Merge function.
* The Spell Checker for the HTML editor's Raw tab will now ignore G-Merge statements.
* Added a "Help" option to the bottom of the Test menu.
* The "Locate Mail Server" tool is now tolerant of spaces before and after the domain.
* Added Copy/Save/Print buttons to the bottom of the "Troubleshoot HTML" window.
* The default Database Query Timeout has increased from 20 to 60 seconds to better accommodate large mailing lists.
* The Direct Delivery option is no longer disabled by the Identical Send Mode.  Instead, an error message will appear.
* While the suppression lists are being loaded, a progress meter will now show the progress.
* Tracking report: Link Totals: where the number of clicks are the same, the URL's are now alphabetized.
* The last parameter to the str_substring() G-Merge function is now optional.
* An error is now reported if the Log Size Limit is 0.
* The "Add to Database" and "Update/Add to Database" Incoming Processing Modes are no longer disabled in the trial.
* Fixed: the Create New Project window was not remembering the "Balloon Help Disabled" option.
* Fixed: Preview Window: when sending to a single recipient and there is an error, the Send Summary was not appearing under certain circumstances.
* Fixed: there is now a proper error message if both the Tracking and Follow-Up systems are enabled.
* Fixed: the "Test Spam Score" tool was penalizing for an invalid hyperlink if the URL is terminated by a non-breaking space (ASCII code 160).
* Fixed: the Results Editor's "Create Column" tool was unable to add date columns to MS SQL Server.
* Fixed: the Progress Window's overall progress meter was not being updated when sending previewed messages.
* Fixed: the HTML validator tool was broken after w3.org began requiring a User-Agent header.
* Fixed: fetching some types of unicode columns out of order was failing for some databases.
* Fixed: rare crash when terminating.
* Fixed: small memory leak when Direct Delivery is enabled.  Could possibly cause an "Out of Memory" crash for a very large mailing.
* Fixed: possible "Invalid column number" error when trying to use an ODBC driver that does not support ODBC 3.x.


Version 41.0 (November 5th, 2012)
* Added full support for editing 16-bit unicode characters in the headers and Text Body in the project, Preview Window, and Simple Send window.  Previously only 8-bit ASCII characters were supported.  Unfortunately, this is a rare change that breaks forward compatibility.  If you save a project with 41.0, then downgrade to an earlier version, the headers and Text Body will mangle all non-ASCII characters.
* Added support for MD5/SHA256 Suppression Lists (located on the Exclusions branch).
* Added the "Check Spam Score" tool.  This will analyze the project's settings and email body for possible problems that could cause the email to be blocked by a spam filter.
* Redesigned the Welcome Wizard.
* Added the "Content" branch.  The "Headers", "Text Body", "HTML Body", and "Attachments" branches are now under this branch.
* Added the "Mailing List" branch.  The "Database", "Recipients", and "Remove" branches are now under this branch.
* Added support for HTML images that have an "https://" URL (SSL over HTTP).
* Added the "Insert Groupbox" tool to the HTML editor.
* Numerous improvements to the HTML editor's Unicode Character Map.
* Numerous improvements to the Simple Send window's View Attachments tool.
* Added the "Create Column" tool to the View Result Set window.
* Added a "View Log" button to the Send Progress Window.
* The "Write Email To Files" delivery mode now supports Pulse, Domain Throttles, and the Universal Domain Throttle.
* The "Write Email To MAPI Folder" delivery mode now supports Domain Throttles and the Universal Domain Throttle.  Pulse was already supported in 40.0.
* Added the "Confirm discard" and "Discard after single send" options to the Preview Window.
* Added the ability to resize an image attachment on the Simple Send window.
* Added the "Database Setup" wizard.
* Added the ability to edit the To: header on the Preview Window.
* Added the "Convert Case" option to the Import Addresses tool.
* Added the "Test" menu, and moved some options there from the Tools menu.
* Added the encode_header() and header_to_html() G-Merge functions.
* Added new G-Merge date format codes that use the computer's regional settings.  "~" specifies the regional date.  "@" specifies the regional time.  "~@" specifies the regional date/time.
* Reduced memory usage.  Also, if the process does run out of memory, some non-essential memory is freed up.  This should eliminate most "Out of memory" crashes.  If it does not, you most likely need to reduce the number of Threads or uncheck "Eliminate Duplicate Recipients".
* The "Exclude Users", "Exclude Domains", and "Include Domains" fields now support multiple lines.
* The Domain Aliases field is no longer limited to pairs of aliases.  Any number of aliases can be specified.
* Added the "Import CSV Data" tool to the Database menu.
* In the event of a database error, if there are multiple error codes, they are now all reported.  Previously, only the first error code was reported.
* Various tools will now immediately report an error if the database is read-only.  Previously, no error would be reported until the tool actually tried to modify the database.
* The "No recipients qualified" error will now advise the user to double check the Recipient Column if no email addresses were found in it.  This works with both database and Simple-Merge mailing lists.
* The "Build Text Body From HTML" feature now always generates the Text Body in UTF-8.  There is simply no reason to obey the Text Body Character Set setting - nothing good can come of it.  UTF-8 will perfectly duplicate all unicode characters.  All email clients support UTF-8.
* Improved the Remove Summary window.  It also now reports the total number of successful removals and total number of recipients already removed.
* The "Extract Text From HTML" tool now extracts unicode characters.  Added the "Extract Text" button to the HTML Body/Options branch.
* Merged the Remove/Locations branch into the Remove/Options branch.
* The email_send() function now supports multiple email addresses in the 'to' parameter.
* The Address Book Import Mode now defaults to "Extended Information", and is hidden if "Hide Advanced Settings" is checked.
* Added a progress window when deleting multiple rows on the View Result Set window.
* When an External Text Body is in unicode, the Character Set setting is now ignored, and the Text Body is encoded in UTF-8.
* Numerous improvements to the help file.
* When performing a Send Operation from the command line, the "Save Project Before Sending" and "Save Project After Sending" settings are now ignored.  Otherwise, using an override switch (such as /from) will overwrite the project setting.
* The "Write Emails To Files" feature is now careful to never overwrite a file, even if GMFW.INI contains an already-used file index.
* All responses from the tracking server now include a "Content-Type" header.  This reduces the chance of the tracking service being blocked by a firewall.
* When an "Out of Memory" error occurs during a Send Operation, the user is now advised to reduce the number of threads.
* The Success File, Failure File, and Rejection File will now allow other processes to read (but not write) from the files during a Send Operation.  Previously, these files were completely locked.
* The "Send Preprepared Emails" tool will no longer treat files with no To: header as a rejected email.  The file will simply be ignored.
* The "Verify All Addresses" tool now reports what mailing list it is going to verify.  Added a "Help" button.  Minor improvements to the log.
* All retry features are now grouped together on the Delivery branch.  The "Retry Direct Delivery Failures Locally" option has been renamed "Retry Direct Delivery Failures Indirectly".
* Changed the name of the "Change Email Address" tool to "Change Recipient Address".
* Removed the "Headers Character Set" and "Allow Extended Characters In Header" settings.  They are no longer needed now that headers can be edited in unicode characters.  Non-ASCII characters are now always encoded in UTF-8.
* Fixed: after editing the Custom Headers, the project would report that it had changed, even if no changes were made.
* Fixed: the Incoming Log field was not supporting wildcards as documented.
* Fixed: the Preview Removal tool was always reporting 0 for the number of database records found.
* Fixed: when previewing a Send Operation, the Send Summary Graph could fail to include data from the last minute.
* Fixed: browsing for a new database Connection String was not causing the existing database connection to be closed.
* Fixed: the database password was being revealed if there was an error opening a database connection string.
* Fixed: if the Text Body was unicode, after tracking ends, all future emails would send a Text Body without converting it to 8-bit characters.
* Fixed: the Specific Sender field was not extracting the simple email address as documented.  This could potentially result in SMTP error 4570.
* Fixed: nonsensical error when clicking the "Generate Report" button without first selecting a tracking campaign.
* Fixed: the View Result Set window could possibly disappear after deleting a huge number of rows.
* Fixed: the Single Send tool was not remembering past entries in the drop-down list (since 40.0).
* Fixed: the Simple Send tool was omitting the Reply-To: header.
* Fixed: the Single Send tool was not supporting multiple email addresses separated by commas as documented.
* Fixed: the HTML Body toolbar was not saving its customizations.
* Fixed: the Check Blacklisting tool was using dnsbl.sorbs.net.  However, this blacklist contains all dynamically assigned IP addresses.  The correct blacklist is spam.dnsbl.sorbs.net.
* Fixed: MAPI delivery error when "Use Message Store" is unchecked.
* Fixed: with the Send Log disabled, the Send Summary was not including a breakdown of rejections, and the "Generate Host Stats" feature was not listing the correct number of rejections.
* Fixed: email delivery could fail with error 4570 if the Sender contains MIME header encoded words.
* Fixed: Direct Delivery was using SSL if the project had it enabled, even though the two are incompatible.


Version 40.0 (June 4th, 2012)
* Redesigned the Send Summary window.  It now shows a pie chart of success, failures, and rejections.  It also shows a total for each type of rejection.
* Added the "Add Record" tool to the Database menu.
* Added to the "Lookup Recipients" tool the ability to search a specific column.
* Added the "Send Delayed Retries" button to the bottom of the Send/Delivery branch.  This is useful when a Send Operation was aborted before all Delayed Retries were completed.
* Added to the "Locate Mail Server" tool a report of the SPF record for each mail server.
* DKIM and DomainKeys are now fully compatible with Amazon SES and Yahoo.  Special thanks to Nicky Christov for all his help.
* Numerous minor interface improvements.  Improved the Default skin.
* Added a menu bar to the Preview Window.
* The "View Result Set" tool now allows you to select multiple rows and delete them all in one step.
* Delayed Retries will now use the same networking adapter that was used for the original attempt.  This is important for getting past greylisting.
* The HTML editor will now canonicalize character codes 128-255 to help ensure that they appear properly in the receiving email client.
* All header fields will now display characters in the project specified "Header Character Set".  Likewise for the "Preview" and "Simple Send" windows.
* Added the "Prevent Duplicates" option to the "Import Addresses" tool.
* The "Email Send Log" feature will now send the log as a zipped attachment if it is larger than 1 megabyte.
* The "Write Email To MAPI Folder" delivery mode now supports the "Pulse" throttle.
* Improved the CPU and memory efficiency of processing G-Merge.
* Added the "Test Sender Domain" option to the Send branch.  If checked, before a Send Operation starts, the user is warned if the sender domain does not resolve to an IP address, since this will cause most email to be treated as spam.
* Added the "Test HTML Images" option to the Send branch.  If checked, before a Send Operation starts, the user is warned if there are any problems with images referenced by the HTML Body.
* The Text Body's "Line Length" feature now works properly with UTF-7 encoding.  Previously, each UTF-7 character counted as 3 or 4 characters towards the Line Length.
* Added a "View Source" tool to the Tracking Report.
* Behavior change: the "Build Text Body from HTML" feature will now obey the Text Body's "Character Set" setting.  And if this is set to "UTF-7" or "UTF-8", the conversion will automatically encode the Text Body accordingly.  "UTF-8" is recommended because it offers the best chance that all characters will appear correctly.
* The "Extract Text From HTML" tool will now take both the system codepage and the HTML Body's character set into account.  This ensures that characters are mapped accurately between the HTML and text.
* Added the "Duplicate Row" tool to the "View Result Set" window.
* Improved the quality and amount of diagnostic information in the event of an SMTP, DNS, or SSL error.
* In the "Extract Addresses From Files" tool, the "Convert to lower case" option has changed to a combobox with an "upper case" option.
* The Tracking System will now detect if the Identity Column does not contain a unique value for each row.  The user is then warned that they are going to waste their tracking credits, and given a chance to abort the mailing.
* Header fields were previously limited to 980 characters.  They now are limited to 1 MB so that they can hold lots of G-Merge code (in particular, a long switch() function).
* Added the "Show Summary" option to the Tracking Report Settings window.
* The "Expiration Date", "Only Send When Before", and "Wait Until" fields now have an A.M./P.M. button (unless the computer's regional settings indicate that 24-hour time is used).  It is still okay to use 24-hour time as long as the button is in A.M. mode.
* The "Extract Addresses From Files" tool is now much less likely to run out of memory when extracting a huge number of email addresses.
* The "Simple Send" tool will now remember the Character Set setting.
* The Tracking Report's "Save Report" tool will now save the original HTML code, not the reformatted HTML code produced by Internet Explorer.
* The "text/x-aol" Content-Type is no longer used for AOL recipients due to a conflict with Amazon SES.  Special thanks to Nicky Christov.
* Added to the mime_strip_attachments() G-Merge function an optional second parameter that specifies a filename extension.  Only attachments with the specified extension will be stripped.
* Added the "Insert Variable" and "Run Batch" buttons to the bottom of the Pre-Send Batch and Post-Send Batch.
* Added the "/va" command line switch, which launches the "Verify All Addresses" tool.
* During MAPI email sending, the progress window is now updated much better.
* Improved the CPU efficiency of detecting bounce backs.
* When data cannot be sent to the SMTP server, the error message now specifies if this was due to the connection being lost.
* Added 3 blacklists to the Check Blacklisting tool.
* The default Universal Domain Throttle is now 1 email every 12 seconds.  Servers are becoming more restrictive about the volume of email they are willing to receive.
* Upon launching an Incoming Operation, if the Processing Mode is "Remove", any problem with the Recipient File field is now reported immediately.
* The "Analyze Database" tool will no longer show the database password in the connection string.
* The "Adapter Name" setting is now stored as text instead of as a physical index because this is more reliable.  The "AdapterIndex" pseudo-project field has been replaced by "AdapterName".
* The "Repeat Incoming Operation" field is now measured in minutes instead of seconds.
* Added a "Tutorial" button to the bottom of the first-time greeting window.  Added a "Tutorial" option to the Help menu.  These will both open the help file's tutorial.
* The "Locate Mail Server" tool's Test SMTP button will no longer check for Relaying Denied, since this check will always fail.
* Renamed the "Include Attachments" setting to "Attach Original Attachments".
* Added a graphical banner to the top of the Send Preprepared Emails window.
* Moved the "Override EHLO Domain" setting to the Send/Delivery branch.  Moved the "Save Project Before Sending", "Save Project After Sending", "Test SMTP Servers Before Sending", and "Test DNS Servers Before Sending" settings to the Send branch.
* The "Delete Delayed Retries" tool has moved from the Tools menu to a button at the bottom of the Send/Delivery branch.
* The "Send Summary" and "Wait Until" windows will now obey the project's Default Date/Time Format fields.
* Fixed: the "Save project after sending" option is now ignored if the project has never been saved before.  This prevents the "Save Project As" dialog from appearing.
* Fixed: the Simple Send tool was not obeying the "Word Wrap" setting.
* Fixed: the Connection String Password window was not allowing the user to completely delete the password.
* Fixed: when the "Check for update" tool finds a new version, the window that offers to download it had no buttons.
* Fixed: when creating a new project, the new project would keep the stored Database Connection String password from the previous project.
* Fixed: when using POP3 authentication for SMTP, authentication is only performed once every 9 minutes (since 36.3).  This was true even if authentication fails.  Now the 9 minute period starts only if authentication is successful.
* Fixed: for MySQL, storing a string containing a backslash to a column would produce a database error.
* Fixed: memory leak when an Incoming Operation forwards email.  Special thanks to Martin Haberfellner for discovering this.
* Fixed: the "View Result Set" tool was displaying a negative 32-bit integer as a large positive value (-1 would appear as 4294967295) (since 38.1).
* Fixed: possible "out of memory" error or crash during a Send Operation when using a large number of HTML images with unique filenames.


Version 39.0 (November 21st, 2011)
* Major interface improvements.  The overall look and feel has improved significantly.  For details, go to the Interface menu > Help - Interface Menu > Table of Contents > Miscellaneous > Revision History.
* The tracking system can now track how long the recipient viewed the email.
* Added the ability to send emails to an Address Book Distribution List.
* Added to the tracking report a button for each recipient that brings up their approximate location in Google Maps.
* Added to the HTML editor's character map window the ability to filter out certain unicode subsets.  Numerous other minor improvements.
* Added the "Process G-Merge Inside Attachments" checkbox to the Attachments branch.
* Added an "Overall" progress meter to the Progress Window.  This shows how much of the Send Operation has completed.
* Added the "Save Project After Sending" checkbox to the Details branch.  This is useful when "Add Successfully Sent Recipients to Exclusion List" is checked.
* Added the "Automatically Parse Images" checkbox to the HTML Body/Options branch.  If the HTML Body has no embedded images, or they all refer to an Internet URL, you can uncheck this box to improve performance.  Automatic parsing was first implemented in 33.0 but could not be disabled.
* Added the "Attach Original Email" checkbox to the Auto-Responding section of the Remailing branch.
* Added the ability to specify the Profile name and password when using the System Address Book for a mailing list.  Improved performance and reduced memory usage.
* Added to the "Notify Operation Errors" field support for multiple email addresses.
* Added to the Simple Send window the ability to change the Content-Type of an attachment.
* Added the "Move to Sent Items" option for the "Write Email To MAPI Folder" feature.
* Added to the HTML editor's "Paste and canonicalize" tool support for unicode (on the "Raw" tab).  Also, the regular "Paste" tool will no longer canonicalize extended ASCII characters (128-255) unless they have been translated by the system to a unicode character.
* Added the get_attachment_extension() G-Merge function.
* Added a tracking report setting that controls if the total link clicks appear on the report.
* Behavior change to the "Auto-Responses" setting on the Criteria branch.  An email is no longer considered an auto-response if it is also a bounce-back.  Some bounces do have the "Auto-Submitted" header, but they need to be treated as bounces and not auto-replies.  Previously, certain bounces could go unprocessed because the "Auto-Responses" setting was causing them to be ignored.
* Behavior change to the "Build Text Body From HTML" setting.  If the Text Body's Character Set is unspecified, the conversion will now support unicode characters.  The converted Text Body will be in UTF-8 encoding.  This ensures that non-ASCII characters will have the same appearance in the generated Text Body.
* Numerous improvements to the wizards.  Added support for specifying a mailing list in CSV format.
* Improved recognition of bounce-backs.
* Redesigned the "Extract Addresses" window.
* The "Allow Extended Characters In Header" box is now unchecked by default for new projects.  This is because RFC-822 specifies that MIME headers use the US-ASCII character set, which only defines codes 0-127.  The appearance of codes 128-255 is undefined.  Therefore, to ensure that headers appear correctly, this box should be unchecked.
* When a header is encoded because it contains extended ASCII characters, and no character set is specified, instead of using the Western European character set by default, the user's system localization settings are obeyed.
* The "Import Addresses" tool now has its own dialog instead of going straight into an "Open File" dialog.
* Added an "Import Addresses" option to the context menu for the Recipient List and Exclusion List.  Also, when dropping files on these fields, the email addresses in the files will be extracted and converted to lower case.  Previously, the entire file was inserted as-is.
* The Incoming Summary now mentions the number of emails that were forwarded.  Also, this window no longer reuses its last position on the screen.  Instead, it will calculate the optimal size and position based on its contents.
* Send Summary Graph: the context menu now refers to the datasets as "Successes" and "Failures" instead of "Dataset 0" and "Dataset 1".
* Behavior change to the convert_to_html() function.  It now converts line breaks to "<br>" tags.  Without this, multiline text will all appear on one line.
* The first time the user pastes unicode into a header, it is explained that unicode requires encoding to be compatible with email.
* The Text Body's "Line Length" feature now works properly with UTF-8 encoding.  Previously, each UTF-8 character counted as 2 or 3 characters towards the Line Length.
* The SMTP server is now given double the timeout period to respond to the end of the email.  This is important because the server may take a long time testing the email for spam, such as when it is querying an unresponsive DNS blacklist.
* All UTF-7 and UTF-8 conversion now takes the system codepage into account instead of assuming the Western European codepage.
* When an Incoming Operation builds the -Body- variable, it can now detect the HTML character set from the HTML itself without relying on a MIME header.
* The Preview Window will now show the Text Body in the proper character set.
* The "Locate Mail Server" tool now reports the domain's ASCII canonicalization for domains that contain extended ASCII characters, such as Bücher.ch.
* Added a graphical banner across the top of the Test Send and Single Send tools.
* Increased the maximum for the "Log Size Limit" setting from 2,000 to 100,000.
* Opening the drop-down list in the Value column of the Clauses table will now examine the first 10,000 records of the database instead of the first 1,000.  Improved performance.
* Cleaned up the list of character sets.
* GMCOM.DLL now includes some troubleshooting information in the error message if GM is not activated.
* Fixed: when a server greeting error occurred, the transcript was being unnecessarily logged.
* Fixed: the latch_html_unicode_until() function was only working right with UTF-7 and UTF-8 encoding.
* Fixed: the tray context menu was not responding to keystrokes, and not disappearing when the user clicks away (since 38.0).
* Fixed: the file_append() and csv_append() functions could fail or experience long delays when used by many threads in the Success/Failure scripts.
* Fixed: when "Write Email To Files" or "Write Email To MAPI Folder" is checked, an error was occurring if no SMTP server is specified, even though these features do not require an SMTP server.
* Fixed: changing the "HTML Character Set" setting was not taking effect immediately on the HTML editor's "Raw" tab.
* Fixed: the Simple Send window's Paste Attachment tool was failing to convert 32-bit images to GIF.
* Fixed: address book data: a backslash was being inserted in front of quote marks.
* Fixed: under certain circumstances it was possible that an Incoming Operation could report a negative number of recipients processed (since 38.0).
* Fixed: in G-Merge, if a "let" statement assigns a value to an unknown variable, no error message was being logged (but only when not using a database).
* Fixed: the HTML editor's "Paste Plain Text" tool was not working right for multiline text.  Also, this tool will now convert spaces at the beginning of a line to non-breakable spaces.
* Fixed: under rare circumstances, it was possible for a database error to crash GM.
* Fixed: the "Include Attachments" option for auto-responding could mistakenly include the attachments of previously received emails.  Also, this feature will now preserve the character set from the original attachment.
* Fixed: the Retail Edition's GMCOM.DLL was mistakenly looking for an activation certificate (since 38.1).
* Fixed: the "green scrollbar" bug.  After a fresh install, the default skin was not being loaded, causing a fallback to defaults that were never intended to be used.


Version 38.1 (July 11th, 2011)
* Added the "Send Preprepared Emails" tool.  This delivers all the pre-built email files located in a directory.
* Added the "Generate Host Stats" option to the Logging branch.  This generates a log of information about each domain to which email was delivered, including successes, failures, rejections, and server error messages.
* Added support for binary database columns.
* Added the db_embed() G-Merge function.  This will embed an image into the HTML body.  The data for the image comes from a database column.
* Added to the Send Summary the total number of emails that were tracked.
* Added a graphical banner across the top of the Add Recipients tool.
* The "Extract Addresses From Files" tool now supports drag & drop into the file list.  Also, the Browse feature was not working right when multiple files were selected.
* The Incoming Log now shows if each removed recipient was found or not.
* The "Single Send Tool" now sets focus to the row of the Recipient Column, since this is the one column that must be filled in.
* The "Send Messages" and "Process Incoming Mail" options are now at the top of the Tools menu since they are Gammadyne Mailer's core features.
* The Remove tool and Incoming Summary now report a separate statistic for the number of recipients that were removed, and the number of records that were affected.
* The Universal Domain Throttle fields now accept 5 digits instead of 4.
* Fixed: the Failure Script's -ErrorResponse- variable was not being populated when the error occurs immediately in the server greeting.
* Fixed: when using a CC: or BCC:, and Indirect Delivery, and the "Follow-Up" or "Archive Emails" features, these features were executing once per recipient.  This causes the "Follow-Up" feature to skip a follow-up, and the "Archive Emails" feature to create a duplicate.
* Fixed: calling incoming_forward() after calling incoming_autorespond() could potentially produce the error "incoming_forward() only allowed in Incoming Script".
* Fixed: after using the Simple Send Tool, then clicking "Send Another", the message body was being erased.  Also, a second "Add Recipient" button was being added to the headers.
* Fixed: a window caption icon could have a flawed appearance on Aero (since 38.0).
* Fixed: after switching from the HTML editor's Edit tab to another tab and then back, the editor would no longer respond to keystrokes (since 38.0).
* Fixed: the Wait Until, Expiration Date, and Only Send When Before features were incorrectly reporting an error for month-first locales (since 38.0).
* Fixed: DomainKeys and DKIM were broken when support for Internationalized Domain Names was added.  It appears that the IdnToAscii() Windows API function has a bug (since 38.0).


Version 38.0 (May 31st, 2011)
* Major interface improvements, too many to list.  Added support for Aero Glass (Vista/2008/7).  Improved appearance, layout, margins, skins.
* Added the "Follow-Up System".  This allows you to send a series of follow-up emails to recipients.  Previously this was only possible with cumbersome scripting.
* Added a wizard for processing bounces and opt-outs in one email account.  This is now the recommended best practice because it simplifies list management.  Maintaining a bounce count is now discouraged because it increases the risk of blacklisting.
* Improved the appearance of the tracking report.
* Added support for Internationalized Domain Names (IDN), such as Bücher.ch, in compliance with RFC-3490.
* Added the "Report Settings" tool to the Tracking Report Window.  This allows the user to customize the visual appearance of the report.  The "Report Opens Only" setting has been moved from the Send branch to this window.
* Numerous improvements to the "Add Recipients" tool.
* Added the "Archive Emails" field to the Logging branch.  When enabled, a copy of each successfully sent email is saved to the specified directory.
* Added the "Automatic" mode for the SQL Date Format setting.  This will automatically detect the proper date format from the ODBC driver.
* Added the "Append Failures To Removal List" option to the Logging branch.
* Added the ability to set an automatic resume time when pausing a Send Operation.
* Numerous improvements to the Send Summary Graph.
* Added the "Password" button to the database Connection String field.  This allows the user to enter the database password separate from the connection string.  The password will not be visible to the user, and will be stored in the project with encryption.  Whenever the connection string is passed to the ODBC driver, the password is automatically added to it.
* Added a graphical banner across the top of the wizard windows and various tools.
* Added the incoming_is_ooo() G-Merge function, which can detect if an incoming email is an "Out of Office" auto-reply.
* Added to the "Test SMTP Server" tool the ability to detect the "Relaying Denied" problem.
* Added the "List Properties" tool to the HTML editor.
* Added the ability to change the left/right indent in the HTML editor's "Text Format" tool.
* Added the "Preview Messages" checkbox to the Send Operation confirmation window.  This gives the user an opportunity to display the Preview Window even though the Send Mode is set to "No Preview".
* Added the "Zip Attachments" option to the Simple Send tool.
* Added the file_archive() G-Merge function, which can be used to save a copy of every email that is processed.
* Added the mapi_move() G-Merge function, which can be used to move an email to a different folder when processing MAPI mail.
* Added the str_chop_after() and str_chop_at() G-Merge functions.
* Added a statistic on the number of successful sends and permanent failures to the Progress Window while delayed retries are being performed.
* Added support for pasting unicode into the HTML editor's Raw editbox.  Added support for pasting unicode with the "Paste Plain Text" tool in the WYSIWYG HTML editor.
* Added a "Preview" button to the Headers Character Set, Text Body Character Set, and HTML Character Set fields.
* Added a high resolution shell icon for Vista/2008/7.
* Added the -Forwards- and -ForwardsFailed- variables to the Post-Incoming Script.
* Added a drop-down list of common port numbers to the "SMTP Port" field and the "Port" column of the Incoming Servers Table.
* Added a guide in the help file on using Outlook Distribution Lists.
* Added Copy/Print/Save buttons to the bottom of the "Analyze Database" report.
* Added a default domain throttle for Hotmail and Yahoo.  The user must now confirm resetting the table to the defaults.
* The list of SQL reserved words is now queried from the database.  It is now believed that the "Auto" selection for the "SQL Delimiter Mode" setting will work perfectly in all situations.  Therefore this setting is now hidden when "Hide Advanced Settings" is checked.
* Improved the "Convert Email Addresses Case" and "Extract Email Addresses From Files" tools.  They now only convert the case of the simple email address instead of all characters.  The number of case conversions is now displayed.
* The tracking report will now list the links clicked in order of the most clicks.
* The "Email Send Log To" feature no longer uses Direct Delivery exclusively.  It will now obey the project settings as normal.
* The Simple Send Window now uses a row of buttons instead of a set of tabs.
* The Reply-To header now appears on the Preview Window.
* The "Locate Mail Server" tool now lists the PTR Record.
* When inserting a column/variable/function, the HTML editor will no longer surround it in double brackets if the caret is already inside double brackets.
* The Troubleshoot HTML tool will now warn against using a <style> section.  Many web-based clients, include Gmail, will ignore the <style> section.  Inline styles should be used instead.
* The "View Result Set" tool will no longer report that the result set is empty (unless there is no Identity Column).  Instead, it will show an empty table.  Otherwise there is no way to add the first row to the table.
* The database password in the connection string is now omitted from the log for security reasons.
* The Incoming Log will now list the database parameters.
* There is no longer a margin around the tree.  The "Edge Gap Disabled" window option has been removed.
* The Text and HTML bodies will now automatically discard the UTF-8 byte order mark characters (ï»¿) from the beginning of the file, if present.
* Improved efficiency when building an email.
* The taskbar button will now show the overall progress of a mailing, but only on Windows 7 and only if the total number of recipients is known in advance.  Check "Count Recipients" on the Logging branch.
* The "Test SMTP Servers" tool will now warn the user if the port is 465 and SMTP Encryption is disabled.  This warning will only appear 4 times per project.
* Numerous improvements to the "Analyze Database" tool.  It now lists all of the SQLGetInfo() data for the database.
* During Direct Delivery, if DNS reports the domain does not exist, no delayed retries will be performed.  Any other DNS error is still considered transient, and therefore delayed retries are performed as normal.
* Updated the SSL module (minor security improvements and bug fixes).
* The Sign-Up Wizard now asks for the From: header if auto-responding is enabled.
* During SMTP, a distinction is now made between a timeout error and a failure to receive a response.
* The file_run() function now supports the "rd" and "md" DOS commands.
* Improved Content-Type auto-detection from the attachment filename extension.
* When converting HTML to text, a </p> tag is now converted to 2 line-breaks instead of 1.
* The first time a project opens the database, if it is Excel, the Cursor Type is changed to "Static".
* Added the "brab" property for prompt() buttons.  When specified, the button and those that follow will be as narrow as possible, and aligned to the right side of the window.
* Custom Headers are now edited on a dialog window.
* User-declared G-Merge functions can now be declared with the "Void" return type.
* The "Recipients Processed" statistic no longer includes emails that had no recipients.
* The "Create New Project" window will now remember its position.
* Fixed: the Simple Send window's "Default Format" setting was not being initialized.
* Fixed: when selecting a recipient in the Preview Window, there was sometimes a disconcerting flicker in the Recipient List.
* Fixed: word-wrapping the Text Body was allowing a space at the beginning of a line if the previous line ends with a period and two spaces, and its length is one more than the "Line Length" setting.
* Fixed: a repeated Incoming Operation was failing to abort when a login error occurs and the user clicks "Abort".
* Fixed: wizards were not able to enumerate table columns when the user specifies a connection string.
* Fixed: Excel: a strange "Numeric Field Overflow" error could trigger the "Invalid variable or database column" error.
* Fixed: rare crash on the Preview Window when double clicking in the Recipient List.
* Fixed: possible long pause before starting a Send Operation on the Preview Window when there are many recipients, and attachments are present.
* Fixed: spell checking was not working right on the HTML editor's "Raw" tab.
* Fixed: the "Forward Messages To" field was reporting an error when the user specifies multiple email addresses.
* Fixed: a crash in the db_add_row() function if the amount of data exceeds 64 KB.


Version 37.1 (September 23rd, 2010)
* Instead of a single worker thread that notifies the tracking server that an email was sent, there is now one for each mailing thread.  Furthermore, the Send Operation will now pause if the queue of pending notifications gets too long.  These changes eliminate the problem of an email being opened before the tracking server is notified, causing the open to go untracked.
* The "Ignore Auto-Responses", "Ignore Hard Bounces", and "Ignore Soft Bounces" checkboxes have been changed to comboboxes.  They now have a third state, "Delete", which will cause these types of emails to be deleted without processing.
* Added the "Speak" tool to all editboxes.
* Added the "Balloon help disabled" option to the toolbar's context menu.
* Incoming Operations will now log which soft/hard bounce string was detected.
* G-Merge in a hyperlink will now work correctly when tracking is enabled.
* While a thread is throttling, it can now be aborted.
* After an RCPT command fails, Gammadyne Mailer will now detect if the server has dropped the connection.  Previously, this situation would produce a timeout error after sending the DATA command.
* When the From: header contains G-Merge, the "The domain in the From: header does not match the DKIM domain" error will no longer appear.
* When an Incoming Operation is repeated, the progress window will no longer estimate the time remaining.
* Improved the way the progress meter works when an Incoming Operation is processing multiple accounts.
* Improved the appearance of the help file.  The inter-character spacing is now calculated better.
* Fixed a minor HTML syntax error in the tracking report.
* Fixed a rare crash when double clicking on the Send Summary Graph.
* Fixed: when Delayed Retries is enabled, not all failed messages were being counted (since 37.0).
* Fixed: the Preview Window's "Search List" tool was mistakenly saving the original email over the email that contains the search string (since 37.0).
* Fixed: when using the Identical Send Mode, the Success and Failure Scripts were not initializing the -Recipient-, -Email-, -FirstName-, -FullName-, -LastName-, -Company-, -User-, and -Domain- variables.


Version 37.0 (August 4th, 2010)
* The operating system is now used to fetch DNS MX records, except on Windows 95, 98, ME, and NT4, but only if "Use O.S. for DNS" is checked.  This offers a performance improvement for Direct Delivery.
* Immediate and Delayed Retries are no longer performed on emails that fail with a 5xx error code.  According to RFC-821 Appendix E, these errors are considered permanent and should not be retried.  This reduces the chance of being blacklisted, and improves performance.
* Added the "Graph" button to the Send Summary window.  This will display a graph of successes and failures over time.
* Added the "Text Format" tool to the HTML editor.
* Added the "Download All" button to the Tracking Campaigns Window.  This will download all campaigns' reports and/or CSV data to a directory or Zip file.
* Added the following tracking statistics:  "Emails With 1+ Links Clicked", "Links Clicked/Opened", "Links Clicked/Unopened", and "Estimated Opens".
* Added the Find/Replace tool to the HTML editor.
* Added to the "Export Tracking Data" tool the ability to exclude recipients who did not open the email.
* Added the "Click Rate" column to the Tracking Campaign Summary window.  The "Opens" column now also includes the percentage.
* Added the incoming_is_hard_bounce() function for detecting hard bounce-backs.  Note:  the "Bounce Strings.txt" file no longer contains keywords used to detect soft bounces.
* Added the "Validate HTML" tool to the HTML Body branch.  This will check for compliance with the HTML standard, and report any problems in a popup window.
* Added support for inline HTML images in this format:
  <img src="data:image/jpg;base64,/9j/4AAQSkZJRgABAgEBGQEZAAD/4Q...">
* Added the "(auto)" mode for the "Default date format" and Default time format" fields.  This mode will detect the format from the computer's regional settings.  This mode is now the default for new projects.
* Added the db_delete_recipient() G-Merge function.  This makes it easier to remove a recipient from the database.
* Added the -ErrorResponse- variable for the Failure Script.  It contains the text of the mail server's reply when an error occurs.
* Added the "DNS Timeouts" statistic to the end of the Send Log.  If you see a lot of these, reduce the number of threads.
* Added the "Insert non-breakable space" and "Insert non-breakable dash" tools to the HTML editor.
* Added to the "Extract Addresses From Files" tool support for unicode files (provided they have the byte-order mark).
* Added support for copying an image file in Windows Explorer and pasting it into the HTML editor.
* Added a tool for searching the Preview Window's recipient list.
* Added the "Favorites" tab to the help file.
* Added the "Customize Toolbar" option to the Options menu.
* Added more tools to the HTML editor's toolbar, although most are hidden by default.
* Numerous improvements to the Tracking Report window.  When saving a report, a sensible filename is now automatically generated.  Added a menu bar.  The window will now remember its previous position.  Added a "Help" option.
* The tracking system can now better deal with transient connection problems.
* The "Expiration Date", "Only Send When Before", and "Wait Until" settings now obey the computer's locale configuration regarding the date format (mm/dd/yyyy or dd/mm/yyyy).
* The user is now warned the first time a Send Operation is started with more than 10 threads on Windows XP.  Windows XP only allows 10 simultaneous connection attempts.
* When using the tracking system on Windows XP, the number of threads is now limited to 9 because of the connection limit.  Without this limit, recipients could go untracked.
* The HTML Editor will now preserve the <!DOCTYPE> tag.  The default HTML body now includes a <!DOCTYPE> tag.
* Improved the appearance of checkboxes.
* Improved support for Excel worksheets that have spaces in the name.
* Improved the detection of hard and soft bounces by looking for certain strings in the subject.
* When DNS encounters an internal server error, the query is now only repeated twice instead of being repeated for the entire timeout period (relevant since 36.0).
* When using the "Repeat Send" feature, the operation's sequential number is now reported on the Progress Window.
* Clicking the "Close" button on the Welcome Wizard will now create a new empty project.  Choosing "Close Project" from the File menu is now exactly the same as choosing "New Project".
* When Gammadyne Mailer fails to inform the tracking system that a tracked email was sent, the error is now logged to a file named TRACKING.LOG located in the directory where Gammadyne Mailer is installed.
* Increased the maximum length of a tracked hyperlink from 150 to 250 characters.
* Updated the SSL module (minor bug fixes and security improvements).
* On Windows 7, the taskbar button will now show the progress of send and incoming operations.
* Numerous improvements to the "Check For Update" tool.
* The Send Feedback and Report Exception features now use HTTP to deliver the information to Gammadyne.  The old SMTP method is only used as a fallback if HTTP fails.  This is necessary because some ISP's only allow SMTP to their own mail servers.
* Previously, any database assignment failure would report that the database column doesn't exist.  This situation will now produce a correct error message containing the database's actual response.  Also, the caret will now be positioned in the script where the assignment occurred.
* The Default skin now conforms with the appearance of Windows 7.  The original default skin has been renamed "Experience".
* Improved the mailbox_count() function.  The server name can now be followed by a colon and a port number.  If the port number is 143 or 993, the IMAP4 protocol is used instead of POP3.  If the port number is 993 or 995, the connection will be SSL encrypted for security.
* The file_fetch_line() function will now return a random line if no line number is specified.
* The get_attachment_name() function will no longer convert the attachment filename to lower case.
* Whitespace is now trimmed from the beginning and end of the POP3 user name and password.
* During a Remove Operation, the computer is no longer allowed to enter suspend/hibernate mode.
* When browsing for a connection string, the ODBC driver list is now alphabetized.
* The first time GM is launched, balloon help will appear prompting the user to get started by creating a new project.
* Fixed some minor incompatibility issues with Vista/2008/7.
* Fixed: when using the Preview Removal tool, after clicking the "Proceed With Removal" button, all operation statistics were double the correct number.
* Fixed: the "Default: Direct Delivery" and "Default: SSL/TLS Encryption" global options were not being saved.


Version 36.5 (April 12th, 2010)
* Added to the "Export Tracking Data" tool the ability to choose which columns are exported.
* Added the "Importance" option to the Simple Send window.
* The tracking system can now track links in <AREA> tags.  Previously, only <A> tags could be tracked.
* When forwarding an email, the subject is no longer altered.  Previously it was set to "Processed Message" or "Unprocessed Message".
* Fixed: the installer was not requiring administrator elevation on Vista/2008/7 (since 36.3).


Version 36.4 (April 5th, 2010)
* Added support for pasting unicode into the header fields.
* Added to the HTML editor support for moving a table row up (Ctrl+Shift+U) or down (Ctrl+Shift+D).
* Added a "Help" button to the tracking campaigns window.
* When a tracking account does not have enough credits to fulfill the entire Track Count, the user can now continue the Send Operation, using all remaining credits.
* Improved the tracking confirmation window.  This window now appears after the Send Operation confirmation window.  This fixes the problem where the user aborts the Send Operation confirmation window, but still gets charged 25 tracking credits.
* The tracking system will now report an error if the Identity Column is non-numeric, which is a requirement.
* Updated the SSL module (bug and security fixes).
* When a Delayed Retry directory is created, it will now get full security rights.
* Fixed: when an incorrect password is specified for the tracking system, the Send Operation's error message stated that the system was offline.
* Fixed: when querying an incoming server for the number of messages, if an error is returned, Gammadyne Mailer will now perform a hard disconnect.  Otherwise the server might hang GM for several minutes.
* Fixed: unable to process MAPI email when "Repeat Incoming Operation" is checked.  After the first cycle, errors would occur.
* Fixed: unable to restore a minimized window when a modal subwindow is open under Windows 7 (since 36.0).


Version 36.3 (March 1st, 2010)
* Added the "Shortest/Longest Time Until Opened" tracking statistics.
* Added the "Open File" button to the Export Tracking Data result window.
* The "From:" header is no longer required.  This is desirable for certain Exchange Server configurations.
* The open/save file dialog will now use the operating system style enhancements.
* All operation logs will now report the current date/time using the computer's regional settings.
* Spaces around the SMTP Server Name will no longer cause an error.
* Improved the installer's appearance.
* The Export Tracking Data tool will no longer export the "linkmask" field, as there is no way for the user to make use of this data.
* The "Login to POP3 server" method of SMTP authentication will now login to the POP3 server only once every 9 minutes.  Previously, it would login every time a new connection to the SMTP server was made, which is time consuming and unnecessary.
* Fixed: on the Preview Window, when the Recipient List has focus, selecting a new recipient will no longer allow the HTML body to steal focus.
* Fixed: the field_exists() function was not always working correctly.
* Fixed: when an auto-response refers to an invalid database column, the legal column names were not being listed in the error message.
* Fixed: bug prevented auto-responses from using the database columns in a newly added row (since 35.5).


Version 36.2 (January 29th, 2010)
* Added support for external Text and HTML Bodies that are in unicode.
* Added the largest() and smallest() G-Merge functions.
* Added a progress window while importing tracking data to the database.  Also, when the "Update Existing Records" mode is chosen, the summary now reports the number of records that were actually found.
* Added to the exported tracking data a new column, "links_clicked", that contains a list of the links that the recipient clicked on.
* Added a "Help" button to the first-time greeting window.
* Renamed the "SQL Canonical Mode" setting to "SQL Delimiter Mode".
* Fixed: the Export Pseudo-Project tool was exporting a "ConstructedAttachment" label instead of "ExplicitAttachment" (since 36.0).
* Fixed: when importing tracking data to the database, clicking "Finish" before reaching the last page of the wizard was causing the previous column mappings to be lost.
* Fixed: some databases were not able to handle the change from bracket delimiters to accent delimiters.  The character used to delimit an SQL identifier is now auto-detected from the database driver.


Version 36.1 (January 21st, 2010)
* Fixed: very rarely, a bug could cause an editbox to only accept certain characters (e.g. letters or digits) (since 36.0).


Version 36.0 (January 19th, 2010)
* Most icons have been replaced or improved.
* Added support for signing outgoing email with a DKIM signature.  This allows the recipient to verify the sender's identity and message integrity.
* Added to the HTML editor the "Table Properties" tool.
* Added the db_call_func() function, which calls a database stored function.  Added the db_call_proc() function, which calls a database stored procedure.
* Added the blacklist_check() function, which determines if an IP address is blacklisted.
* Added support for HTML tables that specify a background image.
* Added support for processing a secondary database result set.  Please refer to the new db2_execute() function.
* Added icons for various database tools to the bottom of the Database branch.  Added icons for various DNS tools to the bottom of the DNS branch.  Also the buttons at the bottom of the Preview Window are now icons.
* Added to the Simple Send tool the ability to control the default message body, and if the message is text or HTML by default.
* Added the "Obey Clauses" checkbox to the "Convert Email Addresses Case" tool.  If checked, the operation will only apply to recipients who meet the criteria specified on the Clauses branch.
* Added the "Hide Index Column" option to the Database Result Set window.
* Added the "Configure" button next to the "Indirect Delivery" setting.
* The first time Gammadyne Mailer is launched, the user is asked how email should be delivered.  This choice will apply to all new projects.
* During a Send or Incoming Operation, the computer is no longer allowed to enter suspend/hibernate mode.
* When a DNS server responds with an "internal server error", the request is now repeated.  This improves the Direct Delivery success rate.  One problematic DNS server showed an 18% reduction in failures.
* The file_start() function can now specify a URL.  This will cause the URL to open in the system's default web browser.
* Numerous minor interface and help file improvements.
* Idle threads now respond faster to waiting emails resulting in better throughput.
* The "SQL Canonical Mode" feature will now surround column names with the accent character (`) instead of square brackets.  Brackets were only supported by Access and SQL Server.  Accents are supported by most databases.
* When choosing Cancel on the database result set window, the user is now informed of how many changed cells they would be discarding.
* When aborting a Send Operation, the Send Summary will now inform the user which recipient should be entered into the Begin With Recipient field in order to resume the operation.
* Clicking on a link in the "Preview" tab of the HTML editor will now open the link in a new browser window.
* Added to the Send Summary a statistic on the average message size.
* The installer now adds a Windows Firewall exception for Gammadyne Mailer.
* When running a Remove Operation on a database during an Incoming Operation, the Remove Operation will no longer create its own popup window.  Instead, it will use the Incoming Operation's progress window.
* Updated the SSL module (minor bug fixes and security enhancements).
* The term "Explicit Attachments" has been replaced by "Constructed Attachments".
* When performing delayed retries, it is possible for the database to drop the ODBC connection due to inactivity.  Gammadyne Mailer will now detect this and automatically reopen the database as needed.
* When a column name is specified in G-Merge with the {...} delimiters, there are no longer any restrictions on the characters that the column name can use.  Only the } character itself is illegal.
* When closing Gammadyne Mailer, if there are any open Simple Send windows, the user is now prompted to send, save, or discard the email.
* Left clicking on a tree branch will no longer give focus to the tree.
* The browse tool for the Embedded Files Directory now allows network paths to be browsed.
* When an email address is in this form:  "Joe Public (Gmail)" <joe@gmail.com>, the –LastName– variable will now contain "Public" instead of "(Gmail)".
* The "Reset DNS Cache" tool will now also reset the operating system's DNS cache, not just System­G's.
* The "Eliminate Duplicate Recipients" box is now checked by default for new projects.
* The "Log Size Limit" setting is now hidden when Hide Advanced Settings is checked.
* When the Image Locality is "Both", problematic characters are no longer stripped from embedded images.  This is more likely to cause problems than prevent them.
* Fixed: the "Export Pseudo-Project" tool was not exporting the database timeout.
* Fixed: the "Lookup Illegal Recipients" tool was not tolerating commas or semi-colons inside a quoted string when more than one email address is present.
* Fixed: while performing delayed retries, the reported number of messages remaining was not always accurate.
* Fixed: the "Remove" tool was not always reporting the correct line number.
* Fixed: the "Check PTR Record" tool's Refresh button was not updating the top line of text.
* Fixed: the Example project was only appearing in the Welcome Wizard the first time that GM was launched.
* Fixed: when spell checking the HTML Body, the "Auto-Position" mode was not always working correctly.
* Fixed: the "Remove Illegal Addresses" option was only working for databases and CSV files.  It will now work for a plain text recipient list, but be aware that it requires one address per line to work correctly.
* Fixed: possible crash when using the "External" Image Locality with an HTML body that contains a <BASE> tag.
* Fixed: the Incoming Operation was ignoring the "Exclusion File" checkbox and always excluding addresses in the specified files.


Version 35.5 (September 14th, 2009)
* Added support for the Gammadyne Email Tracking System.
* Added support for the BIGINT database type (64-bit integers).
* The "Identical" Send Mode now supports G-Merge, just not recipient-specific personalization.
* During a repeated Incoming Operation, the ODBC connection is now pinged to prevent an idle timeout from occurring.  If the ping fails due to a lost connection, the database will be automatically reopened.
* Added the random_digits() function.
* The "To:" setting is now hidden when the "Hide Advanced Settings" option is checked.  Messages are usually treated as spam if the To: header does not match the recipient, therefore this feature should never be used.
* The "Test DNS Servers" tool no longer uses gammadyne.com for testing.
* The default log filename for new projects was changed from MMAIL.LOG to GM.LOG.
* GMCOM now tries to prevent ODBC from displaying the Login window in the event that database login fails because in some circumstances this could cause GMCOM to hang.
* Fixed: the Generate DomainKeys window was sometimes not tall enough to display all controls.
* Fixed: the Rejection Summary will no longer include a separate entry for each INDEX rejection.
* Fixed: a G-Merge error during a Send Operation could cause an empty error window to appear if a Success or Failure Script is used.
* Fixed: the http_fetch() function could timeout when fetching a 0-length file.
* Fixed: extremely large attachments could result in an "Out of Memory" error due to a heap fragmentation problem with the Base64 encoding algorithm.
* Fixed: an unusual scenario where an unbindable database column (such as LONGVARCHAR) could produce an error if it is also used in the Success or Failure script.
* Fixed: a bug in the Remove feature could cause the line break before an email address to be deleted as well, which in turn could cause two addresses to merge together.


Version 35.0 (June 15th, 2009)
* Added the "Hide Advanced Settings" option to the Options menu.  This helps streamline the user interface by hiding certain settings that almost never need to be changed.  This option is checked by default.
* Added the Send/Scripts and Incoming/Scripts branches.  To further streamline the user interface, the various scripts have been consolidated on these branches.
* HTML image filenames are now automatically stripped of spaces, URL encoding, and other characters that cause problems in certain email clients.
* Added the latch_html_unicode_until() and db_set_unicode() functions.  These make it possible to latch unicode data out of the HTML body and store it in a database column.
* Added the ForEachFile.exe utility.  The arguments to this program include a set of source files, a project file, and various switches.  For each source file, it will launch an instance of Gammadyne Mailer, passing it the project and switches.  This is useful, for example, to perform a mailing for every file located in a certain directory, with the file attached to each outgoing email.
* HTML images will now appear on the Preview Window when running a pseudo-project.
* External HTML images that are fetched and converted to internal images will now appear on the Preview Window.
* Graphics that cover the entire HTML background will now appear on the Preview Window.
* The original Simple Merge data for each email is now available in the Success/Failure Script.
* Added icons to all child branches.
* Added to the end of the Send Log a summary of the totals for each type of rejection.
* Added the dbe_execute() function, which can execute an SQL statement in a different database than the one specified in the project.
* Added an "Auto-Detect" button to the Override EHLO Domain setting.
* Added the ability to import the Remote Server Table from another project.
* Added to the HTML editor a tool for setting the entire document's background color.
* Added the csv_append() function, which appends a line of CSV data to a file.
* Added the incoming_get_received() function, which returns the date when the current incoming email was delivered to the first SMTP server.
* Added the "/attach" command line switch, which can be used to add an attachment to a mailing.
* Added to the HTML editor the option to disable automatic URL detection.
* Added the file_fetch_line() and mime_delete_headers() functions.
* Added the "Load test email" context menu option to the Literal editbox.
* Added the ability to drag and drop an .MMP project file from Windows Explorer onto the window caption.  This will open the project.
* Function keys will now work when an embedded HTML window has focus.
* Updated the SSL module to the latest version.
* The db_acquire_row() function's first parameter can now be any data type.
* Behavior change: the ExtendedHeaderChars and CanonExtended pseudo-project labels now default to "1" if not specified.
* An abortable progress window is now displayed while the Check PTR Record tool is working.
* The settings on the Text Body/Format branch have been moved to the Text Body branch.  The Custom Headers have been moved to the Headers branch.
* The Bounce-Back wizard will now set "Addresses in body" to "Process All".  It will also uncheck the "Ignore hard bounce-backs" box.
* The send progress window now displays the title of the pseudo-project.
* The installer and uninstaller will now automatically close the main window and help file.
* Numerous minor improvements.  Numerous skin improvements.
* Reorganized the settings on the Incoming/Processing branch.  The "Members only" setting has been moved to the Remailing branch.
* An error is now reported if the "No recipient required" box is unchecked, and all other Recipient Sources are disabled.  This configuration causes all incoming email to be rejected.
* The Successful Send Date feature will now produce an error if no Identity Column is specified (before the Send Operation starts).
* The Single Send tool now reports a more intelligible error if no Table Name is entered.
* Restored support for Windows 95.
* For new projects, the "Canonicalize Extended ASCII" box is now checked by default.  This feature has no known disadvantages.
* For new projects, the "Ignore Duplicate Recipients" box is now checked by default.  More often than not, this feature is desirable.
* The 'subject' parameter to the incoming_forward() function is now obeyed even if "Forward as raw MIME" is unchecked.
* Fixed: when highlighting a control where an error occurred, the highlighting was sometimes not being undone.
* Fixed: the "Limit Message Size" feature was not working when using the IMAP4 protocol.
* Fixed: G-Merge errors in the internal HTML Body were sometimes not positioning the caret at the proper position.
* Fixed: HTTP was failing for servers that specify a character set for images.
* Fixed: The "Browse" tool for the database connection string was sometimes including garbage at the end of the string.
* Fixed: the HTML editor's Preview tab was not displaying certain images depending on how they were specified.
* Fixed: Under Vista, when GM is minimized and a Send Operation completes, GM could not unminimize properly.


Version 34.1 (February 25th, 2009)
* Added a checkbox to the "Line Length" setting.  When unchecked, the Text Body is not word-wrapped at all.  Previously, the Text Body was always word-wrapped to at least 999 characters.
* Added some defaults to a new drop-down list for the Default Date Format and Default Time Format.
* The Text Body Encoding now defaults to "Quoted-Printable".  There are no known email clients that cannot decode Quoted-Printable, and unlike 7-bit and 8-bit encoding, it allows lines to run longer than 1000 characters.
* Behavior change:  if the "LineLength" pseudo-project label is not present, no word-wrap is performed on the Text Body.
* Fixed: the Identical Send Mode combined with the Reading Confirmation feature was causing an incorrect error.
* Fixed: possible crash when using the Universal Domain Throttle when the mailing list contains over 200 unique domains.


Version 34.0 (January 26th, 2009)
* Added support for distributing threads among multiple IP's / networking adapters.  Added the "Use all adapters" option to the Servers branch.  The "Adapter IP" field now supports multiple IP addresses, separated by commas.
* Added support for databases that are not registered as an ODBC Data Source.  On the Database branch, check the "Use connection string" box, then click "Browse".
* Added to the HTML editor the "Insert Symbol" tool (Ctrl+N).  This will display a character map of all unicode characters.  Double click on a character to insert it into the document.  Alternatively, type four hex digits and press Ctrl+\ to generate a unicode character.
* Added the "Universal Domain Throttle" setting to the Domain Throttles branch.
* Added the ability to customize the order and visibility of toolbar icons.  Right click on the toolbar and choose "Customize".
* Added the ability to edit an external HTML file in an internal HTML editor.
* Added to the "Remove" tool support for recipients that are separated by commas or semi-colons.  Previously, the mailing list was restricted to one email address per line.
* Added the ability to prompt the user for the incoming mail server's user name and password.  Simply leave these fields blank.
* Added the "Include Attachments", "Include In-Reply-To Header" and "Include Auto-Submitted Header" settings (for auto-responding).
* Added the "Remailing" branch and moved all auto-responding and forwarding settings there.
* Added the "Convert Forwards To Text" setting to the Remailing branch.
* Added the unicode_to_html() G-Merge function, which allows unicode database columns to be merged into the HTML Body.  Added the unicode_to_utf8() function, which allows unicode database columns to be merged into the Text Body.  Added the unicode_to_header() function, which allows unicode database columns to be merged into a header.  Added a help file guide on unicode.
* Added the convert_to_utf8(), equals_any(), equals_any_i(), incoming_is_autoresponse(), str_reduce(), switchi() G-Merge functions.
* Added the mw_xxx() family of G-Merge functions for displaying simple popup message windows.
* Added many more examples to the Example.MMP project.
* Added the "Edge Gap Disabled" option to the Window menu.
* Added a help file guide on configuring a project to add a database row, populated with data extracted from an incoming email (Guides > Data Extraction).
* Added a warning to the "Verify All Addresses" tool that this will likely cause your IP address to be blacklisted.
* The list of ODBC data sources is now automatically refreshed whenever the drop-down list is opened.  This eliminates the need to choose "Refresh List" from the context menu.
* When a G-Merge error occurs, the tag is now displayed after the error message.
* Gammadyne Mailer's main executable is now digitally signed.
* The "Forward to all" feature now discards certain inappropriate headers.
* In the HTML editor, right clicking on an image and choosing "Image Properties" will bring up a window where the image properties can be edited.  Likewise for hyperlinks.
* The Incoming Progress and Incoming Summary windows will now remember their position and size.
* The Auto-Responder wizard will now set "Delivery Status Notification" to "Never".
* The Bounce-Back wizard will now ask if non-bounces should be forwarded to a different address.
* The settings tree will now remember the "Alphabetize main branches" option.
* Improved performance of the "Eliminate duplicate recipients" feature for large lists.
* The "Preview Recipients" tool now uses far less memory.
* The database connection timeout has been extended from 10 to 300 seconds.
* Numerous interface improvements and other minor improvements.
* Fixed: the From: header was requiring an email address even if the Sender: was specified.
* Fixed: the Bounce-Back wizard was automatically checking the "Ignore Auto-Responses" box.  However, this was supposed to be done only by the Auto-Responder wizard.
* Fixed: the Adapter Name drop-down list could potentially fail to include an adapter's IP address, causing this feature to not work.
* Fixed: some minor features would fail to obey the Adapter IP settings.
* Fixed: some minor features would fail to apply changes to the DNS settings.
* Fixed: a vertical bar (|) in a G-Merge string literal could cause a syntax error.
* Fixed: incorrect error reported when using G-Merge in the Sender: field (since 33.0).
* Fixed: rare hang while "Waiting for threads to finish".
* Fixed: The "Ignore" button on the "Failed Login" window was not working.  Also, a failed login was not being automatically retried after 30 seconds as it should have been.


Version 33.1 (September 22nd, 2008)
* Passwords to the SMTP and POP3 servers are now stored with encryption.  However, please note that downgrading to a version prior to 33.1 requires all passwords to be re-entered.
* Added to the "Check PTR Record" tool the ability to obtain information on any IP address.
* Added various buttons to the bottom of the Check Blacklisting report.
* If the Image Locality is "External" and the HTML <base> tag is specified, images with a relative URL will not be modified.
* The "Browse" tool for the Recipient File will now by default display CSV files in addition to TXT files.  The Browse tool for log files will now display both TXT and LOG files by default.  The Browse tool for the Embedded Files List will now display JPG, GIF, and PNG images by default.
* The installer is now digitally signed.
* Fixed: forwarding email will now obey the Sender: field as documented.  If forwarding begins to fail after installing this version, set the Sender: to a valid email account on the mail server.
* Fixed: the Message-ID was not correctly generated when using the "<user>" keyword in the From: header.
* Fixed: the dbe_add_row() function may incorrectly report that a database must be specified in the project (since 33.0).


Version 33.0 (August 20th, 2008)
* Balloon help has been totally revamped.  The balloon help text for each control has been reviewed and improved.
* The entire help file has been reviewed and improved.
* Improved ease-of-use for HTML images, including:
  * Added the "Image Locality" setting.  Simply set it to "Internal", "External", or "Both", and Gammadyne Mailer will take care of everything.  For old projects, this setting is initialized according to the "Auto-Insert cid:" and "Auto-Insert Content-Location" options.
  * The "Auto-Insert cid:" and "Auto-Insert Content-Location" options have been removed.  The new Image Locality setting determines if these features are used.
  * Remote images are now automatically downloaded and embedded in the email (unless the Image Locality is "External").
  * Numerous improvements to the "Troubleshoot HTML" tool.
  * Added support for a relative path containing forward slashes.  If any embedded image contains a relative path, the path is now automatically discarded.
  * If no Embedded Files Directory is specified, it will default to the directory of the external HTML Body.
  * Added support for HTML <td> tags that specify the "background" attribute.
  * The "Auto-Detect Embedded Images" option has been removed.  There is no reason to turn this feature off.
* Improved support for load balancing to multiple SMTP servers, including:
  * Added radio buttons to the "Sender" field that allow it to use the SMTP authenticated user.
  * If the From: header is "<user>", it will be replaced with the SMTP authenticated user.
  * Each thread will now try to avoid SMTP servers that are throttling.
  * Two SMTP servers with the same domain will no longer share the same throttle.
  * When throttling with the "Recycle Connection" feature, the connection is now closed during the throttle pause period.
* Added the "Secure authentication" setting to the Incoming/Source branch.  This changes prior behavior - previously secure authentication was always used, however this new setting is unchecked by default.  Some servers cannot reject secure authentication gracefully.
* Added to the HTML editor support for unicode characters.
* Added to the "Check PTR Record" tool the ability to determine if the computer's external IP address is on Spamhaus's PBL.  The PBL is a list of all IP addresses that are assigned dynamically or are behind a residential gateway.  Direct Delivery does not work if the IP address is on this list.
* Added the "Ignore Auto-Responses" option to the Incoming/Criteria branch.  We recommend checking this box for all projects that process incoming email.
* Added the incoming_origin() function, which returns a code for the location where the recipient was located in the incoming email.  For example, this can be used to send auto-responses to only the recipients located in the From: header.
* Added support for a question mark wildcard in all log filenames.  When the log is created, the question mark is replaced with the current date and time.
* Added the ability to paste plain text into the HTML editor (stripped of all text formatting).  The hotkey is Ctrl+Shift+V.
* Added a checkbox to control the "Custom WHERE Clauses" field.
* Added to the "Sending previewed messages..." message the total number of emails remaining.
* Added the "Lookup Recipients" icon to the toolbar.  Removed the "Verify Address" and "Verify All Addresses" icons because these tools are discouraged.
* Added the -HardBounces- variable for the Post-Incoming Script.
* Added various buttons to the bottom of the "Extract Text from HTML" window.
* Added the ability to control word-wrap in the Literal Email.
* The help file's Search feature will now highlight all occurrences of the keyword.
* Updated the SSL and DomainKeys modules to the latest version (security improvements and minor bug fixes).
* When using the "/v" command line switch, the complete list of email addresses is now displayed in a scrollable editbox.
* When using the "/r" command line switch, the removal log window now comes to the foreground.
* The "Process Literal Email" tool will now explain why the message is not valid MIME.
* The "Reset DNS Cache" tool will now report if the cache was already empty.
* All references to "Check Incoming Mail" have been changed to "Process Incoming Mail".
* The "Check Blacklisting" tool now accepts URL's and email addresses.
* Fixed: the "Manually Process Clause Table" checkbox was not always enabled/disabled correctly.  This setting was renamed "Internally Process Clause Table".
* Fixed: some issues when a prompt() window is created while GM is minimized.
* Fixed: the Simple Send tool was not obeying the Character Set.
* Fixed: the Delete Clause button was only working if the Clause Table had focus.
* Fixed: the email_send() function was not including a "To:" header.
* Fixed: possible lock-up when spell checking in the HTML editor, and other problems.
* Fixed: rare crash in the HTML editor.
* Fixed: rare installer crash (since 32.1).
* Fixed: potential crash in DomainKeys related to multithreading.


Version 32.2 (May 19th, 2008)
* Added the ability to reverse the order of the database result set.
* Added the "RemovalMethod" pseudo-project label.
* Added support for Excel column names that have leading or trailing whitespace.
* Windows that originate from ODBC will now popup in front of Gammadyne Mailer instead of behind it.
* Revised the instructions for registering a SQL Server data source.
* Moved the Criteria branch below the Processing branch.
* The Preview Recipients tool will now ignore the Notify Operation Errors feature.
* Fixed: the Insert Column tool for the Custom WHERE Clause was not working properly.
* Fixed: when forwarding, project errors were not being properly recorded in the log (when using "Log Entire Forward Operation").
* Fixed: embedded images were not always previewing.  Improved documentation on embedded images.
* Fixed: bug that caused all recall-comboboxes to accumulate duplicate entries in the drop down list if the text contained trailing whitespace.
* Fixed: bug that could cause only the first 256 characters of a database column to be fetched (if the database reports the size of the column to be 0).
* Fixed: the "Lookup Illegal Recipients" tool was not properly handling comma/semi-colon separated lists as documented.
* Fixed: changes made by the HTML editor's Attribute Editor tool can now be undone.
* Fixed: failure to login to IMAP4 servers that don't support CRAM-MD5 authentication.
* Fixed: selecting and copying text in the help file did not always work properly.
* Fixed: the "Execute custom SET statement" Removal Method was not working correctly during Incoming Operations.
* Fixed: the user is not allowed to make changes in the HTML editor until all images have downloaded.  Doing so could cause all kinds of problems, including a crash.
* Fixed: if the operating system DLL named NTMARTA.DLL faults, it will no longer crash the installer (since 32.1).
* Fixed: crash related to SSL and multithreading.  Anyone using SSL should definitely install this update.


Version 32.1 (March 17th, 2008)
* Added the "DomainKeys" pseudo-project label.
* Added a second optional parameter to the remove_recipients() function.  It can contain one or more filepaths to plain-text mailing list files on which the removal is performed.  Previously, this function would only operate on the mailing list specified in the project.
* Big improvement to quoted-printable decoding speed.
* The installer will now warn if it does not have admin rights.  It will also attempt to loosen the security settings on the installation directory (to prevent problems with Vista).
* Fixed: rare crash after a continuous Incoming Operation completes.
* Fixed: rare crash when using MAPI.
* Fixed: possible "Unknown Function" error when using user-declared G-Merge functions.
* Fixed: possible hang when opening the Configuration Editor.
* Fixed: possible crash on Vista when enumerating DUN connections.
* Fixed: the GM window was initially minimized if no other System-G app had been installed.
* Fixed: the Vista minimize bug.


Version 32.0 (January 22nd, 2008)
* Numerous user interface improvements.  Please press Ctrl+Alt+Shift+F5 to reset System­G, then reload your preferred skin.
* Added the "Process MAPI Email" option to the Incoming/Source branch.  This allows GM to process messages in any email client that supports MAPI (such as Outlook and Lotus Notes).
* Added the "Write Email To MAPI Folder" option to the Send/Delivery branch.  This allows GM to generate messages directly into an email client folder, such as Outlook's Outbox.
* Added the "Delivery" branch, where many settings from the Send branch have been moved.  The Details branch has moved above the Domain Throttles branch.
* Added the "Indirect Delivery" radio button to the Delivery branch.  The "Direct Delivery" and "Write Email To Files" options are now radio buttons.
* Added the incoming_save() G-Merge function.  When processing incoming MAPI messages, this will save a message back to the MAPI folder.
* Added to the end of the Incoming Log statistics on the number of criteria keywords found.  These stats are also recorded in the -CriteriaStats- variable which is available in the Post-Incoming Script.
* Added the db_used() G-Merge function, which returns TRUE if a database is being used.
* Added an Incoming Operation statistic on the number of message deletion successes and failures.
* Added a notice window while issuing the database query during a Send Operation.
* Added the "Editor Menu" button to the HTML editor toolbar.
* Added the convert_from_hex() and convert_to_hex() functions.
* Added to the Progress Window a statistic on the number of recipients rejected.
* Added various buttons to the bottom of the "Remove From Files" editbox.
* Whenever an image is inserted in the WYSIWYG HTML editor, if the Embedded Files Directory is blank, the image's directory is copied there.  This helps ensure that the image will appear properly on the Preview Window.
* The incoming progress window will now display a running total of the number of messages processed and unprocessed.
* The Verify Address tool will now obey the "Override EHLO Domain" setting.
* The "Process Literal Email" feature will now report an error if the message is not valid MIME.
* The Simple Send window will now immediately reject an illegal From: header.
* Improved icons and icon rendering.
* Added the "Metal" skin.
* Updated the SSL module.
* All function calls to the SSL and DomainKeys modules are now made inside an exception trap so that these modules cannot crash Gammadyne Mailer.
* If a mail-sending worker thread crashes, Gammadyne Mailer can now gracefully recover from it.
* Noticeable performance improvement when using the asterisk wildcard in the log filepath when there are many log files.
* The "Add Recipients" window will now remember its position and size.
* Fixed: when specifying the SMTP server in a pseudo-project, the global SMTP settings were being used as defaults for unspecified fields.  Now, when the SMTPServer field is encountered, all pre-existing information about the SMTP servers is discarded.
* Fixed: the SQL Canonical Mode was not importing correctly from old projects.
* Fixed: Bounce-Back Wizard was not always setting the "Processing Mode" to "Remove".
* Fixed: quoted-printable encoding could sometimes allow a line to exceed 76 characters.  Some spam filters may penalize messages with this mistake.
* Fixed: the Delayed Retry feature should have been ignored for indirect delivery.


Version 31.0 (August 23rd, 2007)
* Added support for Yahoo! DomainKeys - a system for verifying a sender's identity and message integrity.  Please refer to the Send/Details branch.
* Added the "Decanonicalize G-Merge Input" setting to the HTML Body/Options branch, which is useful when editing HTML that contains G-Merge.  The "Canonicalize Data" setting was renamed "Canonicalize G-Merge Output".
* Added support for SMTP servers that employ a new form of the "Greeting Delay" method of spam prevention.
* Added support for Spell Checking the HTML body while in WYSIWYG editing mode.
* Added to the "Change Email Address" tool the ability to reduce the old email address to simple form.
* Added the "Use Global INI File" option to the context menu of the "Write Email To Directory" checkbox.  If checked, GMFW.INI is stored in Gammadyne Mailer's main directory instead of the output directory.
* Added the "Insert Column" and "View Results" buttons to the bottom of the Custom SELECT Statement field.
* Added Browse, Copy, and Edit buttons to the bottom of the Recipient File, Exclusion File, and Process Local Email fields.
* Added the ini_get_date() G-Merge function.
* Added to the HTML editor the ability to delete rows and columns from a table.  Shift+Space will now insert a non-breakable space.  Also, the Enter and Shift+Enter keys are now reversed.  The Enter key will insert a line break (<br>).  Shift+Enter will insert a new paragraph (<p>).
* HTML Attribute Editor:  fixed a problem where changing a pre-existing attribute could cause a duplicate attribute to be added to the HTML code.  HTML Style Editor:  styles are now grouped by category.
* When enumerating database table names, the list will no longer contain system or temporary tables.  This fixes a problem with Excel table name enumeration, and eliminates a long pause with Oracle.  Please note that we have observed Excel to experience problems unless the Cursor Type setting (Database/Setup branch) is set to "Static" or "Forward Only".
* The Simple Merge feature now decanonicalizes double quote marks into a single character.
* The Preview Recipients tool no longer executes the Send Batches.
* Improved tolerance of the Excel "Numeric Field Overflow" error.
* The "+" buttons on the Simple Send Window now support multiple selections.
* When "SQL Canonical Mode" is "Auto", column names are now canonicalized if they contain the dollar sign, but not for table names surrounded in accent marks (Excel style).  Also, the "Never" mode now operates as documented.  Also, changes to the SQL Canonical Mode will now take effect immediately, not the next time the database is opened.
* After performing a Preview Remove operation, the "Proceed With Removal" button will now appear when there are only duplicates and blanks found but no address matches.
* If an HTML body is present, the Preview Window will now display it by default instead of the text body.
* The convert_to_html() function no longer requires its parameter to be a string.
* Improved detection of soft bounces from IIS.
* Updated the SSL module.
* The File History is no longer converted to lower case.
* DomainKeys headers are now stripped from forwarded messages (because a forwarded message would always fail verification).
* Moved the "Literal" branch under the Incoming/Source branch.
* Fixed a problem with IMAP4 on MS Exchange Server.  Because Exchange disconnects after failing to securely transmit the password, plain-text is now used if the text "Exchange Server" appears in the server greeting.
* Fixed some minor focus issues in the HTML editor.  Fixed some issues with the "Undo" tool not working.  Fixed a problem with inserting a table within a table.  The "Undo" tool on the Raw tab can now undo all changes made on the Edit tab.
* Fixed bug:  when a G-Merge syntax error in the HTML body occurs, the caret is now positioned at the location of the error.
* Fixed a problem that could prevent the successes and failures from being displayed on the Progress Window.
* Fixed a possible "Unrecognized database type" error.
* Fixed a problem decoding QP-encoded headers when the first character is encoded.
* Fixed potential high CPU usage when fetching DNS records.


Version 30.0 (May 2nd, 2007)
* Added support for the IMAP4 protocol for receiving email.  The Mail Accounts table now includes a column labeled "Protocol", allowing the user to choose between POP3 and IMAP4.
* Added support for session-level SSL (SMTP over SSL on port 465, POP3 over SSL on port 995, IMAP4 over SSL on port 993).  This feature is auto-detected.
* Added support for POP3 CRAM-MD5 authentication.  This security enhancement prevents the password from being stolen.
* Added a "Word Wrap" option to the Simple Send Window.
* Added the "Reply-To" option to the Simple Send Window.
* Added the "+" button to the To:, CC:, and BCC: headers in the Simple Send Window.
* Added various buttons to the bottom of the Attached Files List and Embedded Files List.
* Added the "/select" command line switch for overriding the Custom SELECT Statement.
* The entire help file has been reviewed.  Numerous improvements and corrections.  Added to the Auto-Responder Guide a section on preventing auto-responder loops.
* Numerous user interface/skin improvements.  The "Default" skin has been redesigned to resemble the appearance of Windows XP.
* Numerous improvements to balloon help.
* The "Limit Message Size" setting is now compatible with the "Process Local Email" setting.
* In the WYSIWYG HTML editor, audio will now stop playing when the user clicks away from the "Preview" tab.
* The "Preview Final WHERE Clause" tool has been renamed "Display SELECT Statement".  It now displays the entire SQL SELECT statement that is sent to the database.
* The "Troubleshoot HTML" tool will no longer report an error for a URL to a local file.
* Fixed a bug with Excel column name enumeration.
* Fixed a bug in UTF-8 decoding.
* Fixed a bug in the convert_to_url() function.  It was not properly canonicalizing extended ASCII characters.
* Fixed a rare floating point divide by zero crash.
* Fixed an erroneous "Invalid Adapter IP" message when using a networking adapter with multiple IP addresses.
* Fixed a bug in the "View Result Set" tool that could cause a random time to appear in a NULL date/time field.


Version 29.0 (January 29th, 2007)
* Added support for SSL/TLS with the new "SMTP Encryption" setting on the Servers/SMTP branch, and the new "POP3 Encryption" setting on the Incoming/Source branch.  Added the "EncryptSMTP" pseudo-project field.
* Added the "Network Adapter" settings to the Servers branch, allowing control over which adapter is used for all Internet communications.  Added the "AdapterIndex" and "AdapterIP" pseudo-project fields.  Added the adapter_ip_get() G-Merge function.
* Added to the http_fetch() function the ability to support https: URL's, which use SSL encryption.
* Added icons to the settings tree.  The font size of the tree can now be adjusted.
* Added titles and descriptions to the top of all branches.
* Added buttons to the bottom of all multiline editboxes that support G-Merge.
* Added a movable splitter on the Clauses branch.
* All interface fonts are now antialiased by default.  The setting to control this is located at:  System-G Menu > Configuration Editor > Controls > Font > Antialias.
* Increased the maximum number of database columns from 256 to 2048.
* The Incoming/Explicit branch has been renamed "Literal".
* The HTML editor's Attribute Editor and Style Editor will now operate correctly when the user has clicked on an image.
* The F1 key will now work in the WYSIWYG HTML editor.
* Fixed a bug in parsing certain responses to the HELO/EHLO command.
* Fixed a bug that could remove the quote marks from the ALT attribute of an <IMG> tag (only when specifying a local image).
* Fixed a bug that prevented the "DatabaseConnect" pseudo-project field from working.


Version 28.0 (October 10th, 2006)
* To make embedding images easier, <img> tags can now contain a link to a local file.  Everything before the filename will automatically be replaced with the "cid:" prefix, and the file will be embedded as if it was in the Embedded Files List.  There is no checkbox for this feature because there is no reason to turn it off.
* Added the "Ignore hard bounce-backs" option to the Incoming/Criteria branch.
* Added the "/pop3" switch which allows the POP3 information to be overridden for an Incoming Operation.
* Added the "Load" button to the Simple Send Window.
* Added the "Character Set" option to the Simple Send Window.
* Added the "Paste" button to the Simple Send Window's Attachments table.  This allows you to paste the clipboard as an attachment - useful for sending screenshots.
* Numerous improvements to the WYSIWYG HTML editor.  Added context menu options for adding database columns, variables, and functions.  Fixed the disappearing caret bug.
* Improved and added skins (please reload your current skin).
* New and improved icons.
* Numerous minor improvements to the Database Result Set Window.
* Added to the extract_zip() function support for Canadian zip codes.
* Changed the default Text Body Line Length from 75 to 65.  Shorter lines are less likely to run afoul of the recipient's email client's own line wrapping.
* The "Send Copy of every Nth email" feature now supports multiple email addresses as documented.
* The db_add_row() function will no longer automatically set the Recipient Column if the function parameters are already specifying a value for this column.
* If the same HTML embedded file is specified more than once, instead of producing an error, the duplicate will be automatically ignored.
* When using the various "Test Send" tools, the CC: and BCC: headers are now ignored.
* Fixed the "Limit HTML Line Length" setting not working when the HTML Body contains no G-Merge.
* Fixed a problem with the Simple Send Window sending an HTML embedded image whose filename contains a space.


Version 27.0 (June 6th, 2006)
* Added the "Zip Attachments" setting to the Attachments branch.
* Added the "Execute custom SET statement" Removal Method.
* Added the "Censor Forwards" option to the Incoming/Processing branch.  This will censor all profanity from forwarded emails.
* Added the str_censor() function, which will censor all profanity in a string.
* Added the db_get_max(), extract_week_of_month(), extract_week_of_year(), str_discard_ws(), str_find_member(), and str_find_ws() G-Merge functions.
* Added the "Log Entire Remove Operation" option to the Incoming branch.
* Added a number of predefined environment variables for the Send Batches.
* Added a number of additional fields for the "Use System Address Book" feature.
* Changed the "Bracket All Columns" checkbox to the "SQL Canonical Mode" combobox.  Added the "Auto" mode where column/table names are bracketed if they match an SQL reserved word.
* Simple Merge files are now decoded according to modern CSV convention.  Quote marks are now expected to be doubled-up instead of being preceded by a backslash.  It may be necessary to update your Simple Merge files.  This fixes an incompatibility with files exported from newer versions of Access and Excel.
* When storing a string to a database column, the string is now truncated to the column size in order to avoid an overflow error.  This specifically eliminates SQL Server error 1406.
* Fixed an incorrect message index reported on the Progress Window.
* Fixed a problem when processing email files on the hard drive.  A repeated Incoming Operation was not recognizing the addition of new files.
* Fixed the Check Blacklisting tool.  All domains would appear blacklisted if the "Use OS for DNS" box was checked.


Version 26.1 (March 6th, 2006)
* Added the get_recipient_list() G-Merge function.
* Added the ability to perform offline product activation.
* The Progress Window was not reporting a correct index when using the "Send Only To Range" feature.
* Fixed a bug with the dbe_add_row() function always returning NULL.
* Fixed a possible inability to connect to the Product Activation Server (when using a proxy server).
* Fixed a potential failure of the "Auto-Detect DNS" feature (on non-DHCP systems).
* Fixed a fatal error when declaring a function outside of the Pre-Send or Pre-Incoming Script.


Version 26.0 (February 24th, 2006)
* Added support for the new Gammadyne Product Activation System.
* Added support for user-defined G-Merge functions.
* Added the "Log Size Limit" setting to the Logging branch.
* Added to the "View Result Set" tool the ability to add new rows.
* Added the file_date_get(), mailbox_count(), extract_day_of_week(), str_left(), and str_right() functions.
* Added the db_get_date(), db_get_number(), and db_get_string() functions.  These are variations of the db_get() function that guarantee a particular return type.
* Added to the email_send() function the ability to include attachments.
* Added the ability to force the use of the HELO command (instead of the EHLO command).  Simply enter the text "<helo>" at the beginning of the "Override EHLO Domain" setting.
* Added a "Test" button for each SMTP and DNS server returned by the "Locate Mail Server" tool.
* Added the "Refresh" button at the bottom of the "Locate Mail Server" window.
* Added a number of predefined variables for the Pre-Send Script.
* Added to the db_execute() function the ability to store the first column of the first row of the result set in a variable.  This is especially useful for obtaining the result of a stored procedure.
* Increased maximum number of threads from 256 to 1024.
* G-Merge functions will no longer produce an error when a NULL parameter is specified.
* The "Simple Send" and "Test SMTP Servers" tools will now obey the "Override EHLO Domain" setting.
* The Quoted-Printable encoding will now encode leading periods in order to avoid a problem with SMTP servers that do not obey period-stuffing (RFC-821 4.5.2).
* The "CC:" and "BCC:" headers now accept commas as email address separators.  Please note that the behavior of Gammadyne Mailer has changed:  any comma appearing outside of a quoted string will now be treated as a separator.  For example,  Doe, John <john@foo.com>  is no longer a valid email address in the CC: and BCC: headers.
* The POP3 errors "Data fetch failure" and "Command send failure" will now report the specific socket error code.
* Fixed a problem with the "Restart operation in no-Preview mode" button.  If a Recipient File is used, the mailing would go to each recipient twice.
* Fixed a logging glitch after clicking the "Proceed with removal" button.
* Fixed a problem with the "Log Connection Errors" setting being inappropriately disabled.
* Fixed a problem with an empty -Conversation- variable after attempting delayed retries.
* Fixed potential delay and truncation problems with the http_fetch() function.
* Fixed a problem with the "Ignore Soft Bounce-Backs" feature not logging the reason that the email is being ignored.
* Fixed SMTP Error 4541 when calling email_send() during an Incoming Operation.
* Fixed a crash when performing an Incoming Operation with a POP3 user name containing "%s".
* Please Note:  Windows XP SP2 limits the number of simultaneous connection attempts to 10 (Event ID 4226 will appear in Event Viewer).  This can have a very negative effect on Direct Delivery and Multithreading performance.  There is no work-around.


Version 25.3 (September 14th, 2005)
* Added the "Count Recipients" option to the Logging branch.
* Added to the WYSIWYG HTML editor the ability to toggle the absolute/relative positioning status of an object.  Right click on the object, then choose "Float" from the Alignment menu.  Once in absolute positioning mode, you may drag the object to any location.
* Added the "Convert to lower case" and "Reduce to simple form" options to the "Change Email Address" tool.
* Added the "Insert Environment Variable" and "Run Batch" options to the context menu for the batches.
* Added the "Display summary" option to the "Add Recipients" tool.
* Added the [[-From-]] and [[-Sender-]] predefined variables for the Success Script and Failure Script.
* Added the "Undo" button to the HTML editor's toolbar.
* When aborting a Removal Operation during an Incoming Operation, the user is now prompted if they wish to abort the entire Incoming Operation.
* The find_first_file() and find_next_file() G-Merge functions will now return the complete filepath instead of just the filename, as documented.
* Numerous minor improvements.


Version 25.2 (July 14th, 2005)
* Added the ability to process incoming email located on the hard drive.
* Added the "Email Send Log To" feature to the Logging branch.
* Added a help file guide on configuring a project to process double opt-ins.
* Added the compare() G-Merge function.  Although it performs the same job as the relational operators, it eliminates a problem with WYSIWYG HTML editors canonicalizing the "<" and ">" characters.
* The "Accounts" branch has been renamed "Source".
* The "Continuously Check Account" setting has been renamed "Repeat Incoming Operation".
* The HTML Editor's spell checker will now avoid canonicalized characters, such as "&nbsp;", and everything between the <script>...</script> tags.
* Fixed an incompatibility with databases that require the "memo" (large text) columns of a result set to be read in sequential order.


Version 25.1 (May 10th, 2005)
* Added the "(Auto)" option to the drop-down list for the HTML Character Set.  If this option is selected, the character set will be automatically determined from the HTML body's meta tags.
* Added the ability to edit the Custom Headers on the Preview Window.
* Eliminated the need for GHELP.EXE.  The main application executable will now handle displaying the help file.  This reduces the size of the installer by about 700 KB.
* When using the "Forward to all recipients" Processing Mode and the "Members Only" option, the message will no longer be forwarded if there is no valid email address in the From: header.
* The WYSIWYG HTML editor will now keep lines under 500 characters, preventing the "Troubleshoot HTML" tool from reporting a problem.
* Fixed an incorrect elapsed time in the Incoming progress window.  Also, clicking the "Abort" button will now prompt the user for confirmation.


Version 25.0 (April 11th, 2005)
* Added the "Notify Operation Errors" setting to the Logging branch.  This allows errors that occur during a Send Operation or Incoming Operation to be emailed to an administrator.
* Added the "Log Recipient Data" setting to the Send/Logging branch.
* Added the switchr() G-Merge function.  This operates just like the switch() function, except that a relational operator must be specified for each field.
* Added the "Collapsable" option to the Settings Tree's Tree Options menu.
* Added the "View" button to the Simple Send window's Attachments table.
* Added support for overriding the outgoing email's date.  If a "Date:" header is specified in the Custom Headers, no Date: header will be automatically generated.
* Added to the db_get() function support for Oracle table names that contain a period.
* Added support for the MySQL's RAND() function in the "Order By" column.
* Improved the "Locate Mail Server" tool.  The operation is now performed in a background thread that can be aborted.  All data can be easily copied to the clipboard, including a full text report.  All DNS servers and mail servers are now listed.
* The Send Progress Window will now remember its previous position on the screen.
* The Send Log will now report "local success" instead of just "success" when a Direct Delivery fails but the Retry Direct Delivery Failures Locally is successful.
* Rearranged the sub-branches of the Send branch to a more logical order.  The Send Batches now share a single branch.
* The "Verify Email Address" tool now maintains a list of past entries.
* System-G windows will now stay hidden after the "Show Desktop" button is clicked.  Fixed a problem with minimizing a System-G window by clicking on its taskbar button.
* Numerous minor improvements, especially interface improvements.
* Fixed the Post-Send Script's [[-EndDate-]] variable.
* Fixed a bug that could cause an invalid G-Merge variable to produce no error message.
* Fixed some problems with the "View result set" tool's handling of multiline text.
* Certain Direct Delivery errors will no longer prevent a local retry.  For example, receiving a 554 error in response to the MAIL FROM command should be retried locally because this rejection can be due to sending from a dynamic IP address.
* Fixed a potential crash if an email address contained the "%s" character sequence.


Version 24.6 (February 16th, 2005)
* Added the email_send() G-Merge function, which will send a single email.  This can be useful for informing an administrator when an operation has completed.
* Added the ability to send an email directly to Gammadyne Technical Support from the Send Feedback window (on the Help menu).
* Idle CPU utilization has largely been eliminated.
* The file_save() function will no longer cut the file off at the first 0 byte.
* Fixed a bug (since 24.5) that would cause the help file to open if the "P" key is pressed in the HTML Editor.  Also fixed the F1 key.
* Fixed a problem (since 24.5) with servers that reject Delivery Status Notifications with the 555 error code.


Version 24.5 (February 1st, 2005)
* Added the "Close database between operations" setting to the Database/Setup branch.
* Added the [[-Conversation-]] predefined variable for the Success and Failure scripts.  This variable contains the entire command-response conversation with the SMTP server.
* Added the incoming_is_disposition() function, which determines if an incoming email is a Delivery Status Notification.
* Added to the help file an explanation of how to remove Reading Confirmation Requests from list-server emails.  Also added an example of how to ignore Delivery Status Notifications.
* Added to the help file a guide on resuming interrupted Send Operations.
* The "Test SMTP Server", "Test POP3 Server", and "Test DNS Server" tools now use a separate thread to test the server.  This allows the window to react instantly to a click on the "Abort" button.
* When sending an email with Direct Delivery, and there is a BCC header or the "Send copy of every nth email" feature comes into play, the Success/Failure script will no longer run for the extra email (which is sent separately from the original email).  Also, the "Append Successes" and "Append Failures" features will be ignored.
* Improved the "Check PTR Record" window.
* The members list for the "Members Only" feature is now reloaded in between repeated Incoming Operations.  This is necessary so that new sign-ups are immediately recognized, even when another process is adding recipients to the mailing list.
* If an SMTP reply code above 503 is received in response to the RCPT command, retries are no longer attempted.  These errors should not be reattempted by Direct Delivery because it angers certain mail servers.
* If a 553 or 554 SMTP reply code is received in response to the MAIL FROM command, retries are no longer attempted.
* Fixed a problem with hyperlinks sometimes being broken by the "Line Length" setting.
* Fixed a problem with the incoming_get_bounce() function cutting off the last character of the email address.
* Fixed a problem with the "Direct Delivery Retries" setting being ignored unless the "Retry Direct Delivery Failures Locally" option is checked.
* Fixed the "Retry Direct Delivery Failures Locally" feature, which was accidentally broken in version 23.0.


Version 24.4 (November 12th, 2004)
* Added the "Import from CSV" and "Export to CSV" options to the context menu for table controls.
* The Simple Send tool will now embed HTML images properly.
* Fixed a bug (from 24.3) that caused a crash when using the Simple Send tool.


Version 24.3 (October 20th, 2004)
* Added the "Write Email To Directory" option to the Send branch.
* Added the ini_increment() and ini_decrement() G-Merge functions.
* Added support for G-Merge in the filename of an Explicit Attachment.
* Added to the manual an example of how to use GMCOM.DLL from the C# language.
* Fixed a fault that would occur upon process termination when using GMCOM.DLL from a C# program.
* Fixed a couple of problems with Example.MMP.
* The "SMTP Timeout" setting now defaults to 600 seconds.  This is necessary for SMTP servers that employ the "SMTP Delay" method of spam prevention.  We strongly recommend that you change this setting in all of your projects.
* The [[disregard]] statement is now handled properly when used indirectly with the gmerge() or include() functions.
* Corrected the instructions for "List-Serving Example #1:  Moderator-Only Posting".
* Numerous minor improvements.


Version 24.2 (September 9th, 2004)
* Added the "Check Blacklisting" tool.
* Added to the Send Log a list of all operation parameters.
* Added the ability to specify multiple domains on a single row of the Domain Throttles table.  This is useful when multiple domains are actually using a single mail server.
* Added the "Abort Operation On Failure" option to the "Database/Setup" branch.  If checked, the Send Operation will halt if there is an error storing the Successful Send Date.
* Added to the manual a guide on Auto-Forwarding.
* Added the "Import from project" option to the context menu for the Domain Throttles table.
* Button icons now have a transparent background.
* The Domain Throttle feature will now use a domain's MX record to determine if throttling is necessary.  For example, if there is a throttle for "tiscali.com", then the recipient "foo@worldonline.co.uk" will be throttled because the mail server for "worldonline.co.uk" is "mk-cpfront-9.mail.uk.tiscali.com".
* In order to improve performance on large mailings, the "A" and "MX" DNS caches have been expanded from 500 to 5000 entries.
* If there is a "Priority:" header in the Custom Headers field, it will now be exempt from Header Character Set Encoding.
* The Simple Send tool will now report the status of the Send Operation instead of automatically displaying the log.
* Email addresses in the following format are no longer considered illegal:
	foo@bar.com <foo@bar.com>
* Fixed a weakness that could allow corrupt DNS data to hang a thread.
* Fixed a potential crash in the HTML Editor when changing the font style of a selection.


Version 24.1 (August 3rd, 2004)
* Added the Send Script, which executes for each recipient.
* Added the "Log Entire 'Forward' Operation" option to the Incoming branch.
* Added the incoming_get_bounce(), file_find_first(), and file_find_next() functions.
* Added the "x" format code to the number_format() function for producing hexadecimal output.
* The Incoming Log will now report a correct database ID when using the "Update/Add to Database" Processing Mode.
* Fixed a bug that prevented the "Add To Database" and "Update/Add to Database" Processing Modes from acquiring the newly added row.
* Fixed some problems with the "Simple Send" tool's HTML Editor.
* Fixed a bug in the "Delayed Retry" feature that would cause the email to be lost if the domain could not be located.
* Fixed a bug in the "Delayed Retry" feature that could cause the operation to report that it would not finish for over 49 days.


Version 24.0 (July 19th, 2004)
* Added the WYSIWYG HTML Editor.  Note:  if you never click on the HTML Editor's "Edit" tab, then Gammadyne Mailer will operate exactly as it did previously.
* Added the "Use soft-bounce defaults" and "Edit soft-bounce defaults" options to the context menu for the Body Criteria.
* Added the "MIME" folder to the Preview Window.
* Added the str_find_last() and str_find_last_i() G-Merge functions.
* Added the time_zone_bias_minutes() and time_zone_bias_text() G-Merge functions.
* Added the "b" date format code, which represents the Time Zone Bias.
* Added to the "Locate Mail Server" tool a drop-down list of past entries.
* Added to the Incoming Log's summary the total number of recipients added or removed.
* Added statistics to the end of the Add Recipients log.
* Added a menu option to abort a Send/Incoming operation when right clicking on the taskbar button or tray icon.
* The name of the current project will now appear on the taskbar button, in the taskbar balloon help, and in the system tray balloon help.
* When converting a string to a date, the Time Zone Bias is now obeyed (if present).
* The SMTP Timeout now defaults to 120 seconds.  The Immediate Retry setting now defaults to off.  These changes should help prevent duplicate deliveries.
* GMCOM.DLL will now report more detailed information when the registration status cannot be determined.
* The Direct Delivery setting is now unchecked by default.  Due to the common practices of greylisting and banning residential gateways, it is now recommended that all email be sent through a mail server located on a web server.
* Word-wrapping is now prevented from breaking https: hyperlinks.
* The db_acquire_row_id() function now accepts non-numeric identities.
* The "Test POP3 Servers" tool will now list the user name in the log.
* The add_recipients() function now returns the number of recipients that were successfully added, or -1 if an error occurred.
* An error is now reported if the Send Log file cannot be created.
* Minimized Send Operations will now obey the "Minimize to tray" option instead of always minimizing to the taskbar.


Version 23.0 Five Year Anniversary Edition (5/12/2004)
* Added the "Delayed Retry" feature to the Send branch.  This feature is necessary to send email via Direct Delivery to SMTP servers that employ Greylisting.  An explanation of Greylisting has been added to the help file's Glossary.  Because of Greylisting, Direct Delivery is no longer recommended as superior to using a local SMTP server.
* Added support for non-numeric Identity Columns.
* Added the dbe_add_row() function, which adds a row to a table in an external database.
* Added the "Default date format" and "Default time format" settings to the Details branch.
* Added the "Include attachments" option to the context menu of the Body Keyword Criteria.  If checked, body keywords are also allowed to appear in an attachment.
* Added the "Reduce to simple" option to the "Add Recipients" tool.
* Added the [[-Destination-]] predefined variable for the Success/Failure Scripts.
* Added the "/mx" command line switch, which reports the mail server for a specified domain.
* Added the fatal() G-Merge function, which can be used to halt an operation with a fatal error.
* Added to the http_fetch() function an optional second parameter that contains HTTP headers.
* Numerous improvements to the Preview Window.
* When performing a spell check on the HTML Body, all HTML tags are now ignored.
* Renamed the "Retry Failures" setting to "Immediate Retry".  Moved the "Override EHLO Domain" and "Save project before sending" settings to the Details branch.  Moved the "Display send summary" and "Delivery status notification" settings to the Logging branch.
* Multiple email addresses are now allowed in the Reply-To: header.
* The random_xxx() G-Merge functions now use a randomized seed.
* The Remove Recipients tool will now log database errors.
* Numerous minor improvements.
* Fixed a bug that could cause inadequate information to be reported when a database assignment error occurs.
* Fixed a problem that was observed with a particular POP3 server that was not sending responses in a single packet.
* Fixed a bug that would prevent the Pre-Incoming and Post-Incoming scripts from using predefined variables when there is no Incoming Script.


Version 22.2 (April 6th, 2004)
* Added support for the Gammadyne Spell Checking Module.
* Added the "Lookup Illegal Addresses" tool to the Database menu.  This allows you to edit those database records containing an illegal email address (to correct typos or obvious mistakes).
* Added the log_open(), log_close(), and log_banner() G-Merge functions.  These allow you to dynamically determine the filepath of the log file in the Pre-Send Script.  It also allows you to close the log, then reopen it later, thereby eliminating undesired information.
* Added the convert_to_number2() function, which is a less restrictive version of the convert_to_number() function.
* Added the decode_header() G-Merge function.
* Added the "/x" command line switch, which performs a Removal Operation using the Removal List.
* Added to the syntax of "var" and "let" G-Merge statements the ability to specify a comma-separated list of assignments.
* Extended ASCII characters (128-255) are now permitted in the user name portion of an email address.  For example, the email address fòó@bar.com is now considered legal.  This is necessary for compatibility with some European mail servers.
* Various minor improvements to the Progress Window.
* Numerous minor improvements.
* Fixed a security flaw related to the copying of passwords.
* Fixed a fault that could occur when clicking on a character in the Character Map.
* Fixed a problem with input focus that could occur when adding the first row to a table.
* Fixed a recent bug in the help system that affected hyperlinks inside of tables.


Version 22.1.2 (February 13th, 2004)
* Fixed a problem with the progress window forcing itself to the foreground even when Gammadyne Mailer is instructed to start minimized with the "/m" switch.


Version 22.1 (February 9th, 2004)
* Added the "Lookup Recipient" tool to the Database menu and Welcome Wizard.  This allows you to view and edit those database records that contain a substring.
* Added the sqlize_date(), mime_html_set(), and mime_text_set() G-Merge functions.
* Added the "Purchase/Register" option to the Welcome Wizard (shareware mode only).
* Updated to System-G version 2.2.
* Email addresses are now considered invalid if the top-level domain contains non-letters or more than 6 characters.
* During Incoming Operations, a "NOOP" command is now sent to the POP3 server every 10 seconds (if no other commands have been sent).  This should prevent the POP3 server from dropping the connection, which can be a problem when performing a long List-Serving operation.
* Forwards will now obey the "Sender", "Direct Delivery", and "Override EHLO Domain" settings.  If you have an Incoming project that performs forwards without Direct Delivery, make sure there is a valid email address in the "Sender:" field (on the Headers branch).
* The date_valid() and datetime_valid() functions can now accept non-date parameters without producing an error.
* Help file:  tables will now copy to the clipboard in a better format.  Non-breaking hyphens are converted to normal hyphens before copying, which is especially important when copying a script.
* Fixed a Welcome Wizard bug that could prevent projects from staying removed from the Recent Projects list.
* Fixed a bug that could possibly result in the cut-off of an incoming email.
* Numerous minor improvements.


Version 22.0 (December 2nd, 2003)
* The entire help file has been reviewed from beginning to end.  Countless additions, changes, and elaborations have been made.
* Added the "Fast Removal" feature to the Remove/Options branch.  This can greatly speed up Remove Operations by placing the burden of finding recipients on the database.
* Added the ability to override each individual controls' font size.
* Added the "Ignore Soft Bounce-Backs" option to the Incoming/Criteria branch.  Added the incoming_is_soft_bounce() G-Merge function.  These features allow you to ignore "soft" bounce-backs (such as when the mailbox is full).
* Added a number of SNMP statistics to the bottom of the Send Log.  Added the -SNMPStats- predefined variable for the Post-Send Script.
* Added the db_add_row_table() G-Merge function, which adds a row to a different database table than what is specified in the project.
* Added the db_get_query() and random_string() G-Merge functions.
* Added a number of predefined variables for the Post-Incoming Script, which contain various statistics about the Incoming Operation.
* Added the -BodyKeyword-, -HeaderKeyword-, and -SubjectKeyword- predefined variables for the Incoming Script.  This allows you to determine which criteria keyword was found in the incoming email.
* Added the -RejectionCount- predefined variable for the Post-Send Script.
* Added the "/table" command line switch, which overrides the database table name.
* Added the option to turn off the Removal Operation confirmation prompt.
* Between repeated Incoming Operations, the progress window will now display various statistics.
* Updated to System-G version 2.1.
* Numerous improvements to balloon help.
* The "Add Recipients" tool will now remember the "Ignore Duplicates" setting.
* When the user clicks on the Preview Window's "Send Messages" button, and the Preview Limit has truncated the operation, the user will now be given the choice of starting the operation over in the "No Preview" Send Mode.
* The correct Content-Type header is now used for embedded images with the .png and .jpeg extensions.
* When performing header character set encoding, email addresses will no longer be encoded.  Only text that is between email addresses will be encoded.  This fixes a problem with certain Unix mail servers that are not compatible with encoded email addresses.
* Fixed a bug with the View Result Set tool's Delete Row feature.  It will no longer break the detection of altered data.
* Numerous minor improvements.


Version 21.1 (September 12th, 2003)
* Added the build_email_address(), extract_date(), extract_time(), include(), mime_get_header(), mime_get_html_body(), mime_get_text_body(), time_build(), time_compare(), and time_valid() G-Merge functions.
* Added the "Save to file" button to the Simple Send window.
* Added the "Check Now" button to the progress window that is displayed when waiting for the next Incoming operation to start.
* Added the "HTML Character Set" setting to the HTML/Options branch.  This works around a false-positive bug in the Spam Assassin software.
* Added the [[-MessageID-]] predefined variable.  It contains the "Message-ID:" header of the outgoing or incoming email.
* Added text drag & drop support to all editboxes.
* Added drag & drop support to the Simple Send Window's attachment table.
* All drag & drop operations now provide feedback via the mouse cursor as to whether or not the control under the cursor will accept a drag & drop.
* When performing a drag & drop, "Tree" and "Drawer" controls will now automatically switch to the branch/folder that is under the mouse cursor.
* Improved the appearance of the Welcome Wizard.
* Numerous improvements to the help file's section on G-Merge Functions.
* When creating an email's MIME, a carriage return is no longer automatically appended to each section's body.
* Gammadyne Mailer will now read the response from the "QUIT" POP3 command.  Previously, this was not done because the response was not relevant.  However, when using the "Limit number of messages processed" and a short "Continuously check account" time interval, some mail servers could refuse connections for a short time because they wait for the "QUIT" response to be received.
* Fixed a problem with losing the acquired database row after calling the incoming_autorespond() G-Merge function
* Fixed the missing "Add" button at the bottom of the Explicit Attachments list.
* Fixed a potential hang when using certain skins under Windows 95.
* Fixed a fatal error that could occur when decoding UTF-7 that ends in the plus sign (+) (although this is illegal syntax).


Version 21.0 (July 14th, 2003)
* Added the date_day_of_year(), date_build(), datetime_build(), file_copy_m(), file_delete_m(), file_move_m(), mime_html_append(), mime_html_prepend(), mime_text_append(), mime_text_prepend(), and mime_delete_header() G-Merge functions.
* Added to the "Simple Send" tool the ability to send attachments.
* Added support for multiple Exclusion Files.
* Added the "WaitUntil" pseudo-project field.
* Added to the "View Result Set" tool the ability to delete rows.
* Added the "Log entire 'Auto-Respond' operation" option to the Incoming branch.
* Added the "Limit HTML Line Length" option to the HTML Body/Options branch.
* Added the "Insert line breaks" tool to the context menu for the HTML Body.
* Added to the "Verify All Addresses" tool support for lists of email addresses separated by semi-colons or commas.
* The example.mmp project can now be removed from the Welcome Wizard's list.
* The extract_simple() G-Merge function will now properly handle strings that contain carriage returns, ignoring everything thereafter.
* Speed improvement to MIME decoding and Base-64 decoding.  Fixed a problem where MIME decoding might place an extra carriage return at the end of a section body.
* A box is no longer drawn around the branch's controls.
* A tick mark is again allowed in an email address user name.  We now recognize that it is more important to be able to send to such email addresses than to be able to process improperly formatted bounce-backs.
* When Gammadyne Mailer is minimized, and an auto-response or forward is sent, the progress window will now be minimized as well.  Previously, it would pop up on the screen during the send.
* When List-Serving with "Members Only" and "Auto-Respond" both checked, it is no longer necessary to check the "Process From:" box for the auto-reply rejection to be sent to non-members.
* GM.EXE is no longer compressed with ASProtect.
* Renamed the options on the Servers branch to emphasize that they are only needed for dial-up networking.
* Fixed a problem with encoding long lines of text to Quoted-Printable.  The last line was not always being properly word-wrapped.
* Fixed a problem with the auto-responder sending emails to all members of the Recipient File when following a 'Forward to all' operation.
* Fixed a problem with the "Log entire 'Forward to all' operation" option causing the log to later become truncated if an auto-response is sent.


Version 20.5 (June 3rd, 2003)
* Added the "View result set" tool to the Database menu.  This useful utility allows you to view and edit the database result set.
* Added the "Ignore attachment errors" option to the Attachments branch.
* Added the "Ignore embedded file errors" option to the Embedded Files branch.
* Added the date_add_days(), date_add_hours(), date_add_minutes(), date_add_seconds(), and date_add_years() G-Merge functions.
* Added the ability to delete entries from the drop down lists in the various Test Send features, as well as in the Simple Send window.
* Added the "Log entire 'Forward to all' operation" option to the Incoming branch.
* The "Test Send" tool will now ignore the "Send Copy of Every nth Email" setting.
* An error is now produced before the Send Operation starts if any recipient source file has dissimilar Simple-Merge columns.
* The MIME boundaries generated by Gammadyne Mailer are now identical to Outlook's.  This works around a false-positive bug in the Spam Assassin software.
* The "Direct Delivery" option is now checked by default when creating a new project.  We're convinced that direct delivery is better than local delivery.
* The "Forward to All" Processing Mode is now compatible with the "Identical" Send Mode.
* In the event of a Winsock send error, the operating system's error code is now logged, along with an English description of the error code.
* A tick mark is no longer allowed in an email address user name.  This fixes a problem with bounce-backs that place the email address inside tick marks.
* Fixed a problem with minimizing Gammadyne Mailer to the tray while performing an operation.  After the operation finished, the tray icon would disappear.
* Fixed an incompatibility when using a Recipient File specification with wildcards and the "Add to Recipient File" Processing Mode.
* Numerous improvements to the help file.
* Numerous minor improvements.


Version 20.4 (April 15th, 2003)
* Updated the "bounce strings.txt" file.  Remember that you must delete this file before installing the new version since the installer never replaces this file.
* When performing a Remove Operation with an empty Removal List, the window that prompts for email addresses will now allow you to enter nothing.  This is necessary when removing illegal, duplicate, or blank addresses.
* Fixed an inappropriate "Function expects 1 parameter" error in the db_add_row() function.


Version 20.3 (April 10th, 2003)
* Added the "Send Copy of Every nth Email" feature to the Send/Logging branch.  This allows you to monitor a domain to make sure that it is not cutting off your deliveries.
* Added the "Process One After Keyword" and "Process One Before Keyword" options to the "Addresses in Body" setting.
* Added the "Generate Message-ID" option on the Headers branch.
* Added the "Process Priority", "Build Thread Priority", and "Send Thread Priority" settings to the new "Send/Details" branch.
* Added the "Close summary after 30 seconds" option to the Incoming branch.
* Added the add_recipients() G-Merge function.
* Added the latch_until() and latch_until_i() G-Merge functions.  Unlike other latch functions, these allow you to specify an additional substring that terminates the latching.
* Added the str_discard_prefix(), str_discard_prefix_i(), str_discard_suffix(), and str_discard_suffix_i() G-Merge functions.
* Added the "Preview HTML" option to the context menu for the HTML Body.
* Added the Auto-Complete feature to Recall Comboboxes.
* Added support for pseudo-project fields being commented out with a semi-colon.
* If the user starts a Removal or Removal Preview operation, and the Removal List is empty, they will now be prompted to enter the email addresses.
* The Send Log will now list the project name.
* Single character domain names (e.g. "k.ro") are now considered valid.
* Fixed a bug in the HideSendBatch1 and HideSendBatch2 pseudo-project fields.
* Fixed an incompatibility with Astonshell.com's AltDesk software.
* Numerous minor improvements.


Version 20.2 (March 6th, 2003)
* Added to the db_add_row() function the ability to populate any number of columns in the new row, preventing the need to follow-up with "let" statements.  This new ability works around db_add_row()'s restrictions on the Identity Column.
* Added the "Log connection errors" setting to the Incoming branch.
* Added the report_variables() G-Merge function, which is useful when debugging a script.
* Added the get_recipient_filename() G-Merge function, which can be used to customize emails based on the mailing list that contains the recipient.
* Added the get_attachment_header() and is_attachment_inline() G-Merge functions.
* Added the blowfish_encrypt() and blowfish_decrypt() G-Merge functions.
* Added the load_file_w() and load_mem_w() functions to GMCOM.DLL - they accept 16-bit Unicode strings.
* Added the "Halt on error in Success/Failure Script" options.
* The help system now allows text to be selected by character, not just by line.
* When processing compound email addresses in an Incoming email's headers, the recipient's name is no longer required to be inside quotes.
* The Pause/Break key can now be used to pause a Send Operation.
* The gmcom.exe and gmcom2.exe programs will now allow their output to be redirected to a file with the > operator.
* Improved appearance of toolbar icons.
* The date format "31/Dec/2003" is now accepted.
* The get_attachment() function (and its sisters) will now ignore empty attachments that have no filename.  Incoming Script Example #9 now demonstrates how to display all of the attachments in an incoming email (for the purpose of debugging a script).
* The "Change Email Address" tool will now operate on both the Recipient File and Recipient List if both are specified.  Numerous other improvements have been made as well.
* Fixed a problem with the "DNS IP Addresses" setting only remembering the first line.
* Fixed a problem with the "Issue SQL Command" tool only remembering the first line of the previous command.


Version 20.1 (December 27th, 2002)
* A "Message-ID:" header is now included in all outgoing emails.  This will improve delivery success rates to AOL.COM.  Special thanks to Chris Birk for discovering this trick.  AOL does not make this information public.
* Added the "Cursor Type" setting to the Database/Setup branch.  The change in version 20.0 to Forward Only cursors caused a problem with some databases.  The default for this setting now matches the old behavior.
* Added the file_contains() and file_contains_i() G-Merge functions.
* Old DNS settings left in the registry will now be ignored by the "Auto-Detect DNS Settings" feature.


Version 20.0 (December 20th, 2002)
* Added the gmcom.dll library, which encapsulates the Gammadyne Mailer email sending engine in a COM object.  This allows third-party programs to use the engine.
* Added the gmcom.exe program, which performs a pseudo-project send operation except with no user interface at all.  This is useful in web server environments where only console applications can be executed.
* Added support to System-G for interface "skins".  We strongly recommend that you try some of the new skins on the "Skins" submenu of the "System-G" menu.
* Added support to the Direct Delivery feature for CC: and BCC: headers.  However, please note that a separate email must be sent for each address in one of these headers.
* Added the Pre-Incoming and Post-Incoming scripts.
* Added the ability to run the Success/Failure script after auto-responding, forwarding, and list-serving.  The Success and Failure Scripts have been moved to their own branch under the Send branch.
* Added the "Pulse" feature to the Send branch (an alternate method of throttling).
* Added the "Process Attachments" option to the Incoming/Processing branch.  This allows you to process all email addresses found in an incoming email's attachments.
* Added a wizard for setting up auto-responders.  Added to the help file a guide on auto-responding.
* Added the incoming_forward_to_all() G-Merge function which performs the exact same operation as the "Forward to all recipients" Processing Mode.
* Added the latch_attachment() G-Merge function, which allows you to perform a latch operation on an incoming email's attachments.
* Added the sqlize() G-Merge function, which makes it easier to insert a string literal into an SQL statement.
* Added the [[-OperationType-]] predefined variable, which a script can use to determine if this is a send operation, auto-response, forward, or forward-to-all.
* Added to the convert_to_date() G-Merge function an optional second parameter that determines if the day precedes the month (for European date formats).
* Added the "Remove From Files" option to the Remove/Locations branch.
* Added some new strings to the "bounce strings.txt" file.  Remember that you must delete this file before installing the new version since the installer never replaces this file.
* Added support to "let" statements for the += and -= operators.
* Added more menu icons.  Reduced the aliasing on certain toolbar icons to make them more legible.
* System-G settings are now stored in a file instead of the registry to eliminate certain security issues.
* When list-serving, the "Custom WHERE Clause" can now contain G-Merge statements.
* When using the "Insert Function" tool, if a function has been selected, clicking the "Help" button will now open the help file at the exact spot where the function is described.
* The "Custom WHERE Clause" will now discard the "WHERE" keyword instead of producing an error.
* The "Forward As Raw MIME" option is now unchecked by default.  Please note that this is contrary to backward compatibility with projects saved by versions prior to 16.5.3.
* When performing a mailing, the "Abort" button will now respond immediately when a thread is waiting for a DNS query.
* The [[-Message-]] G-Merge variable can now be modified in the Incoming Script in order to change the message that is forwarded by the "Forward to all recipients" Processing Mode.
* The "Log Removals" feature will now log illegal and duplicate addresses.
* Databases will now use the more conservative SQL_CURSOR_FORWARD_ONLY option instead of SQL_CURSOR_KEYSET_DRIVEN.  This improves overall performance and eliminates a problem with Oracle queries that use joins.
* To prevent a potential fault, the operation log is now automatically truncated at 100 megabytes.  Even so, you should turn off logging for large mailings.
* For all Explicit Attachments, all carriage returns and linefeeds will now be normalized to carriage return/linefeed pairs.
* The second parameter of the date_format() function can now be omitted - it will default to "d-M-yy h:ii:ssap".
* The second parameter of the number_format() function can now be omitted - it will default to ".0".
* When the file_append() G-Merge function fails, it will now include an error message in the log.
* The Bounce-Back Wizard will now generate a bounce-count script that properly takes the Removal Method into account.
* Fixed an erroneous "Identity Column required" error message when performing a Removal Operation on a Simple-Merge list.
* Fixed a rare problem with SMTP authentication.


Version 19.2 (September 17th, 2002)
* Added the following G-Merge functions:  date_current(), field_exists(), random_switch(), round_down(), and round_up().
* Added the "Test DNS", "Test SMTP", and "Test POP3" toolbar icons.
* Added icons to the menus.
* Added new System-G options to control toolbars.
* Added to the "Extract Addresses" tool the ability to choose what characters are used to separate the extracted addresses.
* Added support for G-Merge in the "Reading Confirmation" header.
* Improved the appearance of toolbar icons.
* Removed the toolbar watermark.
* When printing the help file, the user will now need to use an operating system window to select the printer.  This eliminates an incompatibility with certain printers.
* There is now a checkbox for the "Reading Confirmation" and "Expiration Date" fields.
* Fixed a minor line-breaking problem in the new help system.
* The Incoming Wizards will no longer automatically set the "Limit Number Of Messages Processed" feature since this could cause an endless loop if the "Delete Messages" option is not set to "Always".  You should check your Incoming projects to make sure this dangerous combination of settings is not being used. The problem is when Limit Number Of Messages Processed is set to n, and none of the first n messages are deleted, causing these same messages to be processed over and over.


Version 19.1 (August 27th, 2002)
* Added a new Help file system.  This system has the following advantages over the old Windows Help System:
  - The entire help file can be printed at once, instead of by topic only.
  - When printed, the page number that a hyperlink is pointing to will be printed.
  - Unprecedented control over how the document is printed, including base font size and margins.
  - Hyperlinks to web pages and email addresses are now supported.
  - The keyword search supports full search expressions, such as:
    "mail server" and (smtp or pop3) and -dns
* Added the "Log Headers" and "Log Body" options to the Incoming branch.
* Added the file_save_temp(), mime_change_header(), and mime_strip_attachments() G-Merge functions.
* Added to the number_format() function the ability to convert a number to several special formats, such as words and roman numerals.
* Added the ability to deal with non-compliant databases that prepend the table name to a result set's list of column names.
* Added to the Help file a section on various AOL topics.
* Numerous improvements to the Help file.
* When the "Prevent Duplicates" feature excludes a recipient, the Incoming Script will no longer run and no Auto-Response will be sent.
* All HTML emails sent to AOL will now use the "Content-Type: text/x-aol" header instead of "Content-Type: text/plain".  This will improve the appearance of HTML emails in old versions of AOL.
* Renamed the "Additional Headers" branch to "Custom Headers".
* The registration number is now held in a file named "gm-reg.ini" instead of the registry.  Gammadyne Mailer will no longer refuse to run if it cannot access the registry.
* The prompt() function will no longer treat the backslash as an escape character (for text controls).
* Fixed an incorrect error reported when opening the Simple-Merge column's drop down list when there are multiple recipient files.
* Fixed a bug with Smart Comboboxes (editboxes that have a drop down list of past inputs).  Upon reloading a project, if the drop down list contained the same text as the project but with different case, it would alter the case of the project's field.


Version 19.0 (May 15th, 2002)
* Added the "Domain Throttles" branch.  This feature allows you to limit the speed at which email is sent to certain domains, such as AOL.com.
* Added the "Limit message size" setting to the Incoming branch.  It is recommended that you use this feature to prevent a very large email from interfering with an Incoming operation.
* Added the "Change To: Header", "Change From: Header", and "Change Reply-To: Header" settings to the Incoming/Processing branch.  These settings change headers in a forwarded email, and are especially useful for list-serving.
* Added the "Strip attachments" option to the Incoming branch.
* Added the /script1 and /script2 command line switches, which allow you to insert G-Merge statements into the beginning or end of the Pre-Send Script.
* Added support for G-Merge in the Custom SELECT Statement.
* Added the following G-Merge functions:  abs(), convert_from_utf7(), convert_from_utf8(), convert_to_string(), file_exists(), promptify(), round(), round_to(), sleep(), sqrt(), str_first_filled().
* Added to the "Issue SQL Command" tool the ability to copy a column of data from the Results Editor to the clipboard.  Right click on the column heading and choose "Copy column to clipboard".
* Added the "Prompt before send" option to the Options menu.  This can be used to suppress the "This is your last chance to stop the operation.  Do you wish to proceed?" window.
* Added the [[-IsFirst-]] and [[-IsLast-]] predefined G-Merge variables for the Incoming Script.  They allow you to determine if the first or last recipient is being processed.
* Added the [[-Account-]] predefined G-Merge variables for the Incoming Script.  This allows the Incoming Script to take different actions based on which mailbox is being processed.
* Added Incoming Script Example #16, which demonstrates how to archive all incoming email.
* Added to the http_fetch() function support for UTF-8 encoding, which is used by some IIS web servers.
* Added the "Center window caption" System-G setting.
* Added the "Record project history" option to the Options menu.
* The SMTP Throttle no longer operates "per-thread".  All threads will now work together to ensure that the SMTP throttle rate is obeyed.
* The Reply-To: header now permits URL-style parameters.  However, according to our tests, the "subject" parameter was not able to control the subject of the reply.
* Numerous minor improvements.
* Fixed a wizard bug that would cause controls to be reset if the "Finish" button was clicked on the non-last window.
* Fixed a bug in the file_fetch() function not returning an empty string when the file could not be found.


Version 18.0 (April 17th, 2002)
* Added the ability to obtain extended information from the Address Book.  See the "Use system address book" setting on the Recipients branch.
* Added to the db_acquire_row() function the ability to specify the database column name on which the search is to be performed.  Previously, it could only be performed on the Recipient Column.
* Added the ability to use the db_acquire_row() function (and its cousins) in the Success and Failure Scripts.
* Added the "Update/Add to Database" Incoming Processing Mode.  This works similarly to the "Add to Database" mode except that it first checks to see if the recipient is already in the database.
* Added the "Pause" button to the progress window.  This allows you to temporarily pause a mailing.
* Numerous minor improvements to the program, the Help file, and System-G.
* An error is now reported if the "No recipient required" option is used with the "Add to database" Processing Mode.
* Assigning a string value to a numeric database column will no longer result in a SQL error.  The string will be converted to a number automatically.
* Added the change_address() G-Merge function, which can perform the same operation as the Change Email Address tool.
* Added Incoming Script Example #15, which shows how to process incoming email that specifies a change to a recipient's email address.
* Added the "Run Pseudo-Project" option to the File menu.  Previously, pseudo-projects could only be run from the command line.
* Added the str_contains_lower_case() and str_contains_upper_case() G-Merge functions.
* When forwarding an incoming email, if the From: header is illegal, Gammadyne Mailer will now use a bogus email address if necessary to prevent a delivery error.
* Miscellaneous changes to the format of the Incoming Log.
* Added the "Use Custom SELECT Statement" option to the Database branch.
* Added the "Help" option to the bottom of the Tools menu.
* Increased the maximum number of threads from 64 to 256.  However, unless you have a very fast computer and Internet connection, it is very unlikely that you will see any kind of performance improvement from using more than 64 threads.  Windows 9x/ME users should never use more than 64 threads.
* The "Extract email addresses" tool now remembers all previous settings, not just the file list.
* The "=" character is no longer allowed in email addresses to prevent a compatibility problem with the bizarre format of certain Exchange Server bounce-backs.
* Fixed a memory leak that could occur when the System Address Book was used.  This could also cause an Illegal Operation error when Gammadyne Mailer terminated.
* Fixed a problem with the "Extract email addresses" tool when a file contains null bytes.
* Fixed a problem with the "Registry cannot be accessed" error message.  It would instead display an error message with the text "Stack<struct HKEY__*>::pop".  This error message will now offer to open regedit for you.


Version 17.0 (February 26th, 2002)
* Added Incoming Script Example #14, which shows how to process sign-ups, opt-outs, and bounce-backs in a single email account from a single project.  This is now possible because of the new G-Merge functions that have been added.
* Added the remove_recipients() G-Merge function.  This allows you to decide whether or not to perform a removal in the Incoming Script.
* Added the incoming_is_bounce() G-Merge function, which determines if an incoming email is a bounce-back.
* Added the "Convert email addresses case" tool.
* Added the str_contains_any() and str_contains_any_i() G-Merge functions.  They allow you to determine if a string contains any substrings in a list.
* Added the str_line_break() G-Merge function, which will insert line breaks into a string.
* Added the extract_url_field() G-Merge function, which will extract an individual field that is encoded in a URL.
* Added the convert_html_to_text() G-Merge function.  Also, several improvements were made to the HTML to Text conversion process.
* Added the [[abort_operation]] G-Merge statement, which will abort a mailing or incoming operation.
* Added numerous predefined variables for the Post-Send Script.  These variables allow you to log various statistics concerning the mailing operation.
* Added to the Bounce-Back Wizard the ability to set up a "bounce count".
* Added to the Welcome Wizard the ability to delete project files and remove projects from the list.  Right click on a project name for a list of options.
* Added the "Subject" field to the Preview Window.  However, it is hidden by default.  To display this field, right click on the Preview Window's caption and check the "Show Subject" box.  The ability to hide the CC/BCC fields and the list of attachments has also been added.
* The entire help file has been reviewed and hundreds of improvements made.
* The "Repeat Send" feature will now display the number of times that the mailing has been sent when waiting to start the next mailing.
* Moved the "Removal Method" setting from the Database/Setup branch to the Remove/Options branch.
* Removed the Return-Path header field because it is not supported by many mail servers.  You can still add this field on the Additional Headers branch.
* Added the "Domain Aliases" feature to the Remove/Options branch.
* Added the "Forward as raw MIME" option to the Incoming/Processing branch.  This will default to checked for backward compatibility.
* Added the "SMTPServerNew" Pseudo-Project field.  This allows a Pseudo-Project to specify more than one SMTP server.  The "Export Pseudo-Project" tool will now export all entries in the SMTP Server Table if global settings are not being used.
* Added the "PreviewLimit" field for Pseudo-Projects.
* The "Append successes to file" and "Append failures to file" features will now flush all data to the disk to ensure that it cannot be lost in the event of a computer crash.
* The Identity Column field may now be left blank when performing a mailing.  However, it is still required by any feature that modifies the database.
* When running a repetitive incoming operation, any database query results will now be released between operations.  This allows design changes to be made to the database even while Gammadyne Mailer is running.
* Using the Direct Delivery feature with a CC: or BCC: field wil now produce an error since it usually will not work.  When previewing a Direct Delivery operation, the CC: and BCC: fields will no longer be displayed since they cannot be used with Direct Delivery.
* Updated the "bounce strings.txt" file.  This file will not be updated by the installer unless you manually delete it first.  This is a safeguard in case you have made modifications to the file.
* Improved the "Auto-Detect DNS" feature to handle a particular NT configuration.
* Added to the "Check For Update" feature the ability to automatically download and install the new version.
* The "Auto-Insert cid:", "Auto-Insert Content-Location", and "Auto-Detect Embedded Images" features can now handle <img> tags that occupy more than one line.
* Fixed a bug in the convert_from_url() function not converting + characters to spaces.


Version 16.5 (January 15th, 2002)
* Added the "FAQ's" option to the Help menu.
* Added support to G-Merge for C++ style comments.
* The "Specify Header's Character Set" feature will now ignore headers that contain the "=?" character sequence.  This allows you to manually override the encoding of a single header field.
* The http_fetch() G-Merge function will now ignore whitespace and quotes on both ends of the URL.
* The "Repeat Send" window will now display the time until the next operation begins.
* Added the "Preview Limit" setting to the Send branch.  If you increase this setting, don't blame us when you receive an "Out Of Memory" error.
* Added the incoming_autorespond() and incoming_forward() G-Merge functions, which allow you to send auto-responses and forwards from the Incoming Script.  This is useful for conditionally determining when an autoresponse or forward should be sent based on the contents of the incoming email.
* Added support for multiple recipients in the database's Recipient Column.  They must be separated by commas or semi-colons.
* Added to the "Single Send" tool the ability to enter data for a simulated database record.
* Added support to the Incoming feature for the "unicode-1-1-utf-7" character set.
* Added the [[-From-]] predefined variable for the Incoming Script.  This is intended to be used with the new incoming_forward() function.  You may assign a different value to this variable to control the "From:" header of the forwarded email.
* Headers specified on the "Additional Headers" branch will now be ignored if the field name contains spaces.
* In the interest of speed, Gammadyne Mailer will now stop processing recipients when the preview limit is reached.  The only disadvantage is that disqualified recipients will not appear in the log.
* In the interest of speed, Gammadyne Mailer will now stop processing recipients when the index filter is reached.  The only disadvantage is that disqualified recipients will not appear in the log.
* The Send Progress window will now display the project name in the caption.
* Fixed a bug (since 16.4) with loading System-G color schemes.
* Fixed a problem with storing strings to the database that contain a 0 byte.  Null bytes are now converted to spaces.
* Fixed a problem extracting email addresses with a single character user name.  This affects the "Extract email addresses" tool and Incoming operations.


Version 16.4 (December 17th, 2001)
* The send operation will now log the list of database columns in the result set.
* Fixed a problem (since 16.3) with an incorrect "Invalid variable or database column" error with SQL Server.
* Fixed a problem (since 16.3) with the "Invalid variable or database column" error message not listing all database columns.


Version 16.3 (December 13th, 2001)
* Added the "Process Before Keyword" and "Process After Keyword" options to the "Addresses In Body" setting.
* Added the "/dbuser" and "/dbpwd" command line switches, which allow you to override the database user name and password.
* Added the following G-Merge functions:  date_days_between(), date_hours_between(), date_minutes_between(), date_months_between(), date_seconds_between(), date_weeks_between(), date_years_between().
* The escape key will now close the Welcome Wizard.
* The database SELECT statement no longer enumerates all column names.  Instead, SELECT * is used, and then Gammadyne Mailer queries the database for the names of the columns in the result set.  This will help with a problem where tables with many columns cause the SQL command buffer to overflow.
* Single character domain names are now permitted.  Apparently they are allowed in Sweden.
* Fixed a serious multithreading bug that could cause process termination, an access violation, an "Out Of Memory" error, possibly even missing attachments or embedded files.  The problem would occasionally, intermittently arise when sending email with attachments or embedded images using multiple threads.  This embarrassing bug has been present since the introduction of multithreading in version 14.0.  Please accept our sincerest apologies if this bug has affected you.
* Fixed a problem (since 16.1) with escaping double brackets.


Version 16.2 (December 6th, 2001)
* Added the "Prevent duplicates" option to the Incoming/Processing branch, which will prevent email addresses from being added to a list when already present.
* The "/q" command-line switch can now be used to suppress the reporting of errors when the "/a" switch is used to add recipients to a project.
* Sub-domains are now allowed to contain the underscore character, even though this is not technically correct.  Some SMTP servers will not permit anyone to login if the EHLO command contains a domain with an underscore.
* The Add Recipients tool will now display a log of its operation (except when run from the command line).
* The Email Account window in various wizards now has a separate entry for the mail server name and user name.  This is necessary because for some email accounts, the user name is the entire email address.
* Fixed a problem (since 16.1) with the [[-Index-]] predefined variable being incorrect.
* Performance improvement made to thread synchronization.  Reduced the number of thread synchronizations.
* Fixed a problem with browsing the network in the File Picker.
* Fixed a problem with the Add Recipients tool reporting a mangled filename when adding to a Recipient File.  Fixed a related problem with Recipient Filenames that contain a tick mark.
* Fixed a problem (since 16.1) with preview messages being built slower than normal.  Efforts to reduce CPU utilization turned out to be a bit overzealous in certain respects.


Version 16.1 (December 3rd, 2001)
* Added the "Append Rejections" option to the Send/Logging branch.
* CPU utilization has been dramatically reduced.  Overall performance has been improved.
* Added the "Removal Method" to the Bounce-Back and Opt-Out wizards.
* The "Auto-detect embedded images" feature will now detect images specified in the <body background=""> tag.
* The color complexity of the Welcome Wizard's bitmap has been greatly reduced.
* The amount of time used by the database is now reported in the Send Log.
* Implemented a work-around for a bizarre problem that could prevent saving new project files to a network mapped drive.
* Fixed a "No recipients specified" bug when handling database tables that contain an SQL_GUID column.
* Added the "Auto-Insert Content-Location" option to the HTML Body/Options branch.
* Added the "Process Compound Addresses" option to the Incoming/Processing branch.
* Added the "Extract Compound Addresses" option to the Extract Email Addresses tool.
* The "Auto-Insert cid:" and "Auto-detect embedded images" features are now more tolerant of the format of the <img> tags.  The "src=" element is no longer required to appear first.
* Added the final database query to the send log.  Also, the number of rows in the result set will be reported (if known).
* Fixed a bug in the "Insert function" feature when inserting one of the Incoming functions.
* Added the "Direct Delivery Retries" setting to the Send branch.  Gammadyne Mailer can now attempt a direct delivery to additional mail servers if the first delivery fails (when there are multiple MX records for the domain).
* Added support for Identity Columns that contain negative values.
* The "Locate Mail Server" tool will now report all MX records for the domain.
* Increased the maximum number of threads to 64, although this will only help with very fast Internet connections.
* Fixed a problem with using negative numeric literals in G-Merge.
* Fixed a problem with calling db_acquire_row() in the Pre-Send Script.
* Fixed a problem with reading negative integers from the database when db_acquire_row() is used.
* The "Simple Send" tool will now include a To: header field.  Also, the SMTP Timeout will now correctly default to 30 if no project is open when the Simple Send tool is used.
* Numerous minor improvements.


Version 16.0 (November 20th, 2001)
* Added the "Welcome Wizard".
* Added the "Log Removals" feature to the Remove/Options branch.
* Added the ini_get_number() G-Merge function.
* Added the "Check PTR Record" tool to the Tools menu.  This will tell you if Direct Delivery to certain domains, like AOL, is possible.
* Added support for comboboxes and scrollbars, as well as other improvements, to the prompt() G-Merge function.
* Added to the help file a description of using Task Scheduler to schedule operations.
* The ini_set() G-Merge function no longer cares what data type the fourth parameter is.  The value that is stored in the INI file is always converted to a string.
* Changed the Wizards menu hotkey from W to Z.
* Email addresses are no longer considered invalid if a period is immediately before the @ sign.
* Fixed a problem with the "Forward Unprocessed Messages" feature when the "From:" header of the incoming email does not contain a valid email address.  This bug will place the incoming operation in an endless loop if the "Continuously check account" option is specified.
* Fixed a problem with truncating incoming email header fields that contain Base-64 encoded text with an extra trailing null byte.
* Previously, to add a System-G setting, source code had to be written in about 25 different locations.  New settings can now be added by writing just 2 lines of code.  The bad news is that old .SGC and .GCS files are no longer compatible with the new scheme.  The good news is that the new .SGS files that replace .SGC and .GCS files are plain text, not a proprietary binary format.  This means that .SGS files can be easily edited using Notepad.  To prove that these changes are worthwhile, the following settings have been added:
    - Enhanced 3D borders
    - Borderless checkboxes
    - Borderless radio buttons
    - Show balloon help on captions
    - Minimize on double click
    - Sizable window border thickness
    - Static window border thickness
    - Black window edge
* Added support for G-Merge in the Custom WHERE Clause.
* The Incoming feature will no longer treat email header field names as case sensitive.  Although not technically correct, this will allow the Incoming feature to handle malformed emails and should not pose any problems.
* The hotkey to open the Incoming Log has been changed from Shift+F6 to F10.  Shift+F6 is used by System-G to shrink a window.


Version 15.3 (October 23rd, 2001)
* Added the "Change Email Address" tool.
* Added the "Members Only" option to the Incoming/Processing branch.  This option only applies to the "Forward to all recipients" Processing Mode.  It will be prevent non-members from posting email to a discussion group.
* Added the "Extract Text From HTML" tool.
* Added the log(), str_pad(), and str_pad_r() G-Merge functions.
* Added the "Validate" button to the bottom of the Database Clause Table.
* Numerous improvements to Example.mmp.
* The "Preview Recipients" tool will now display a running count of the number of recipients that have been examined.
* The "Preview Recipients" tool will now write the recipient list to a file instead of keeping it in memory.  This will improve performance for extremely large lists because it eliminates the need to constantly reallocate a block of memory on the heap.
* The HTML Body's "Canonicalize and Paste" feature will no longer canonicalize characters inside G-Merge statements.
* Date format strings can now contain a colon.
* Fixed a problem with performing a Removal Operation on a Simple-Merge file whose column names are enclosed in quotes.
* When a line of Simple-Merge data contains fewer columns than other lines, an error will no longer be reported.  An empty string will be used as the data.
* Fixed a problem with the Simple-Merge feature when a Recipient File contains a line longer than 256 characters.  There is now no limit on the line length at all.
* Whitespace is now properly trimmed from both ends of quoted Simple-Merge data.
* Removed the ability to double click on a recipient's address in the Preview Window (causing a single message to be sent).  This feature was too prone to accidents.


Version 15.2 (October 3rd, 2001)
* Added the "Whole word criteria" option to the Incoming/Criteria branch.
* Added support for varchar database columns that are larger than 255 characters.
* On the Incoming/Criteria branch, "substrings" are now referred to as "keywords".
* The incoming log now reports which criteria keyword was found.
* The Database/Send Date branch has been removed.  These settings have been moved to the Database/Setup branch.
* The -Now- predefined G-Merge variable can now be used in the Pre-Send Script.
* Fixed a problem saying EHLO to the mail server when the machine's name contains a space.
* Fixed a bug in the http_fetch() G-Merge function.


Version 15.1 (October 2nd, 2001)
* Added the Wizards menu.
* Added the "Override EHLO Domain" setting to the Send branch.  This setting can be ignored by most users.
* Added various improvements to the prompt() G-Merge function, including the new "LIST" control.
* Added the str_remove_line() G-Merge function.
* Added more information to the Remove Operation Log.
* Removed the Database/Columns branch.  Its settings have been moved to the Database branch.
* The "Reduce Removals" and "Reduce Locations" options (on the Remove/Options branch) are now checked by default.
* The "DNS Port" setting is now appropriately ignored when the "Auto-Detect DNS Settings" option is checked.
* The "Test DNS Server" tool will now warn if the DNS Port is not 53, or if the DNS Timeout is less than 10 seconds.
* The incoming log now records a copy of the Remove log when the Incoming Processing Mode is set to "Remove".
* The "Preview Recipients" tool will now first display the number of qualified recipients.  The user will now have the option of displaying the entire list.
* When the "Limit number of messages processed" feature takes effect, and there are more emails on the server waiting to be processed, Gammadyne Mailer will now reconnect immediately and process more messages without waiting for the next cycle.
* When a Recipient File cannot be opened, a verbose error will now be reported in the log.
* Fixed a bug in the prompt() G-Merge function - it was not storing the result of radio buttons correctly.
* Fixed a potential hang up when the Recipient File contains null bytes (ASCII code 0).
* Fixed a problem with the "Add to Recipient File" Incoming Processing Mode.  Errors would be reported if the Recipient Filename contained a carriage return.


Version 15.0 (September 11th, 2001)
* Added the gmerge() G-Merge function, which allows you to process G-Merge statements inside a string value.
* Added a Glossary to the help file.
* When the "Exclude HTML body from domains" feature eliminates an HTML Body, the "Build text body from HTML" feature will now work properly.
* The "Test DNS Servers" tool now displays a progress window, and can be aborted.
* Added the "Insert Line Breaks" option to the Attachments/Explicit branch.
* Added the "Test DNS Server(s) Before Sending" option to the Servers/DNS branch.
* Added to the prompt() G-Merge function support for radio buttons and dividers.
* Added the "Rename" button to the Attachments/Explicit branch.
* Added the "Bracket all columns" option to the Database/Setup branch.  This is useful when the database contains a table or column name that is an SQL reserved word.
* The "Extract Email Addresses" tool has been rewritten.  The "Eliminate duplicates" and "Convert to lower case" options have been added.  The extracted addresses can now be transferred to the "Add Recipients" tool, which can be used to add the addresses to the database.  It will also now properly ignore all invalid email addresses.
* Fixed a bug in the get_attachment() G-Merge function that would chop off attachments at the first 0 byte.
* Fixed a problem with the DNS timeout.
* Added the following database Removal Methods:  "Reset Boolean Column" and "Set Integer Column".
* Fixed a problem with SMTP servers that do not say goodbye at all.
* Added the "tips" and "focus" Common Control Properties for the prompt() G-Merge function.  "tips" allows you to create Balloon Help for a control.  "focus" specifies that the control should initially have input focus.
* Added the "Ignore duplicates" option to the "Add Recipients" tool.
* Added the "/d" command line switch which will cause the "/a" tool to discard email addresses that are already present in the list.  This is useful in preventing a recipient from being added to the mailing list twice.
* "Retry Direct Delivery Failures" is now unchecked by default.
* The "Add Recipients" tool will now ignore all invalid email addresses.  This also includes the "/a" command line tool.
* Fixed a bug that caused the pseudo-project RecycleSocket field to not function correctly.
* Fixed a problem with the Incoming feature handling the bizarre format of some MSN bounce backs.
* Added the "Process To:" option to the Incoming/Processing branch.
* Added the incoming_get_header() G-Merge function, which returns the value of one of the incoming message's headers.
* G-Merge variables that are declared in the Incoming Script can now be used in the Text and HTML bodies when an Auto-Response is sent.
* Added the "Use system address book" option to the Recipients branch.
* Added the "Extract from address book" buttons to the bottom of the "Add Recipients" window.
* Added the incoming_get_ip() G-Merge function, which returns the IP address of the incoming message's sender.
* Fixed a problem with the prompt() G-Merge function being used in the Incoming Script.
* Added the "Forward to all recipients" Incoming Processing Mode.  This allows Gammadyne Mailer to act as a List-Server.  Although List-Serving was possible in earlier versions, this mode greatly simplifies the configuration.
* Added the "When Unprocessed" option to the "Delete Messages" setting.
* Added the incoming_delete() G-Merge function, which allows the Incoming Script to control whether or not an incoming email is deleted.
* When making a database assignment, it is no longer required that the Identity Column be integral.  This is significant for dBase, which only supports floating point numbers, not integers.
* Added the "Begin With Recipient" feature to the Filtering branch, which makes it easier to resume an interrupted mailing.
* Added the "Messages per hour" statistic.
* In the Preview Window, you may double left click on a recipient to send their email to them (a shortcut to clicking on the Send button).
* When Gammadyne Mailer is minimized, the auto-response/forward progress window will no longer appear in the foreground.


Version 14.1 (August 7th, 2001)
* Added the "Auto-Detect DNS Settings" feature.  If this feature fails to detect the operating system's DNS settings, you should uncheck this box so that your old settings are used again.  Since this is a global setting, not a project setting, you only need to do it once.
* Added the enbox() G-Merge function, which can be used in the text body to enclose a string inside a box.
* Added the "Proceed With Removal" button to the "Preview Removal" report.
* Added two new predefined variables for the Success and Failure Scripts:  [[-Body-]] will contain the final personalized text body of the email, and [[-Subject-]] will contain the final personalized subject.
* Added three new predefined variables for the Pre-Send Script:  [[-Body-]] will contain the raw text body of the email, [[-HTMLBody-]] will contain the raw HTML body, and [[-Subject-]] will contain the raw subject.
* Recipient Files are now processed one address at a time instead of loading the entire file into memory.  This permits Gammadyne Mailer to use much larger Recipient Files.
* The Simple-Merge feature now uses memory much more efficiently, allowing for much larger recipient lists.
* The Simple-Merge feature now supports multiple recipient files, and the explicit recipient list can be combined with files.  Just make sure that each source has the exact same list of columns on the first line.
* Added the following G-Merge functions:  cs_leave(), file_copy(), file_move(), ini_get(), and ini_set().  The help file now has an index of functions, organized by groups.  Each function can now also be found in the Table Of Contents under G-Merge.
* Added the ability to use multiple DNS servers, which will improve the speed of multi-threaded direct delivery mailings.
* Added the option to allow System-G to resolve domain names into IP addresses instead of the operating system.
* A new method is now used to query the DNS server.  This method uses UDP datagrams instead of TCP stream connections.  The result is a 300% improvement in DNS speed because there is no overhead in establishing a connection.  It also eliminates a multi-threading problem that limits the number of simultaneous connections to some DNS servers.  A symptom of this problem is when only a handful of threads seem to make progress during a direct delivery mailing.
* All threads will now share a single DNS cache, which improves performance by eliminating repeated DNS lookups.  The cache will hold up to 500 DNS records for up to 1 hour.
* A variety of new DNS statistics are now reported in the Send Log.
* The get_attachment() function will now properly return an empty string if there is no attachment, not a NULL value.  Also, any section of the email that is not part of the body will now be treated as an attachment.
* The get_attachment_name() function will now return the filename specified in the Content-Disposition: field if it is not in the Content-Type: field.
* Fixed a problem with SMTP authentication incorrectly reporting that no user name has been entered.
* Fixed a database error caused by Identity Columns that contain non-standard characters, such as spaces.


Version 14.0 (July 17th, 2001)
* Added the "Add Recipients" tool.
* Added the "Return-Path" setting to the Headers branch.
* Added the "Exclude Users" feature to the Recipients/Filtering branch.
* Added the ability to forward processed incoming messages.
* Added the "Report Login Errors" option to the Incoming branch.
* Added the "ExplicitAttachment", "SendScript1", "SendScript2" pseudo-project fields.
* Added the get_attachment_name(), get_num_attachments(), and file_delete() G-Merge functions.
* Added a report of the total number of messages sent and failed to the progress window.
* The "Exclude Domains" and "Include Domains" features will now work with Incoming operations to exclude addresses.
* Registry problems, which will affect product registration, are now detected and reported when Gammadyne Mailer starts.
* When the "Auto-respond" and "Forward" Incoming features are aborted in progress, you will now be asked if you want to abort the entire Incoming Operation.  These features will now also ignore SMTP POP3 Authentication settings, since Gammadyne Mailer is already connected to the POP3 server.
* A Boolean Simple-Merge column can now represent FALSE values with "0", "n", "no", or "false".  Previously, it could only be represented by an empty value.
* A warning is reported when a file specification includes the same file more than once.
* The "Troubleshoot HTML" tool now reports when an embedded file is not used.
* The "Password" column of the Incoming Accounts table will now display asterisks instead of the actual password.
* The default state of the "Hide Send Batch" setting was undefined for pseudo-projects.  It will now correctly default to FALSE.
* Fixed the Header Character Set's drop down list (this only occurred in the first beta).
* Fixed an Illegal Operation when the text body ends with a hyperlink.  This was related to the new feature that prevents line breaks from being inserted inside hyperlinks.
* Fixed a bug that prevented the saving of changes to the SMTP POP3 Authentication's POP3 Port.
* Fixed a problem with using the "Test Send" feature and Direct Delivery.  It was delivering to the original recipient's domain instead of the test recipient's domain.
* Fixed a bug that could potentially hang all threads.  It was discovered that the compiler was generating 3 instructions where it should have generated just one - giving another thread the chance to interrupt and muck things up.


Version 14.0 Beta (June 29th, 2001)
* Added the ability to send multiple emails simultaneously.  Please refer to the "Threads" setting on the Send branch.
* Added the Pre-Send and Post-Send Scripts.
* Added the prompt() G-Merge function, which allows you to display a window, complete with text, editboxes, checkboxes, and buttons.
* Added support for incoming email that is encoded in UTF-7.
* Added the is_aol(), latch_n(), and latch_ni() G-Merge functions.
* Added the ability to limit the number of times that the send operation is repeated.
* Added the get_attachment() G-Merge function, which allows the Incoming Script to extract data from an incoming message's attachments.
* Added "+" and "-" buttons to most editboxes that contain an integer setting.
* Gammadyne Mailer's executable has been renamed from mmail-m.exe to gm.exe.  For backward compatibility, if the old mmail-m.exe file exists, the installer will overwrite it with the new version.  This is done to prevent shortcuts from breaking.  If you have no shortcuts, you can delete the mmail-m.exe and gm.bat files.
* Numerous improvements to the Help file.
* Drop down lists for the "Column" and "Value" columns of the Clause Table are now alphabetized.
* The "/a" command line switch can now add multiple email addresses to the database.  It will also now handle multiple recipient files correctly, adding the recipient to the first file.
* To improve performance, the "Append Successes" and "Append Failures" features will keep their file open for the duration of the send operation.
* The "Line Length" feature on the Text Body/Format branch will no longer break off hyperlinks that exceed the Line Length since this causes the hyperlink to not function.
* The "Single-Send" tool will now explain that it does not use the database when an unknown variable/column is encountered in a G-Merge statement.
* The "Throttle" setting on the Send branch has been moved to two new columns in the SMTP Server Table.  This is necessary for multithreading.
* Removed the redundant "Delay" feature.  Use the Throttle feature instead.
* The "Auto-Respond" and "Forward unprocessed messages" features will now automatically disable SMTP POP3 Authentication, since the POP3 account is already open.
* An error is now reported if you attempt to use G-Merge with the Identical Send Mode.
* The "Simple Send" and "Forward unprocessed messages" features will no longer produce a G-Merge error if the email contains the "[[" character sequence.
* Fixed a G-Merge problem with string literals containing the "]]" character sequence.
* Fixed a problem with the "Remove" and "Verify All Addresses" features when multiple recipient files are specified.


Version 13.3 (May 25th, 2001)
* Added the "Attachments/Explicit" branch and the ability to specify the contents of personalized attachments.
* Added the "Incoming/Accounts" branch and removed the "Servers/POP3" branch.  You may now check multiple POP3 accounts for incoming messages from a single project.  The Global SMTP POP3 Authentication settings no longer use the settings from the POP3 branch, they are stored globally.  When opening an old project, the old POP3 settings will be imported into the Accounts table and into the Global SMTP POP3 Authentication settings.
* Added the "No recipient required" option to the Incoming/Processing branch.  This permits Gammadyne Mailer to process incoming email even when no recipient address can be determined.
* Added the ability to specify multiple recipient files.
* Added the char(), str_replace(), str_replace_i(), and str_substring() G-Merge functions.
* Added the db_get() G-Merge function, which allows you to pull database values from a table other than the one used for recipient data.
* Added to the Send Log the operation completion date/time.
* Added to the Send Log a statistic on the time spent using the DNS server.
* Added to the Help file's table of contents a number of links to different sections on G-Merge.
* Added the "/f" command line switch, which allows you to specify a file of email addresses to be used in conjunction with the "/a", "/e", "/o", and "/r" switches.
* You may now mix [[else]] and [[elseif]] G-Merge statements.  An [[else]] statement will only evaluate to TRUE if all previous [[elseif]] statements were FALSE.
* G-Merge functions can now contain one or more spaces between the function name and the opening parenthesis.
* The "To:" header can now be used with the Identical Send Mode.
* The "/q" switch can now be used with the "/c" switch to prevent the Incoming operation from displaying certain errors (see the Help file).
* The Incoming Summary will now be displayed even when the operation is launched from the command line.  To prevent this, uncheck the "Display incoming summary" option, or specify the new "/q" command line switch.  The Incoming Summary will now automatically close after 30 seconds.
* You may now add the "/reg" switch to any command line.  When present, and Gammadyne Mailer is in shareware mode, it will display the message "Gammadyne Mailer is not registered" and abort the operation.  This is useful in informing you that Gammadyne Mailer has lost its registration status (typically due to part of the registry being deleted).
* G-Merge syntax errors now report the exact text of the invalid statement.
* Date conversions now permit these formats: "Fri, 14 Sep 1993" and "9.14.1993".
* G-Merge date literals can now accept the following formats: #15-Oct-99 23:06:03#, #Oct 15 1999 04:16:17 pm#, #October 15, 1999 4:16p#, and # October 15th, 99 12:03:14 a.m. #.
* Winsock error codes will now also report an English description of the error.
* When the Incoming Processing Mode is set to "Add to exclusion file" or "Add to exclusion list", the new exclusion will now take effect immediately.  This prevents the same email address from being added to the exclusion file/list more than once.
* The "Simple Merge" feature now allows empty column data, such as "3,,17".  Also, Simple-Merge now accepts strings that contain carriage returns (as long as the string is enclosed in quotes).
* The "Extract email addresses" tool will now strip the dash and period from the beginning and end of all extracted addresses, since an email address cannot begin or end with these characters.
* The "Forward unprocessed messages" feature will now set the "From:" field to the sender of the incoming message, as was stated in the help file.  Previously, it was using the incoming email account for the "From:" field.
* The Expiration Date header will now work properly if only a date is specified (without a time).
* The restriction on the characters allowed in an email address's user name has been eased.  Although uncommon, some mail systems do allow the following characters in a user name:  !#$%^&*'?+=~
* The "Custom WHERE Clause" can now begin with the "OR" keyword.
* Fixed a G-Merge bug that would cause date expressions to contain a trailing space when converted to a string.
* Fixed a G-Merge bug in processing date literals that contain a time.
* Fixed a compatibility problem with Excel involving table names that contain the dollar sign.  Excel cannot handle table names that are enclosed in brackets, even though this is part of the SQL standard.  Please note that there is still no guarantee that Excel will work.
* Fixed a pseudo-project bug that would cause the "Auto-detect HTML images" feature to be used even when not specified.
* Sealed a minor memory leak.


Version 13.2 (March 30th, 2001)
* Added the Incoming/Explicit branch.
* Added to the auto-response feature the ability to use database columns in any field that accepts G-Merge.
* Added a "Help" context menu option to each branch of the tree.
* Added the latch_i() function, which is a case-insensitive version of latch().
* Added the sound_play(), sound_loop(), and sound_stop() G-Merge functions.
* Added the "/file" command line switch for use in conjunction with the "/c" switch.  This allows you to process a file that contains an email instead of receiving email from a POP3 server.
* Added the "View incoming log" option to the Tools menu.  You may now also press Shift+F6 to view the incoming log.
* The "Delete incoming messages" checkbox has been changed to a combobox in order to add the ability to delete all incoming messages, even if they do not meet the criteria.  Despite this transformation, existing projects do not need to be modified as the old setting will be imported appropriately.  However, there is a small change in the behavior of the "Forward unprocessed messages" feature.  Previously, if this option was used and "Delete incoming messages" was checked, then the unprocessed message would be deleted.  Now, however, an unprocessed message is only deleted when "Delete incoming messages" is set to "Always".
* Moved the Incoming Script to its own branch.
* During a continuous incoming operation, the IP address of the POP3 server will now be refreshed once per hour.  Hence, it will be unnecessary to restart the operation in the event that the POP3 server changes addresses.
* The Identical Send Mode is now tolerant of a single recipient being rejected without interfering with the entire batch.  The Success Script and Failure Script will run appropriately for each individual recipient.  Likewise for the "Append Successes", "Append Failures", and "Store Successful Send Date" features.
* The Success Script and Failure Script now have a new predefined variable:  [[-Message-]].  This contains the entire MIME body of the email.
* The CR, TRUE, FALSE, and NULL predefined variables can now be used in the Success Script and Failure Script when using the Identical Send Mode.
* The progress window was not always reporting the correct index value.
* Date conversions now permit date strings that include a day-of-week, such as "Sunday, September 14th, 1993".
* The "Insert predefined variable" tool for the Incoming Script will now list the special predefined variables for this script: -Message-, -Body-, -Subject-, and -CC-.
* Fixed a potential problem loading the global program data when multiple instances of Gammadyne Mailer are started at the same time.
* Fixed a problem in processing addresses in the bodies of incoming email when the Content-Type header was in a particular format.
* Fixed a problem with the Preview Recipients tool not reporting database errors.
* Fixed a problem with the progress window meter when sending very large messages.  This was caused by a math overflow, and did not interfere with the sending operation, only the meter.
* Fixed a bug that prevented the "Build text body from HTML" feature from working.  The conversion will also now ignore commented sections properly.  Furthermore, the generated text body will now obey the "Line Length" setting on the Text Body/Format branch.


Version 13.1 (March 5th, 2001)
* Added the "Limit number of messages processed" option to the Incoming branch.  This is useful when the incoming mailbox contains a large number of messages, but the connection cannot be maintained long enough to process all of them.  This can be a real problem because messages are not deleted if the connection is lost.
* Added the switch() function.
* Added support for the GUID SQL data type (-11).  These are treated as strings.
* Added the "DeleteFile" field for pseudo-projects.  If present with a value of "1", the pseudo-project file will be deleted after it is used.
* Added to the Criteria branch a method for allowing incoming messages to be processed if any criteria is met, instead of always requiring that all criteria must be met.
* Improved Example.MMP
* During an incoming auto-response, the [[-Body-]] predefined variable can now be used outside of the Incoming Script.
* The Incoming Script can now use a "LET" statement to change the [[-Recipient-]] predefined variable in order to redirect an auto-response to a different recipient.
* Fixed a bug in the "Check for update" feature.
* Fixed a bug in reading negative numeric values from the database.
* Fixed a bug in the Incoming operation when processing addresses that follow a body substring when there is a blank line between the two.


Version 13.0 (February 23rd, 2001)
* Added the extract_domain(), http_fetch(), str_length(), str_find(), str_find_i(), and str_remove() functions to G-Merge.
* Added the /where command line switch, which allows you to override the Custom WHERE Clause.
* Added the /text and /html command line switches, which allow you to override the text body file and HTML body file.
* Added the /to command line switch, which allows you to override the recipient of the message.
* Added the /cc and /bcc command line switches, which allow you to override the "CC:" and "BCC:" header fields.
* Added the "DNS Timeout" setting to the DNS branch.  A bad DNS server can no longer hang Gammadyne Mailer indefinitely.
* During a database mailing, the physical record index of the current recipient will be reported on the progress window.
* During an incoming auto-response, the [[-Subject-]] and [[-CC-]] predefined variables can now be used outside of the Incoming Script.
* Gammadyne Mailer will now try to report the total number of database records during a mailing.  However, most databases do not support this.
* The first column of the result set displayed by the "SQL Command Sender" tool is now a sequential index.  This lets you know how many records are in the result set.
* The "View Message Info" tool on the Preview Window will now properly display the database Identity for the recipient.


Version 13.0 Beta (February 13th, 2001)
* Added the "Automatically detect embedded images" option to the HTML Body/Options branch.
* Added the "Retry Failures" option to the Send branch.
* Added the "Remove Illegal Addresses" option the Remove/Options branch.
* Added the "Remove Duplicate Addresses" option the Remove/Options branch.
* Added the "Remove Blank Addresses" option the Remove/Options branch.
* Added the "Test send..." option to the Tools menu.  This allows you to send all messages to a test email account, even when not using the Normal Send Mode.
* Added the "Forward Unprocessed Messages" setting to the Incoming/Processing branch.
* Added the "Process CC:" and "Process Reply-To:" options to the Incoming/Processing branch.
* Added a fourth option to the "SQL Date Format" setting for Oracle databases.
* Added the "Import addresses" tool to the Database menu.
* Added the "Display send summary" option to the Send branch, so that the send summary can be disabled.
* Added the [[-CC-]] predefined variable for the Incoming Script.
* Added the db_acquire_last_row(), db_add_row(), db_execute(), and is_address_valid() G-Merge functions.
* Added the "Overwrite Incoming Log" option to the Incoming branch.
* Added the "Save project before sending" option to the Send branch.  For backward compatibility, this is checked by default.
* Added the "Exclude HTML Body For Domains" setting to the HTML Body/Options branch.
* Added the Alarm feature for failed incoming connections.  This is useful when a computer is dedicated to continuously checking an account for incoming email.
* Added REM statements to G-Merge for writing comments in a script.
* Added the "Load removals from file" option to the context menu of the Removals List.
* Added the "HTML Body Encoding" setting to the HTML Body/Options branch.
* Added "Quoted-Printable" to the list of text body encodings on the Text Body/Format branch.
* Added support to the Incoming feature for messages encoded in Base-64 or Quoted-Printable.
* Added the "IdenticalBatchSize" field for pseudo-projects.  Also, the help file did not contain a description of the "Identical" field.
* Added the "SMTP Timeout" setting to the SMTP branch.
* Added the "POP3 Timeout" setting to the POP3 branch.
* Added the "Test SMTP Server(s) Before Sending" option to the SMTP branch.
* Added the ability to control the Throttle period.  It will default to 60 seconds for backward compatibility.
* The SQL Command Sender will now display results returned by a SELECT command.
* In G-Merge, you may now subtract two dates to get the number of days between them.
* When an Incoming message is processed, it is now deleted immediately instead of after all other messages are processed.  This lowers the chance that an interrupted operation will result in an incoming email being processed twice.
* In the Incoming log, the final list of recipients is logged after each individual check, not after the operation stops. This saves memory on long, continuous operations.
* When processing the sender, the incoming feature can now handle From: header fields where the email address is on a separate line (pursuant to Section 3.4.2 of RFC-822).
* The "/c" and "/t" command line switches were not displaying the Gammadyne Mailer window properly.
* The result of an auto-response is now included in the Incoming log.
* The auto-responder now uses the same progress window as the Incoming operation.
* When an auto-response is aborted, the user is now given the option to continue the incoming operation.
* When performing a repeated send operation, Gammadyne Mailer will no longer use 100% CPU utilization when waiting to perform the next operation.
* The Reading Confirmation feature now uses the "Disposition-Notification-To" header pursuant to RFC-2298 instead of the "X-Confirm-Reading-To" header.
* The "View Message Info" option for the Preview Window will now list the "CC:", "BCC:", and "Reply-To:" header fields since these might be personalized.
* The "Export To Text File" option will now properly include the Clause Table in the WHERE clause.
* If the file_append(), file_fetch(), and file_save() G-Merge functions do not specify a complete drive and directory, they will now assume the file is relative to the directory where Gammadyne Mailer is installed.
* The HTML Body editbox will now properly remember the Fixed Pitch and Word Break settings.
* During a continuous incoming operation, if there is a failed POP3 login, the error message will only be displayed for 30 seconds at which point another login will be attempted.  This prevents an isolated connection problem from halting the operation.
* The Remove feature will now warn if the Identity Column is not numeric, since this likely means that the removal will not work.
* The "Specify Content-Location" setting now contains a drop-down list of past inputs.
* The Remove feature will now report its progress during a database removal, which is useful when the database is huge.  This also allows the user to abort the operation.
* The "Use clauses" option on the Remove/Options branch is now disabled unless you have chosen to remove recipients from the database.
* The "Text Body" editbox will now attempt to display itself in the chosen character set.
* Improved the HTML Troubleshooting tool.
* Improved detection of illegal email address syntax.
* Numerous improvements to the help file, including a description of how to automate the sending of Follow-Up emails.  Also included is a step-by-step procedure for setting up Gammadyne Mailer to process Bounce-Backs, Opt-Outs, and Sign-Ups.
* If an HTML email does not contain a text body, the MIME format will no longer contain a multipart/alternative section with an empty text body.
* Previously, the Remove feature ignored the Simple-Merge feature.  It will now extract the recipient from each line before checking for a match.
* When sending with the Identical Send Mode, the progress window will now report the indices of the recipients in the batch and the total number of recipients.
* Eliminated a weakness that could allow a POP3 server to hang Gammadyne Mailer indefinitely.
* The -FirstName- and -LastName- predefined variables now reflect the correct values in an email address that is last name first, such as "Public, John" <jpublic@foo.com>.
* The shareware safeguard message is now apparent in the Preview window.
* The "/q" command line switch can now be used with the "/t" pseudo-project switch to prevent errors from being reported.
* The "View MIME" feature will now reflect the proper line breaks that are inserted in the Text Body.  Previously, line-breaking was done at a later stage.  As a result, if you manually edit the text body in the Preview window, the line-breaks are now your responsibility to maintain.
* POP3 connection errors now include an English description.
* Official support for Excel has been withdrawn as it never worked consistently.
* The "Test SMTP Server" tool now displays a notice window with the server being tested.  This also allows you to abort the tests.
* The "MIME-Version" header was previously not using the proper case (it appeared as "Mime-Version").
* Fixed a problem with the G-Merge LET statement when assigning a value to a database column name that is enclosed in braces.
* Fixed a problem with SMTP servers specified by their IP address when the IP address contains spaces.
* Fixed a problem with adding rows to the database when the Identity Column name contains spaces.
* Fixed a problem in the reporting of an unknown G-Merge variable/column.  Also, when an unknown variable/column is referenced in G-Merge, the log will now list all current variables and database columns, to help with troubleshooting.
* Fixed a potential fault when opening the Simple Send tool.


Version 12.3 (January 10th, 2001)
* Added the "Simple Send" tool to the Tools menu.
* Added the "Single Send" tool to the Tools menu.
* Added the "Pre-send" and "Post-send" DOS batches.
* Added the "View MIME" option to the context menu of the recipient list on the Preview window.  This allows you to view the actual MIME message that will be sent for a particular recipient.
* Added the [[-Subject-]] predefined variable for the Incoming script.  This is useful is performing different actions based on a keyword in the subject.
* Added the "Build text body from HTML" option.  This will generate a text body automatically based on the contents of the HTML body.
* Added the ability to limit the number of times a SMTP connection is recycled.  This is especially useful when using multiple SMTP servers.
* Numerous improvements to the Help file.
* The incoming log now lists the current settings and version to aid us with troubleshooting.
* The "Use bounce back defaults" tool can now be customized by the user by editing the file "Bounce Strings.txt" in the directory where Gammadyne Mailer is installed.
* The /m command line switch, which minimizes Gammadyne Mailer's window, can now be used with the /t switch, which sends a mailing using a pseudo-project.
* The asterisk (*) feature for log filenames can now be used with pseudo-projects.
* When performing a repeated send operation, the exclusion list will now be updated between sends.  Previously, when a repeated send operation changed the exclusion list, the changes would not be used in the next send operation.
* When performing a repeated send operation, the progress window will no longer force itself to the foreground.
* For security reasons, the POP3 password is no longer listed in the log if there is a login failure.
* If the user aborts the send operation, the summary is now reported.
* When a G-Merge error occurs, the send log will now specify which script the error occurred in.
* A G-Merge syntax error will now position the cursor properly if the syntax error occurs at the beginning of the statement.
* Before making a database assignment, the Identity Column is now first checked for a valid value.
* The HTML Troubleshooter will no longer incorrectly report a missing image file when using the Content-Location method.  Also, it will now check to make sure that the Content-Location prefix is present.
* Fixed the Direct Delivery feature.


Version 12.2 (December 11th, 2000)
* Fixed a bug in the message format when an HTML body is present with embedded images, but no text body is present.
* Fixed a potential access violation in the incoming feature when processing addresses in the body.
* Fixed a bug in processing Simple-Merge column names that contain spaces.


Version 12.1 (December 8th, 2000)
* Added the "Repeat Send" feature to the Send branch.
* Added the "Include Domains" feature to the Filtering branch.
* Added the "Test All" button to the bottom of the Preview window.  This allows you send all messages to a test email address.
* Added the "Specify Content-Location" setting to the HTML/Options branch.  This provides more control over how embedded images are identified in the HTML body.
* Added the db_aquire_next_row() function to G-Merge.  This permits multiple database rows to be processed in the Incoming script.
* Added a description of G-Merge "While" loops to the help file, which amazingly had been left out since this feature was added in 6.0.
* Added the ability to set the "From" and "Reply-To" fields from the command line.
* The "Reply-To", "CC", and "BCC" fields can now be personalized with G-Merge.
* The "Auto-Insert cid:" feature will now insert the "cid:" prefix in the <body background="..."> HTML tag.
* The Database Password now displays asterisks instead of the actual password.
* The number_format() G-Merge function now allows two commas to indicate that commas should be inserted even if the number is less than 10,000.
* The [[disregard]] G-Merge statement can now be used in the Incoming Script to abort the processing of a recipient.
* Some people have reported that embedded images sometimes appear as attachments.  Although we have never been able to reproduce it, the message format has been tweaked slightly to hopefully prevent this.
* The Incoming feature no longer requires that the identity column be an autonumber unless the Processing Mode is "Add to database".
* Fixed a bug in processing Simple-Merge column names that contain spaces.
* Fixed a bug that prevented the Successful Send Date from being stored in the database when the "Identical" Send Mode is being used.


Version 12.0 (November 10th, 2000)
* The Pseudo-Language used to personalize messages is now referred to as "G-Merge".  Data Tags are now referred to as G-Merge Statements.  Basic Tags are now referred to as Predefined Variables.
* Added the "Run Script" option to the Incoming/Processing branch.  This allows you to run a G-Merge script even if you are not adding rows to a database.  The "Add row to database" option has become part of the "Processing Mode" setting.
* Added the "Success Script" and "Failure Script" features to the Send/Logging branch.  This allows you to execute a G-Merge script based on the outcome of a sent message.
* Added the "Use global SMTP settings" and "Use project SMTP settings" options, along with the SMTP server table.  This new arrangement allows you to store SMTP server information with the project instead of always using the global settings.  It also permits the use of multiple SMTP servers.
* Added the file_save() function to G-Merge, which allows you to save a string to a file.
* Added the number_format() function to G-Merge, which provides complete control over formatting numeric data.
* Added the "db_delete_row()" function to G-Merge, which allows you to delete the row of the current recipient from the database.  Added the "db_acquire_row()" function which locates a Incoming recipient in the database, permitting changes to the data associated with the recipient.
* Added G-Merge functions to convert to and from Base64, Quotable-Printable, UUEncode, canonical HTML, and canonical URL.
* Added the [[-TID-]] predefined variable to G-Merge.  This holds the value of the Identity column in the database for the current recipient.
* Added the "Test DNS Server" tool.
* Added the "Delay" setting, which allows you to create a delay between messages while sending.  This is useful for AOL, which apparently discards email from a source if too many arrive too quickly.
* Added the "Process Sender" option to the Incoming/Processing folder.  The "Recipient follows body substring" option has been replaced with the "Addresses in body" setting and moved to the Processing branch along with the "Process Addresses In Subject" option.  This new arrangement allows you to process all email addresses in the incoming message body, even if they do not follow a body substring.
* Added the "Insert Function" context menu option to all editboxes where G-Merge can be used.  This allows you to choose a G-Merge function from a list.  Now, whenever a database column, basic tag, or function is inserted, it will not be enclosed in double brackets if the cursor is already inside a G-Merge statement.
* Added the "Display summary" option to the Incoming branch, which controls whether or not a summary is display after an incoming operation completes.
* Added the "Use bounce-back defaults" option to the context menu of the "Body must contain substring" setting.
* Added the "Ignore duplicate recipients" option to the Incoming/Processing branch.
* Added the "/v" command line switch, which will make Gammadyne Mailer prompt the user before carrying out the operation.  This can be used in conjunction with the "/a", "/e", "/o", and "/r" switches.
* Added some new character sets to the drop down lists for the Header Character Set and Text Body Character Set.  Fixed an invalid code for Cyrillic/Windows.  Fixed a problem with the storage of different character sets with the same name.  As a result of this fix, you will need to set these two fields again.
* Numerous System-G improvements, especially to the Configuration Editor.
* Numerous improvements to the help file, including more hyperlinks.
* When the cursor is on a G-Merge function call, pressing F1 or choosing "Help" from the context menu will open the help file to the spot where the function is described.
* The "Add Successfully Sent Recipients to Exclusion List" feature now works with the Identical Send Mode.
* The "Insert Database Column" feature can now insert Simple-Merge columns as well.
* The "Locate mail server" tool now reports the DNS server, as well as IP addresses.
* The "View Log" feature will now display the log even if no application is associated with .LOG files.
* The "Value" column of the Database Clause Table now has a drop down list that contains all unique values present in the database column.
* The "/a" command line switch can now add recipients to the database and the recipient file, not just the recipient list.
* The "/e" command line switch can now add recipients to the exclusion file, not just the exclusion list.
* The Remove Recipients log will now report when a recipient has already been removed.
* The SMTP and POP3 passwords now display asterisks instead of the actual text.
* The "Test Send" window now remembers past email addresses in a drop down list.
* The HTML Troubleshooter now checks for excessively long lines.
* If a recipient is excluded from incoming processing because of the Exclusion List or because it is a duplicate, it will now be reported in the log.
* The Incoming summary window now provides an option to view the log (if one was created).
* An IP address can now be pasted into the "DNS IP Address" editbox.
* Email addresses in the form of "foo@.com" are now treated as invalid.
* Fixed a problem with carriage returns in the incoming log when database errors occur.
* Fixed a bug that would prevent the Incoming feature from being used in the shareware version.  It would report that the "Add row to database" feature cannot be used in the shareware version, even if it was unchecked.
* Fixed a bug that prevented the Incoming script from reading database values from the newly created row (even though there is no conceivable reason to do so).


Version 11.1 (September 20th, 2000)
* Fixed a potential divide by zero bug under Windows NT.
* Gammadyne Mailer is no longer compiled with exception handling - it is not really necessary.  This provides a size and performance increase.


Version 11.0 (September 18th, 2000)
* To reduce interface clutter, the classic Folder view has been eliminated.  The Tree view is now used exclusively.  The addition of all the new settings simply made the Folder view unworkable.
* Added the toolbar.
* Added the "Record send log" option.  This allows you to control whether or not a log is kept as well as the location of the log file.  This is especially useful for those who run multiple projects at the same time.  To maintain backward compatibility, this setting defaults to "MMail.log" in the directory where Gammadyne Mailer is installed.  The "LogFile" field was added for pseudo-projects to accommodate this.
* Added the "Preview Recipients" tool, which will display the recipients that will be receiving the message.
* Added the "Troubleshoot HTML" tool, which will identify common problems with HTML bodies.
* Added the "Attachment directory" and "Embedded files directory" settings.  This allows you to omit the drive and directory from files located in this directory.
* Added the "Exclude domains" setting, which allows you to exclude recipients that have a particular domain.
* Added the "Send only to recipient range" setting, which makes it easy to do a mailing in sections.
* Added the "Connect to Internet", "Disconnect after operation", and "Disconnect on exit" options to help you control dial-up networking.
* Added the "Discard removals" option.  If checked, when a recipient is successfully removed from the project, they will also be removed from the removal list.
* Added the "Reduce removals to simple form" and "Reduce locations to simple form" options.  These provide improved flexibility when removing compound email addresses from the project.
* Added the "Use clauses" option for the "Remove" tool.  It allows you to limit which recipients can be removed by using the Clause Table and Custom WHERE Clause.
* Added the "Throttle" feature, which allows you to limit how fast messages are sent.
* Added the "Allow extended characters in header" option.
* Added the "Add row to database" option for processing incoming email.  Also, the latch() function was added to enable you to pull information out of the incoming message, and store it in the new database row.
* Added the [[-Company-]] basic tag, which contains the string that is inside the parenthesis at the end of the email address.
* Added the "Locate" and "Test" buttons to the "POP3 Server Name" setting.  The "Validate" button for the "SMTP Server Name" setting has been renamed to "Test", and now displays the IP address.
* Added the "POP3 Server Port" setting.  Leave this on 110.
* Added the "DNS Port" setting.  Leave this on 53.
* Added the "Login to POP3 server" method for SMTP authentication.  This is useful for SMTP servers that require you to login to the POP3 server before sending mail.  The "SMTPAuthentication", "POP3Server", "POP3Port", "POP3User", and "POP3Password" fields have been added for pseudo-projects to accommodate this feature.
* Added the ability to set the location of the Incoming log file.
* Added the extract_day(), extract_month(), extract_year(), extract_hours(), extract_minutes(), and extract_seconds() functions to the pseudo-language.  These functions extract the components of a date.
* Added support for creating a different log file for each send operation and incoming operation, as well as for the "Append Successes" and "Append Failures" features.  Simply insert an asterisk (*) into the filename (i.e. c:\temp\mail*.log).
* Added the "/q" command line switch for use in conjunction with the "/s" and "/o" switches, which will prevent Gammadyne Mailer from reporting errors.
* Added the "/m" command line switch for use in conjunction with the "/s", "/o", and "/c" switches, which will make Gammadyne Mailer run minimized.
* Added the "DNSAddress" and "DNSPort" fields for pseudo-projects.  These allow you to override Gammadyne Mailer's DNS settings.
* Added the "Register" button next to the database selector, providing a quick way to access the ODBC Data Source Administrator.
* Added support for the "ntext" (-10) SQL data type.
* The "Simple Merge Column" setting now contains a drop down list that, when opened, will be populated with the columns extracted from the first line of the recipient list.
* You may now use the Page Up/Down keys to move up and down the tree.  Note: when a multiline editbox has focus, you will need to hold down the Alt key while pressing the Page key.
* The "Identical" Send Mode will now work with the "Store Successful Send Date" feature and the "Recycle SMTP connection" feature.
* The "Verify Addresses" tool uses a new, more accurate method to verify the existence of a mailbox.
* System-G now draws menus instead of the operating system.
* Numerous improvements to the help file.
* Fixed a bug that prevented the summary from being appended to the log when a send operation is aborted.
* Fixed a bug that prevented the use of attachments that are specified with a UNC path, such as \\work\foo.bar.
* Fixed a bug in processing incoming email that contains attachments.
* Fixed an erroneous "Cannot find file" error when using the "/t" switch with a pseudo-project filename that is enclosed in quotes.
* Fixed an email address extraction bug for addresses that contain a period in the user name.  This affected the Incoming feature and the "Extract Email Addresses" tool.
* Fixed a bug in retrying failed direct deliveries.
* Compound email addresses in the form of "foo@bar.com" <foo@bar.com> are no longer treated as invalid (i.e. the first @ sign is ignored because it is inside quotes).


Version 10.1 (July 6th, 2000)
* Added the "Sender" field to the "Headers" folder.  This allows you to report one email address to the SMTP server, and a different one in the "From" header field.  For backward compatibility, if the "Sender" field is left blank, the email address in the "From" field will be used instead.
* Added the "To" field to the "Headers" folder.  For backward compatibility, if this is unchecked, the recipient's email address is put in the To field.  If checked, you can specify different text which can be personalized with the pseudo-language.
* Added the "DatabaseTimeout", "DateFormat", "Sender", "To", and "TextSubtype" settings for pseudo-projects.
* Added the "Color Schemes" submenu to the "System-G" menu.
* Added the "Text Subtype" setting to the "Text Body" folder.
* The Incoming criteria now accept multiple substrings.
* The "Recipient follows body substring" feature will now detect a list of email addresses that follows the body substring.
* The "Auto-Respond" feature will now respond to all recipients that qualify within a single message, not just the sender of the message.  As a result, a single incoming message can generate more than one response.
* The "Auto-Respond" feature will now ignore recipients that are present on the "Exclusion" folder.
* You may now drag and drop files onto the “Removals” editbox.  All email addresses in the files will be extracted and appended to the editbox.
* The "Auto-Respond" feature no longer requires that the Send Mode be "No Preview" and that no database be used.  These settings are now controlled automatically.
* The Incoming feature now accepts a list of email addresses in the "From" field.
* The preview mode now has a limit of 1000 recipients.  We got tired of explaining to people why their machine runs out of memory when trying to preview 150,000 messages.
* Fixed an erroneous "Invalid command line parameter" error when using GM.BAT.


Version 10.0 (June 22nd, 2000)
* All System-G settings, including the SMTP server name and port number, are now stored in a different part of the registry, under HKEY_LOCAL_MACHINE instead of HKEY_CURRENT_USER.  This will ensure that these settings are not lost if you log on as a different user.
* Added the "Tree View" option to the "Options" menu.  This provides an alternative user interface based on a tree structure rather than a set of folders.  However, this is only intended for advanced users since the help file refers only to folders, not the tree.
* Added the "Simple-Merge" feature to the "Recipients" folder.  This allows you to personalize messages without using a database.
* Added functions to the pseudo-language.  These allow you to manipulate strings, dates, even files.
* The "Identification" folder has been renamed "Headers".
* Added the "Additional Headers" editbox to the "Headers" folder.  This lets you specify custom email header fields.
* Added the "Incoming" folder and moved all of the "opt-out" settings there.  Collectively, this is now called the "Incoming" feature.
* Added the "Auto-respond" option to the "Incoming" folder.
* Added the "Include addresses in subject" option to the "Incoming" folder.
* Added the "Processing mode" setting to the "Incoming" folder.  This allows you to place Incoming recipients in a different location than the removals list, or even have them automatically removed from the project.
* The "Incoming" feature now provides a report about the reasons that messages were ignored.  Also, the "Generate log" option was added which provides you with a very detailed account of the operation.
* The "Incoming" feature can now decode header fields that are in Base64 or Quotable-Printable format.
* Added the "Header must contain substring" option to the "Incoming" folder.  This is similar to the "Subject must contain substring" option but includes all header fields, not just the subject.
* Added the "Auto-insert cid:" option to the "HTML Body" folder.  This feature makes it easier to use embedded images in HTML email.
* Added the [[-User-]] and [[-Domain-]] basic tags, which are extracted from the recipient's simple email address.
* Added the "/c" command line switch which instructs Gammadyne Mailer to check for incoming messages.
* Added the "Retry direct delivery failures" option to the "Send" folder.
* Added the "Wait until" option to the "Send" folder.  This allows you to make Gammadyne Mailer wait until a particular time to start the send operation.
* Added the "Removal Method" setting to the "Database" folder.  This provides for several different methods of removing a recipient from the database.  The default setting is "Insert exclamation point" for backward compatibility.
* Added the "View message info" option to the context menu of the recipient list on the preview window.  This lets you see additional fields of the message, which is useful when using the pseudo-language to customize the subject, sender, additional headers, and HTML embedded files.
* Added the automatic database login settings (user name and password).
* Added the "Close database" option to the "Tools" menu.
* Added support for SMTP authentication (CRAM-MD5, PLAIN, and LOGIN).
* Added the "Append successes" and "Append failures" settings to the "Send" folder.
* Added the "Expiration Date" option to the "Headers" folder.
* Added the "Edit" button next to the "HTML Body File" setting.
* Added the "Verify all addresses" option to the "Tools" menu, since its location on the "Remove" folder was not particularly obvious.
* The F6 key will now open the log file.  It can be used on the Preview window as well.
* The "Store successful send date" feature no longer cares if you specify a date column; it will work equally well with string columns.  This provides compatibility with Excel spreadsheets.
* The "Analyze Database" tool no longer requires that you first enter a table name.
* You are now permitted to separate pseudo-language statements with a semi-colon.  Previously, each statement had to be within a separate data tag.  IF-statements have some limitations with this; read the section on conditional bodies.
* You are now permitted to have multiple instances of Gammadyne Mailer running at the same time.  This permits you to send multiple mailings simultaneously.
* "Remove Recipients" will now alphabetize the list of removals and report recipients that were not found.
* Added support for the NCHAR SQL data type (-8).
* Added the "Insert database tag" and "Insert basic tag" options to the context menus of the "From", "Subject", and "HTML embedded files" settings.
* Added support for "Pseudo-Projects".  A pseudo-project allows you to specify all of the settings for a send operation from the command line.  Unlike a regular project, the pseudo-project is plain ASCII text, so it can easily be generated by another program.
* Numerous System-G improvements.
* It is no longer required to enter a SMTP server and port as long as you use the "Direct Delivery" option.
* The [[inject]] tag has been replaced with the file_fetch() function.  Although it is still supported, it will eventually be removed altogether.
* Moved the "Send Reading Confirmation To" option to the "Headers" folder since it is accomplished with a header field.
* Added the file "GM.BAT" to the installation.  This batch file simply launches "MMail-M.exe".  This helps make command line operations a little shorter.
* The send speed, as reported in the operation log, is now calculated differently.  It now measures the raw sending speed, and does not include the time it takes to prepare the message and log on to the SMTP server.  This will give you a better idea of how fast your upstream throughput is.
* When it is discovered that an "if" statement has no matching "endif" tag, the cursor is now properly positioned at the beginning of the "if" tag.
* The "let" tag now allows assignments to database columns that are enclosed in braces (i.e. [[let {foo bar} = 6]] ).
* Fixed "Incoming" tool bugs involving certain POP3 servers, including Microsoft Exchange Server.
* Fixed an ODBC memory leak.  Also, the DNS cache now has a size limit.
* Fixed a bug involving multiple [[elseif]] statements.


Version 9.2 (April 6th, 2000)
* Added the "Identical batch size" setting to the "Send" folder.  This allows you to limit the number of recipients that are grouped into a batch when using the "Identical" Send Mode.  Some SMTP servers have a limit to the number of recipients that can be grouped together.
* Added the "Canonicalize data" option to the "HTML" folder.  This is useful when using database data that contains HTML code.
* The pseudo-language can now be used in the HTML embedded files list.
* MMP files are now associated with Gammadyne Mailer.  You can now double click on an MMP file to open it in a new instance of Gammadyne Mailer.
* The "Extract addresses from file" tool now gives you the option to place the extracted addresses in the list of removals on the "Remove" folder.  Also, when saving the extracted addresses to a file, the output filename will be remembered.
* The "Text body encoding" will now default to 8-bit for new projects.  Most email clients can handle extended ASCII characters just fine.
* The "Verify addresses" tool will now verify only those addresses that get past the clause table and custom where clause.
* Numerous System-G improvements.
* Database column names containing the pound sign (#) are now properly enclosed in brackets when an SQL statement is generated.


Version 9.1 (January 27th, 2000)
* Added the "Specify header's character set" option to the "Identification" folder.
* You may now use extended ASCII characters in the following fields:  from, reply-to, cc, bcc, and subject.  This is done in accordance with RFC-1522.
* The "Specify character set" option was moved to the "Text Body" folder, a more sensible location.  Also, this option is now described in the help file.
* Fixed a bug that would cause the "To" field to be omitted from the message header if a BCC was used.
* Fixed a bug with the "Identical" send mode that could cause a "Message has no FROM field" error.
* The dates in the clause table are now checked for validity so that the error comes from Gammadyne Mailer, not the database.
* The "Preview Final Where Clause" window was not immediately reflecting changes to the "SQL Date Format" option.


Version 9.0 (January 24th, 2000)
* Major update to the System-G interface.
* The "Remove Recipients" window has been moved to the new "Remove" folder.
* Added the "Verify All Addresses" feature to the "Remove" folder.
* Added the "Opt-out" feature to the "Remove" folder.
* Added the "Case sensitive" and  "Substring mode" options to the "Remove" folder.
* Added the "Extract email addresses..." option to the "Tools" menu.  This allows you to extract all the simple email addresses contained in one or more files.  This will work on any kind of file as long as it is not encrypted or compressed.
* Data tags may now be used in the "From" and "Subject" fields.
* Added the "Trim whitespace from data" option to the Database folder.  This allows you to remove spaces, tabs, and carriage returns from both ends of strings that are pulled from the database.
* Added a description of Control Panel database registration to the help file.
* Added a help file section on importing addresses from the Outlook Express Address Book.
* Added the "Preview HTML" option to the right-click menu of the HTML body on the Preview window.  However, embedded images will not appear in the preview because of the special format required to identify images in an email message.
* Added the "Canonicalize extended ASCII characters" option to the "HTML" folder.  If checked, when data is inserted into the HTML body, any extended ASCII characters (128-255) will be canonicalized.  For example, the copyright symbol would be canonicalized to "&copy;".
* Added the "Query timeout" option to the "Database" folder.  If a database query takes longer than this number of seconds, the query will fail with a "Timeout Error".
* Added the "Now" button next to the "Only send when before" editbox.
* The "Date Compatibility Mode" checkbox has been changed to the "SQL Date Format" combobox.  It was discovered that some databases use yet a third non-standard date format.
* Mail server DNS information is now cached, making the "Direct Delivery" feature faster.
* Gammadyne Software's email address has been removed from the safeguard message that is inserted into email by the shareware version.  Certain automatic programs, like SpamCop, will automatically send a complaint to our ISP when it sees our email address in a piece of spam.
* Gammadyne Mailer will now work with database column names that contain extended ASCII characters.  Russian databases may use such characters.
* Previously, the "/s" command line switch would always send in the "No Preview" mode.  Now, however, the send mode specified in the project is used by default.  You can force a particular send mode by using the "/I", "/L", "/N", and "/P" switches to specify "Identical", "Last recipient only", "No preview", or "normal (Preview)" mode.
* Fixed a bug that caused data tags in the list of attachments to be canonicalized as if the tag was encountered in the HTML body.


Version 8.0 (December 2nd, 1999)
* Added the "Analyze Database" option to the "Tools" menu.  This allows you to obtain some basic information about the database and make sure a good ODBC connection can be established.
* Added the "Issue SQL Command" option to the "Tools" menu.  This allows you to enter SQL commands and issue them to the database.
* Added the "Validate email address" option to the "Tools" menu.  This allows you to determine if an email address is valid.
* Added the "[[nixbody]]" tag, which allows you to exclude the text body, HTML body, or attachment list.
* Added the "[[inject]]" tag, which allows you to insert a file into the text body, HTML body, or attachment list.
* Added the "BCC" field, which allows you to send a copy of all messages to a recipient.
* Added the "Delivery Status Notification" setting, which allows you to control how the SMTP server notifies you about the success or failure of all messages sent.
* Added the "Reading Confirmation" option, which allows you to request that recipients send a confirmation when they have read the message.
* Added the "Insert database column" and "Insert basic tag" options to the context menu of the attachment list.
* Added the ability to remove recipients using the command line switch "/r".
* Added the "Analyze" button next to the "Store successful send date" editbox.  This option was previously only available on the context menu.
* The "Remove Recipients" tool now allows email addresses to be separated by a comma or semi-colon.
* The "Store successful send date" drop down list will now only show columns of date type.
* The "Insert database column" feature will now properly enclose the column name in braces if necessary.
* Added the "Date Compatibility Mode" to the "Database" folder in order to fix an incompatibility with storing dates in some databases.  If you have trouble storing dates, toggle this setting.
* Fixed a bug that would cause only the first recipient to be accepted.  This would only happen when using the "Store successful send date" option with the "No Preview" send mode.
* After changing the DNS server, the "Locate SMTP Server" feature would not use the new DNS server unless you begin a send operation or restart Gammadyne Mailer.  This has been fixed.


Version 7.2 (October 28th, 1999)
* Added the "Analyze sent dates..." option to the context menu of the "Successfully sent date column".
* The actual conversation with the SMTP server is now stored in the log if an error occurs.  This will help troubleshooting connection problems.
* Fixed a bug that caused a problem connecting to some picky SMTP servers that require a domain name in the "HELLO" portion of the conversation.
* Fixed a bug that prevented using wildcard characters in the list of attachments.
* Fixed a bug that would cause Gammadyne Mailer to not use a newly entered SMTP server (the old server would be used).  This would only occur if "Recycle SMTP Connection" is checked and mail was sent with the old server first.


Version 7.1 (October 26th, 1999)
* Fixed a bug that was preventing connections to some SMTP servers.  Our testing procedure now verifies compatibility with over 200 different SMTP servers.
* Fixed a bug that would generate a database error if the "Order by" column name contained spaces.
* Fixed a bug that would generate a database error if a database column contained the slash (/) character.


Version 7.0 (October 25th, 1999)
* Added the ability to process the pseudo-language in the attachment list, just like with the message body.  This allows you to automate the customization of attachments.
* Added the "Store successful send date" and "Only send when before" options.  This combination permits you to ensure that recipients only receive one copy of a message, even after a send operation is aborted.
* Added the "Add successfully sent recipients to exclusion list" option.
* Added the [[disregard]] tag to the pseudo-language, which allows you to dynamically disregard messages.
* Added the NULL keyword to the pseudo-language, which allows you to assign or test for null values in database columns.
* Added the "Validate" button to the SMTP server edit box.
* Added the "Refresh column list" option to the context menu of all database column comboboxes.
* Added the "Add clause" and "Delete clause" buttons to the bottom of the clause table.  Removed the Clauses menu (now redundant).
* Added the "Manually process clause table" option.
* Added the "Preview WHERE Clause" button.
* Added the "Null" column to the clause table so that clauses can act on NULL values in the database.
* Added the "Locate SMTP server" option to the new "Tools" menu.  The "Remove recipients" option has been moved to this menu.
* When a recipient address is broken into its constituent parts, the "mailto:" prefix will now be removed from the email address if it is present.
* Improved support for database columns that are dates with a time of day.  Date/time literals are now permitted, and comparison operators will work correctly.
* The clause table and the custom where clause have been moved into a new folder, the "Clauses" folder.
* Gammadyne Mailer can now be minimized during a send operation.
* The user is now asked to confirm the abortion of a send operation.  Several details regarding abortion and the log file have been addressed.
* In the message body, you can now escape the "[[" character sequence by adding another bracket.  This means that you can use "[[[" to represent "[[" without the parser expecting a data tag.  You do not need to escape the "]]" character sequence.
* The database table name is now allowed to be surrounded by reverse tick marks, a requirement of Excel.  Previously, if the table name contained a space, it would be surrounded by brackets when SQL was generated.  Brackets should not be used when the table name is already surrounded by reverse tick marks.
* The recipient and exclusion lists can now handle comma and semi-colon separated lists.
* Fixed a bug in setting the values of the [[-FirstName-]] and [[-LastName-]] basic tags for recipients using the format "First Last" user@domain.com (Company Name).
* The Direct Delivery feature now uses a DNS server to obtain the name of the mail server for the recipient.  Also, the log now indicates if Gammadyne Mailer was unable to make the direct delivery and had to resort to the default SMTP server.
* When recycling a connection after an error occurs, the connection is now properly reset.


Version 6.0 (September 27th, 1999)
* Added the "Recycle SMTP Connection" option.  This can significantly speed up message sending.
* Added conditional body text.  This allows you to exclude sections of the message body based on database values.
* Added the "CC" feature.
* Added the "Line Length" setting.
* Added the "Paste and canonicalize" option to the HTML body's context menu.
* Added the [[-Index-]] basic tag.  This number, which begins at one, is incremented after each message is processed.
* You can now perform mathematical operations on numeric data tags, concatenations of strings, and date adjustments.  For example:
[[foo + 6]] [[bar + "abc"]] [[-Now- + 30]].
* Added the ability to assign values to database columns.  For example:
[[let foo = 3]].
* Added the ability to declare and use variables.  For example:
[[var x = foo + 1]] [[let x = x + 1]]
* Added the ability to perform loops in the message body.  For example:
[[var i = 0]] [[while i < 4]] ... [[let i = i + 1]] [[endw]]
* As a result of these changes, database column names with spaces must now be enclosed in braces.  For example:
[[ {foo bar} + "abc"]].
* When data tags are used in an HTML body, the text they resolve to is now canonicalized in case it contains illegal characters, such as "<".
* Each message now has a "Date" field in the header.  Normally the SMTP server will put this in automatically.  However, apparently Hotmail does not do it properly.
* Changed the wording of the controls in the "Exclusions" folder.
* Fixed a bug that could cause the send log to not be properly appended to.  Also, the log will now be opened with the default editor instead of being displayed in a Gammadyne Mailer window.  The carriage returns in the log file have been altered so that it will appear properly in Notepad.


Version 5.0 (September 11th, 1999)
* Added the "Send Mode" setting to the "Send" folder.  As a consequence, the "Last recipient only" and "All messages are identical" settings have been eliminated as they are now part of the send mode.  A new method of sending, "No preview", has been added.  This is useful when sending to very large lists of recipients because it uses far less memory.
* Added command line functionality.
* Added the "Auto-backup project" option to the "Options" menu.
* A detailed log of the send operation is now kept.  From this you can see why recipients are rejected and which messages had errors.
* A window will now appear while the recipients are being gathered.  This lets the user know that the program is working, and gives the user a chance to abort the operation.
* Fixed a bug that could cause the "Send to this recipient only" context menu option to appear more than once.
* You can now use tabs in the "Text Body" and "HTML Body" edit boxes.
* All multi-line edit boxes now have search and replace context menu options.
* If you manually type a table name, the database column controls will properly re-enable.
* The project is now automatically saved when a Send operation is started.
* Fixed a bug that could cause the drop down list of database columns to appear empty after the table name has changed.
* Fixed a bug that could present old column information when one project is closed and another is opened.
* The following email address formats are now handled properly (in terms of basic tags), even though some of these are technically illegal:
(Name) foo@bar.com
(Name) <foo@bar.com>
foo@bar.com Name
foo@bar.com "Name"
foo@bar.com (Name)
<foo@bar.com> Name
<foo@bar.com> "Name"
<foo@bar.com> (Name)


Version 4.0 (August 26th, 1999)
* Added the "All messages are identical" option (which later became the Identical Send Mode).
* Added the "Send to this recipient only" option on the context menu of the recipient list in the Preview dialog.
* Now recognizes the NVARCHAR data type (-9) introduced by SQL Server 7.0.
* The drop down list of database table names now includes "views" (a.k.a. "queries") and other special types of tables.
* When SQL code is generated, table names are now enclosed in brackets if they contain dashes.  This is required by Access, which allows dashes in the table name.
* Changing the database table will no longer erase the recipient column, identity column, and order column.  It is up to the user to ensure that these fields have proper column names.
* The "Test" option on the Preview dialog was inefficiently using memory.  This has been corrected.
* There is no longer a 30-day trial period.


Version 3.2 (August 15th, 1999)
* Database table names are no longer automatically enclosed in brackets when SQL code is generated.  This was causing a problem with Informix.  Brackets are still used if the table name contains spaces.
* Fixed a problem that could cause an access violation when exiting the program after using a database.
* Global settings are now stored in a file named Mailer.DAT instead of the registry.
* Illegal HTML embedded files are now ignored if no HTML body is specified.
* Illegal attachment files are now reported before the send preview dialog appears.
* A shareware notification message is now appended to the text body.  This message is disabled once the program is registered.


Version 3.1 (August 10th, 1999)
* A bug was fixed that produced an error when the clause table contained column names with spaces.
* The database query is now released immediately after all data is received.


Version 3.0 (July 26th, 1999)
* Added HTML functionality.
* ODBC32.DLL is no longer statically linked.  This means that this DLL is not required to run Gammadyne Mailer, although it is required to use a database.
* Email address in the illegal form of "name user@domain.com" are now interpreted properly.  In other words, the address does not require < and >.
* An intermittent problem was fixed that could cause recipients to be rejected when using MS Access.
* If no recipients are accepted, a detailed report is displayed with an explanation of why each recipient was rejected.
* Fixed a problem with word-wrap on the last line of the message.


Version 2.1 (July 9th, 1999)
* The program has been renamed from "Manifold Mail" to "Gammadyne Mailer" because of a trademark dispute.


Version 2.0 (June 10th, 1999)
* Added the "Identity Column" setting.
* Added the "Remove Recipients" feature.
* Added the "Exclusions" folder with all its functionality.
* Added the "switched data" G-Merge feature.
* Added the "Help" button to the Send Preview dialog.
* Added the "Edit" button for the recipient and body files.
* Added the "Auto-open last project" and "Auto-save project" options.
* If any errors occur during a send operation, statistics will be appended to the error log.
* When sending email, Gammadyne Mailer will now always say "HELO", eliminating a problem with some SMTP servers.
* You can now have both a recipient file and an explicit recipient list, not just one or the other.
* After discovering that the DOS "start" command is not consistent between NT and 9x, another method is being used to send feedback and go to the Gammadyne Homepage.
* Invalid database columns in the message body are now detected before any information is queried from the database.  This is helpful because some databases do not provide intelligible error messages.
* The "Direct Delivery" setting is now saved with the project.  Previously, it was a global setting.
* If an error occurs during the send operation, the log will be automatically saved to "MMail.LOG" in the directory where Gammadyne Mailer was installed.
* The [[Now]] tag has been changed to [[-Now-]], and is classified as a basic tag.  You can now format database date columns the same way you are allowed to format the [[-Now-]] tag.
* Gammadyne Mailer can now handle table and column names with spaces.


Version 1.1 (May 18th, 1999)
* Added the "Direct Delivery" option.
* Added the Window menu.
* Gammadyne Mailer can now deal with SMTP servers that can't accept a compound email address for the sender or recipient.
* Gammadyne Mailer is now more tolerant of SMTP servers that don't say goodbye properly.
* Added the "Body Encoding" option.
* Fixed bug that could cause Gammadyne Mailer to hang for certain SMTP server responses.


Version 1.0
* Project began April 9th, 1999.
* Product released, May 12th, 1999.
