MAILTOOL Release Notes

v1.00 - Original

v2.00 - Added ability to email an attachment, such as an HTML file,

as the body of the message. This is done specifying the

special value *ATT for the Message, and then listing the

attachment(s) you want to use as the body. All attachment

files are treated at "text-only" type files when being placed

into the message body.

NOTE: There is also a new paramter named

"Body Content Type (BDYCT)" that should be changed to the

appropriate content type. For example, if you are sending

an HTML file as the body, or using HTML in the message text,

this value should be "text/html".

v2.01 - Fixed bug when attaching a file larger than 32k as the body

of the email.

v2.02 - Internal updates.

v2.03 - Fixed bug when sending attachments. Attachments could be


v2.04 - Added logging. The file MLTLOGPF in the MAILTOOL library

will keep track of certain parameters when MAILTOOL is used.

Changed the Subject line from 256 to 1024 characters.

Changed the Message line from 512 to 4096 characters.

v3.00 - Updated to integrate with SPLTOOL and AFPTOOL.

Added ATTNAM (Attachment Name) parameter. This parameter

can be used to name the attachment in the email something

different than the real file name. Default is to use

the real file name.

v3.01 - Fixed bug when emailing more than one attachment. The

2nd and latter attachment file names became corrupt.

v3.02 - Changed the limit of attachments from 20 to 50. If using

with SPLTOOL you should use at least v8.02 of SPLTOOL.

v3.03 - Allow blanks for attachment names that will be ignored after

the first paramter entry. If attachments are used, the

first attachment parameter must be used.

v3.04 - Removed name of day formatting from date.

v3.05 - Added Importance (IMP) parameter. Can be used to specify normal,

high, or low importance.

v3.06 - Added DEBUG parameter. When *YES is specified, the MIME file used

to send the email is copied to /tmp/mailtooldebug.txt for viewing.

v3.07 - Updated date routine. Was causing errors in date when the language

was non-US.

v3.08 - Added a Mail Disposition Notification (MDN) option. This allows you to

specify an email address in which to send a notification when the email

is received and read. Please note this is not foolproof and does not

always work. This option can be shut off at the client and server levels

of the receipient.

v3.09 - Updated To: and Content-Disposition: headers. They weren't including

quotes around the names if specified which caused problems with some

email servers.

v3.10 - Updated method of getting MIME file name. On newer (fast!) machines running

multiple jobs the MIME header file names could clash. An update was added

to fix this problem.

v3.11 - Added the ability to use the special value *USER for the From Address

(FROMADDR) parameter. This will instruct MAILTOOL to use the SMTP name

from the directory entry of the user the is running the command.

v3.12 - Updated processing to convert to and from addresses to CCSID 500 before

calling QtmmSendMail API. This requirement was recently added to the

IBM documentation for this API. This update is supposed to fix problems

that people have with having to use characters other than "@" in their

email addresses (for example the § or à characters).

Updated to retrieve default CCSID instead of job CCSID.

v3.20b - Changed attachment processing... *PLEASE READ*

If specifying *ATT for the message parameter, this will now ONLY use the

FIRST attachment specified as the body of the message. All other attachments

listed will be treated as normal attachments.

If you are currently using the *ATT special value for the message body

parmeter and are specifying more than one attachment to be the body of the

message, you will need to update your procedures before applying this

version of MAILTOOL.

v3.21 - Added the Recipient Separator (RECSEP) parameter. This is used to specify the

character to use to separate multiple email addresses. In the past this was a

semicolon. On very few machines this caused problems. I added this parameter

and defaulted it to a comma which seems to be the norm with most email clients


v3.22 - Added double quotes around name or email address (if no name). Some systems had

problems with special characters in email addresses if not in quotes.

v3.23 - Added error checking for CPF3C17 that will be returned on V5R2 if a bd

recipient address is used.

v3.24 - Added option to control the newline characters that are used and solve

issues on machines not using a US code page. If \n is not working use

the following command:


You can then use the \n character for newlines. If you want to use

another 2 characters, you can change what is used using the CHGDTAARA


v3.25 - Added Reply-To parameters. You can now specify up to 10 addresses that

will be used for reply to recipients. If no addresses are specified

replies will automatically go to sender.

NOTE: If you use the Reply-To parameter and want a reply to go to the

original sender you must include the original sender's address in the

reply to list.

If using this version with SPLTOOL, you will need SPLTOOL v8.06 or higher.

Added parameter to name the debug file. Defaults to mailtooldebug.txt.

v3.26 - Fixed bug with timestamp placed in MIME header file.

v3.27 - Fixed debug file parm to be Mixed case instead of MONO.

v3.28 - Fixed bug with attachments over a certain size. (#B64ENCODE error)

v3.29 - Fixed bug with attachments. Was inserting @@ into files.

v3.30 - Removed use of double quotes around email address when no "name" is specified. This

was causing some problems on servers. NOTE: If you are using any special characters

in your email address(es) and are experiencing problems, please contact me.

Also, be sure to test this version of MAILTOOL before moving it into production

if you know you are using special characters any email address.

v3.31 - When sending emails with special characters in the subject or message and

including an attachment the special characters would be corrupted. Removed

the default encoding from the MIME header which caused this problem.

v3.32 - Fixed rare bug when sending attachements as the body of the message. Trailing blanks

from buffers were truncated.

v3.40 - **NOTE**

Updated registration to use Serial Number and Model number.

Removed nag message from emails in unregistered version. Instead, temporary

keys will be issued to allow unlimited testing for a period of time.

-- Current Users --

Email me a note with your serial number(s) and model number(s) before you

install this version so I can get you a new key.

-- New Users --

Email me and I will get you a temporary key. This temporary key will allow you

to use MAILTOOL with all functionality for a limited period of time. You

need a temporary key or a permanent key to use MAILTOOL.

Updated logging portion of application to use system date instead of the

job date.

v3.41 - Fixed small bug with temporary registration key checking.

v3.42 - Fixed bug with debug paramater. On versions prior to V4R5 of the OS

the REPLACE parameter on the CPY command was not valid. Change processing

to first remove the debug file if it exists, then create the debug file.

v4.00 - Added MAILTOOL Plus! option as described below. MAILTOOL Plus! requires

a seperate registration only for the functionality described below. If

you are still using the IBM SMTP server to send emails with MAILTOOL,

registration of MAILTOOL Plus! is not required.

-- MAILTOOL Plus! Update --

Added option to bypass the standard IBM SMTP server for sending of email.

The new parameter added for this is SENDWITH. The default value of

*IBMSMTP will act as it normally did using the IBM SMTP server to send

the email message. The value of *MAILTOOL will use MAILTOOL's own internal

communications to send the email. With this option you do not need to have

MSF or the SMTP server running at all unless it is your only SMTP server.

The *MAILTOOL option will look up the MX records for the domain of the

"from" address to determine which mail server to connect to in order

to send emails.

When using *MAILTOOL for the SENDWITH parameter you have the option to

specify a mail router that can be used if no MX records are successful

or if you want to only use a mail router.

Added new parameter for SMTP Debug File (DEBUGSMTP). When the DEBUG(*YES)

option is used the file specified will be created to show the communications

MAILTOOL has with the SMTP servers found on the MX records of the from



v4.01 - Added the MAILTOOL Plus! Log (MTPLUSLOG) command that will allow you to see

and work with a log of emails that were not 100% successful in transmission.

From this display you can display properties of the emails such as the

recipients and which recipients received the emails and which did not.

See the MAILTOOL Plus! documentation for more information on this feature:

v4.02 - (SPMT091004) Changed timout for socket from 20 to 30 seconds.

Fixed bug when reading continued responses from mail server.

v4.03 - Added CCSID parameter that will be used for conversions between

EBCDIC and ASCII. This parm is only valid using SENDWITH(*MAILTOOL).

v4.04 - Updated MIME file name creation so that it will only use value from

data area. In the past if the data area wasn't available a timestamp

would be used.

v4.05 - Updated MAILTOOL Plus! so that if EHLO command fails HELO is tried for

compatibility with older systems.

v4.06 - Fixed bug when resending email with MTPLUSLOG command.

v4.07 - Changed conversion method for addresses before calling QtmmSendMail API to

use iConv() instead of API.

v4.08 - Added processing for MAILTOOL Plus! to look up MX records for the mail

router that is specified (if used).

Fixed bug when trying to connect to servers after the first failed.

v4.09 - Fixed bug that would cause looping on MX servers if the first one

couldn't be used to send email.

v4.10 - Added MTPBIND parameter to allow user to bind outgoing communications

when using MAILTOOL Plus! to a specific internal IP address.

v4.11 - Fixed small bug. MAILTOOL Plus! wouldn't log errors during the message

portion of the email. Updated so these errors would be logged in the

MTPLUSLOG command.

v4.12 - (SP050531) Added processing to handle double quotes for CCSID 1026.

(SP050615) Added more error reporting for attachment not found errors

Fixed small bug when using MAILTOOL Plus! and a out of range error occured.

v4.13 - Added more error checking to MAILTOOL Plus! when socket connections are


v4.14 - When using MAILTOOL Plus! and socket error occured previously it would

simply abort. Now it will continue to try other mail servers if available.

v4.15 - Updated application so "from" email address would appear correctly in outlook

when a "from name" was used.

v4.17 - Added Timeout parameter for MAILTOOL Plus

v5.00 - Added distribution lists for MAILTOOL Plus. Use the MLTDSTL command to

work with distribution lists. To use a distribution list, specify the

distribution list preceded by a * on the To, CC, or BCC address


v5.01 - Added PLAIN and LOGIN authentication capabilties. If your mail server

requires plain or login authentication you can use the new parameters

AUTHUSER and AUTHPW to enter the userid and password values.

v5.02 - Added PRIORITY parameter that allows a user to set a priority of Urgent,

Normal or Non-Urgent.

v5.03 - (MT060823) Update on MAILTOOL Plus processing for non-US code pages and

the @ symbol.

(MT060823) Update on priority processing. Added X-Priority header to

emails for systems that use them.

(MT060823) Fixed bugs when using MAILTOOL Plus! that could possibly close

obscure TCPIP ports causing malfunctions in other software

Added option to send text and html versions of an email. Both versions

must be created in the IFS first. Then for the subject specify the

special value of *MULTI and specify the two files created in the first

and second attachment parameters. The first file must be the text version

and the second version must be the HTML version.

v6.00 - Registration updates

v6.01 - Registration fix. If you aquired keys for v6.00 of MAILTOOL, please contact

us for new keys for this version.

(SP070103) Fixed MAILTOOL Plus Authentication. When sending to multiple

recipients with different domains the authentication strings

would get corrupted.

v6.02 - (MT070103) Fixed MAILTOOL Plus Authentication. When sending to multiple

recipients with different domains the authentication strings

would get corrupted.

Added ability to use multiple "names" for TO, CC and BCC Addresses.

v6.03 - Added new parm MXLOOKUP. This parm is used when using MAILTOOL Plus and

specifies when you are using a mail router if you want to perform an

MX Lookup on the mail router itself. This fields defaults to *YES so

it performs as before the addition.

Added more debugging to debug file for MAILTOOL Plus listing all entries

used to try and send the email.

v6.04 - Added SENDADDR and SENDNAME parameters to allow the use of the Sender: header.

v6.05 - Added ability to specify a user id for the TO, CC or BCC addresses. If the user

id specified has an SMTP address set up in a directory entry, that address

will be substituted for the user id.

v6.06 - Added SSL Support for MAILTOOL Plus.

Added parameter to specify SMTP port when using MAILTOOL Plus.

Updated processing for MAILTOOL Plus so when using USERTR(*ONLY) it doesn't also

try to send directly.

v6.07 - (v6.06 SP) Removed BCC header from MIME text.

(v6.06 SP) Fixed bug when running on non-US code page with @ (at) symbol

in email addresses.

Added FOOTER parameter to allow user to specify the path to a stream

file in the IFS to be used as a footer text in the email (for example

a company disclaimer).

v6.08 - Added options to MAILTOOL Plus distribution lists so you can define

what "type" of address each entry is in a specific distribution list.

The valid types are as follows:

*DFT - Default, which uses the address type that the distribution

list is specified on (ie, TO, CC or BCC)

*TO - The address will always be used as a TO address

*CC - The address will always be used as a CC address

*BCC - The address will always be used as a BCC address

v6.10 - (v6.08 SP) Added colon ":" as a valid character in a recipient email address

for compatibility with fax email servers. This option will

only work with MAILTOOL Plus when using a mail router that

is acting as a fax server.

Added ability to use wildcard in the attachment file name. The

valid wilcard methods are wildcard*, *wildcard, and wild*card.






v6.20 - (v6.10 SP) Fixed bug when sending to similar domains would send

multiple times to some of the recipients.

Updated logging. Instead of a single MLTLOGPF log file, there are

now 3 log files.

MLTLOGPF - Header information for email

MLTLOGDPF - Recipient detail information

MLTLOGAPF - Attachment detail information

Records can be matched between the files by the "from" email address

as the email id that is included in each file.

v6.21 - (v6.20 SP) Fixed bug when editing email addresses in MAILTOOL distribution

lists and getting error that says "Address already exists for list"

Added command MTPRESEND that will automatically cycle through records

in the MTPLUSLOG display and try to resend them.

Some emails that were erroring out when using MAILTOOL Plus were not

getting added to the MAILTOOL Plus Log display. Fixed.

Added Date/Time to MAILTOOL Plus SMTP Debug file.

Added object MAILTOOLV type *DTAARA which contains the version of the


v6.22 - (v6.21 SP) Bug when sending mail with MAILTOOL Plus and get past RCPT command

but failed after would not log an error.

(v6.21 SP) Updated MAILTOOL Plus Error log so F12 worked the same as


(v6.21 SP) Fixed bug in mailtoolsmtp.txt file where the last line of the email

was being concatonated with the next debug description line.

(v6.21 SP) Added email address to completion message (ie sent to xxxx@xxxxx.xx)

(v6.21 SP) Changed AUTHPW parm to not show in job log.

Added NOATTACT (No Attachment Action) parameter that will allow you to specify

what happens when a wildcard attachment is specified and no files are found.

The default value of *NONE will act as it did before and send the email, but

you also have the option of creating a file named /bvstools/mailtool/noattdft.txt

that can be used as a default attachment. This file can contain anything you

like such as a message saying "no attachments found."

The value *ERR will tell MAILTOOL to stop and send an error instead of

sending the email.

v6.23 - (v6.22 SP) Updated option 5 (display) from MTPLUSLOG command to use

DSPF instead of copying to file in QTEMP and DSPPFM. The

DSPF command wasn't available before but now that the min

release is V5R2 it shouldn't be an issue.

(v6.22 SP) Fixed bug when specifying *ATT for message along with another

attachment it would attach the wrong file.

(v6.22 SP) Fixed bug with wildcard attachments in QDLS file system not


Added new parameters MSGID (Message ID) and MSGIDDOM (Message ID Domain).

These are used to add message IDs to your emails. The default is that

MAILTOOL will function as it did before, with no message ID.

v6.24 - Added TLS support for MAILTOOL Plus. To use TLS instead of SSL, simply

specify *TLS for the Use SSL parameter.

SP110811 - Fixed bug when sending emails with invalid attachments it

a file descriptor was being left open and after a few

attempts other applications would have errors opening new

stream files.

SP111015 - Fixed bug when using Wildcard with QNTC file system. It

wasn't picking up any files.

SP111027 - Fixed bug when MAILTOOL Plus key was invalid the

MTPLUSLOG file didn't work right to resend email.

SP120410 - Fixed issue when using Yahoo Mail. The Base64 conversion

routing being used was rejected by Yahoo (but not for other

email clients such as Gmail).

SP120410b - Same as above, small bug fix

SP120606 - Found issue when emailing using a distribution list that was

empty no way to add a recipient. Added the ability to do this

using MTPLUSLOG. Also found bug if emailing an attachment

the attachment would be corrupt, fixed as well.

SP121003 - Updated MAILTOOL Plus to give a 10 minute timeout value after

the DATA portion of the email via RFC 5321

SP121112b - When *USER is specified as the FROM address and no directory

entry was found the email was still trying to send. Added

more error checking for this case.

Changed method of looking up directory entry name to use

system tables.

v7.00 - Added ILE Subprocedures to use to send emails more easily in programs. See the MAILTOOL documentation

at for more information.

Fixed a few bugs.

Changed default debug files so that they use a unique ID number so their are not overwritten each time

the program is run. If you have your defaults set to DEBUG(*YES) you can override this by using

debug file names that do not include the /%id%/ replacement value.

If the program errors out, a debug file will be created no matter if debug is turned on or not. This makes

things easier to debug as recreating the issue isn't always possible.

Using configuration files for defaults for ILE subprocedures. See documentation at

for more information.

SP140212 - Fixed bug when sending large attachments and they were corrupted.

Fixed bug when using wildcard attachments.

SP140212b - Fixed bug when using reply to address and it would not clear them

before sending the next email.

SP140219 - Fixed bug with timeout value when using ILE functions.

SP140220 - Added "Close Connection" variable to debug dump.

Removed MIME data from the SMTP trace debug file. Replaced with one

message stating the size of the MIME file. MIME data is already in

it's own file and this will keep the size of the trace files down.

SP140220b - Fixed bug when sending multiple attachments and the names of the

2nd attachment and on were corrupted.

SP140326 - Fixed bug when mail server was capable of using authentication and

username was left blank it still tried to use authentication.

SP140401 - Removed the message saying which configuration file was being used

when debug was turned off.

SP140410 - Fixed bug when specifying a distribution list. Would say either

there were no recipients or that distribution lists were not

valid when not using MAILTOOL Plus (and you were using Plus).

v7.10 - Added Configuration and Save parameters to the MAILTOOL command. See docs for more

info on these new parameters.

Added the MTPSAVE data area which is a default value for saving emails send using

MAILTOOL Plus. See documentation for more information.

Updated the MTPLUSLOG command so that not only will it show emails that errored, but

also emails that were sent with the save option (MAILTOOL Plus only).

Updated the MTPRESEND command with the option to send only errored emails, all emails,

and also the ability to specify a configuration file to use when sending the emails.

Added the ability to specify a pre-created MIME file to use when sending the email. When

using this information you also will need to make sure you are specifying the recipient

(ie TO, CC, BCC) addresses. This applies to MAILTOOL Plus only.

SP140708 - Updated MTPRESEND to show the number of emails that will be sent if process

is completed.

Updated MTPLUSLOG display to show subject and allow viewing of config file

that is attached to the email.

SP140714 - Fixed bug when using *ATT as the body any other attachments would be corrupted.

SP140721 - Fixed bug when job CCSID was non US. Wasn't recognizing email addresses

because the @ sign wasn't being converted.

SP140722 - Fixed issue with multiple SMTP files. Made sure it was using the file in


Fixed issue when using a configuration file and an a distribution list entry.

It would say you can't use them without MAILTOOL Plus because it hadn't yet

loaded that information from the config file.

SP140722b- MAILTOOL command was sending completion type error messages instead of escape

as in previous versions. Updated so it worked the same as the prior version.

Updated #mailtool_addAttachment() to return an error message if one exists. This

updated the /copy member P.MAILTOOL as well.

Updated maximum number of attachments to 100 from 50.

SP140724 - Updated JSON Parsing routine to not ignore data like CR and LF that are in

quotes of the data (for newlines in message field in config file).

SP140728 - Fixed issue with MAILTOOL Plus not recognizing that the server was using

authentication because the information was sent in separate pieces for each

option the server allowed.

SP140804 - Updated the MTPLUSLOG command to allow start date and time to subset the list

of items.

SP140805 - Fixed issue when using distribution list and MAILTOOL Plus the MIME header wasn't

being built correctly in all cases. Also, the debug file wasn't being removed.

SP140918 - Fixed bug with CCSIDs and JSON parsing.

SP140922 - Added return parameter to #mailtool_sendMail that returns the unique email ID.

Updated #mailtool_sendMail so that it returns the number of recipients the email

was delivered to when using MAILTOOL Plus instead of zero. When using

IBM SMTP this will still return zero when there are no errors. For both cases

-1 will be returned when there is an error.

SP140924 - Fixed issue when sending email and it errored JSON config file that is created

was the wrong code page/corrupt.

SP140926 - Fixed bug when message started with an asterisk (*) and it wasn't a special value

like *ATT it would convert the message to upper case.

SP141117 - Updated #mailtool_sendMail so that it will always return a unique message ID, even

when there is an error.

SP141118 - Fixed bug with the FROM, TO and CC Names getting corrupted in certain instances.

SP141118b - Temporary directory setting wasn't being used for _debug_ file. Fixed.

SP150107 - Fixed bug when sending a blank email address on the command it would try to look up

a distrubution list entry. Fixed

SP150209 - Fixed bug when specifying an extra attachment without a leading / process would error.

SP150210 - Fixed issue when sending with *MAILTOOL and no mail router the TO addresses weren't

being processed.

v8.00 - Updated to allow the use of OAuth 2.0 for authentication for GMail Accounts. This will also require

that G4G and GETURI are also installed and that the *GMAILSMTP server is registered in G4G for

each user that is using this feature. GETURI and G4G will also need to be in the library list.

To specify the use of OAuth 2.0 for authentication use the value *G4G_XOAUTH2 for the SMTP

Auth User ID paramter and leave the SMTP Auth Password blank.

SP150226 - Updated application so the special value for the SMTP Auth User of

*G4MSXOAUTH2 will allow OAuth 2.0 Authentication to be used for

Microsoft Cloud accounts (such as This option requires

G4MS v1.20 or higher and GETURI v4.09 or higher

v8.10 - Updated to use latest version of JSONTOOL JSON Parser for Configuration Files (v3.0).

Updated configuration file processing when using the MAILTOOL command so that if a

configuration file is used any value in the configuration will override the values on

the command (if they aren't blank and the values exist in the configuration file).

Updated the configuration processing so if *DFT is used for the configuration file and not

a unique name, it will first try to use /bvstools/mailtool/config/<userid>/defaults.json. If

that file isn't found it will attempt to use /bvstools/mailtool/config/defaults.json. Previously

if a unique name was specified and that file wasn't found it would try using the defaults next. Now

if a unique file isn't found it will error out and stop.

Added data area MLT002DA which will hold the SSL Protocol Version to use.

Added MLTUPDATE command to make updating from a previous version easier.

*** Added a procedure named #mailtool_loadDefaults() that can be used when using the ILE subprocedures

to load defaults from the configuration file set using the configuration_file keyword and

#mailtool_setValue(). This is different in that before the #mailtool_init() subprocedure would

load the defaults. Now YOU WILL NEED TO UPDATE your PROGRAMS to use the

#mailtool_loadDefaults() subprocedure.

Old Method:


rc = #mailtool_setValue('configuration_file':


if (#mailtool_init() >= 0);

rc = #mailtool_addTORecipient('');

rc = #mailtool_setValue('subject':Subject);

rc = #mailtool_setValue('message':Message);

rc = #mailtool_sendMail(errMsg);


New Method:


if (#mailtool_init() >= 0);

rc = #mailtool_setValue('configuration_file':


rc = #mailtool_loadDefaults();

rc = #mailtool_addTORecipient('');

rc = #mailtool_setValue('subject':Subject);

rc = #mailtool_setValue('message':Message);

rc = #mailtool_sendMail(errMsg);


See for more details on the

updates included with this version.

v8.20 - Added #mailtool_setMsgPtr() procedure. This procedure allows you to set the message

of the email by specifying a pointer to the message and the length of the message.

see for an example.

SP150709 - Fixed bug when using MAILTOOL Plus and no mail router. If there

were multiple recipient domains the 1st would work find but the

subsequent would not be delivered properly.

v9.00 - Added licensing by date (SaaS) option.

SP151028 - Added option for MAILTOOL Plus to override the host name that is

sent in the EHLO/HELO conversation. By default the system host

and domain is used from CFGTCP option 12. If you wish to override

this use the following command:


Replace <newhost> with the hostname you wish to use.

SP151113 -Included YAJL objects.

Fixed bug when configuration file specified doesn't exist. Now it

throws an error.

Updated log so when SSL handshake error happens the return code is

in the log file.

v9.10 - Added #mailtool_clearRecipients() subprocedure. This allows you to clear all,

TO, CC or BCC recpipients so you can reload them and resend the email.

v10.00b- Added options to Base64 encode the subject and/or the body of the message.

This option was added to handle non-ASCII characters in the subject or

message body.

When using these options you'll need to make sure that the CCSID and Code

Pages used are UTF-8 (1208). Any attachment, footer or external files must

have a code page of 1208 in order to work properly.

The parameters are B64SUBJ and B64MSG.

The configuration names are base64_encode_subject and base_64_encode_message.

Updated JSON parsing to use YAJL port.

Fixed wildcard attachment logging.

When using *ATT for the message body and a wildcard attachment in the first

attachment parameter the results may be unpredictable as to which file it

will use for the body. It's best to supply a fully qualified name on the

first parameter and any wildcards following.

Chaged CCSID and Code Page defaults from 819 to 1208.

SP160216 - Updated Base64 Encoding to use apr_base64_encode API

SP160217 - Fixed error when sending with *IBMSMTP when TO and FROM

were different lengths.

SP160218 - Fixed bug when adding attachments and specifying a

name for the attached. Was not using the name.

SP160219 - Fixed bug when sending attachments the first attachment

name would be *ATT instead of the file name if an

actual filename wasn't provided.

SP160331 - Added subsetting by Sender Domain in MTPLUSLOG command.

SP160404 - Fixed issue with non US code pages where the email would be

corrupt in some cases using special characters.

SP160408 - Fixed issue when using Distribution Lists when a CC was before

TO in the file. Caused a display issue with the headers.

SP160411 - Fixed issue when using wildcard attachements and the default

no attachment file (noattdft.txt) didn't exit. An extra

boundary marker would be put in the email causing some

clients to show an extra attachment (sometimes named

att00001.txt or something similar).

SP160507 - Fixed bug when using OAUTH 2.0 and service.

SP160509 - Fixed issue when using OAUTH 2.0 and CCSID 1208.

v10.10 - Added Send With (SENDWITH) option to specify *G4MSMAIL in order to send

the email using the Microsoft Office 365 Mail API using OAuth 2.0.

This option requires that the G4MS software (

is installed an the G4MSMAIL addon is licensed.

Note: Not all MAILTOOL parameters will affect the email when sending mail

using the *G4MSMAIL option. If there is a parameter not working that

you wish to use, contact us and we will see if it's possible to add.

v10.20 - Added logging to MLTLOGPF, MLTLOGDPF and MLTLOGAPF when using the


Fixed bug when using SENDWITH(*G4MSMAIL) and MESSAGE(*ATT). If the first

attachment was blank, but the 2nd wasn't (which was intended to be

the body) it would throw an error. Now it will use the first non-blank

attachment as the body.

Changed use of YAJLR4 service program to use bindy by copy instead.

Added Send With Type to MLTLOGPF file to see which method an email was

sent with.

Created command MTMRESEND command which is similar to the MTPRESEND command.

This command allows you to enter a Microsoft ID or the value *ALL in order

to resend emails in error that were sent with SENDWITH(*G4MSMAIL).

Created MTG4MSLOG command in order to view and optionally delete or resend

individual emails that were in error and sent with SENDWITH(*G4MSMAIL).

Changed requirement of G4MS from v3.00 to v3.10.

SP160615 - Updated F.MAILTOOL service program to use YAJLR4 as a module

(bind by copy) instead of service program

SP160616 - Fixed bug when sending with G4MSMAIL and specifying *ATT for

the message. The email was using the 2nd attachment instead

of the first for the body.

v10.30 - Updated applciation so SENDWITH(*IBMSMTP) will use distribution lists

in MAILTOOL (MLTDSTL) just like when using MAILTOOL Plus.

v10.40 - Updated to work with G4G v10.20.

v10.41 - Updated to work with G4MS v4.10.

SP161026b - Updated so that MAILTOOL can be run in "test" mode. When in

"test" mode no emails will be sent.

To go into test mode create a data area named MLTMODEDA with a

length of 10 and a value of *TEST. This data area does not

need to reside in the MAILTOOL library.

v10.50 - Updated with the option to turn strict SSL off. The data area

named MLTSSL01DA contains the value *YES or *NO depending if

you want to ignore most SSL Handshake errors or not.

SP170112 - Updated so when sending with G4MSMAIL it will process any

distribution lists specified in any of the recipient


v10.60 - Updated MLTUPDATE so it will use the new library name instead of MAILTOOL

(in case the library is NOT MAILTOOL).

Updated option when sending with *G4MSMAIL option that you can now use a

G4MSMAIL configuration file. Any settings in the configuration file will

override any of the paramter values.

Updated MTPRESEND command. Added a PROMPT(*YES|*NO) parameter so you can

bypass the prompt when resending emails. Default is *YES so that it acts

like it normally did.

SP170427 - Bug when binding to local IP address. Fixed.

SP170428 - Incresed max size of authorization user and password fields

from 64 to 256 bytes.

SP170520b - Added option on MTPLUSLOG command to display email messages

with errors only.

SP170602 - When an email would be sent with MAILRTR(*NONE) and there were

no MX records to be found for the recipient the FROM address

in the MTPLOGHPF file would be blank. Fixed.

10.80 - Updated to latest YAJL objects.

Renamed YAJL type *SRVPGM to YAJLBVS so it won't interfere with any other

versions of YAJL that may be installed.

Changed default value of MLTSSL01DA from *YES to *NO so that strict SSL is

off by default.

v10.81 - Updated to work with G4G v11.00 and higher.

v10.82 - Added Return email and name so the Return-Path can be set for each email.

v10.85 - Added Bad Address Action (BADADDACT) paramter on the MAILTOOL command as well

as bad_address_action settable variable to the ILE functions.

The value of *DFT for these will use the value in the MLTBADAA data

area (which defaults to *WARN).

The value of *WARN will issue a warning about a bad email address

or invalid or empty distribution list.

The value of *FAIL will issue an error and stop processing if an

invalid email address or invalid or empty distribution list is


SP180831 - Added option to use *USER for the From Address when specifying

*G4MSMAIL as the send with server type and using Office 365

to send the email

SP181106 - Changed MLTDSTL to allow mixed case for distribution list name

since distribution lists are case sensitive.

Added F12 to Entry List Maintenance screen.

Updated MLTDSTL so when you're working with an entry and finish

you will be positioned to the last entry worked with.

Updated MLTDSTL so when you add a new entry the cursor will be

placed on the record just added.

v10.90 - Updated MTPLUSLOG and MTPRESEND commands so if an invalid configuration file

is entered processing would stop and not remove the entries in the log.

Added command MTPREBUILD which can be used to rebuild the MAILTOOL error

log in the case that there is an issue with resending and new entries

aren't placed in the log file. This will only work if the MIME files in

the IFS still exist in the /tmp directory with the basic naming format.

Before using this option, please feel free to contact use with questions.

v11.00 - Added the ability to use the IBM Global Security Kit (GSKIT) for SSL/TLS

communications. By default MAILTOOL will use the Standard IBM SSL APIs.

If you update data area MLTSSL02DA to the value of *GSKIT, the GSKIT will

be used for SSL communications.

SP190620 - Added configuration file to debug data when using MAILTOOL


v11.10 - Added option to use SENDWITH(*G4GSMAIL) to send email using the GMail RESTful

APIs. This requires licensing for G4G, G4GSMAIL and GETURI.

SP191124 - Updated MTG4MSLOG processing program to find the message and

subject since the labels in the JSON changed when moving to

the new MS Graph APIs.

SP200428 - Updated MTG4MSLOG program so that if for some reason YAJL

returns an error message with an invalid character we

convert it to blank.

v11.20 - Changed service program usage to *DEFER for better performance.

Updated application so that you can specify the following in a routers

file to specify to use G4GSMAIL as an option to send emails if a

previous method fails:


"mail_router": "*G4GSMAIL",

"sequence": nn


Added more debugging to smtp trace file that is created.

SP210116A - Added message ID and message ID domain when using send with


SP210316 - Updated MLT008RG to set commit to none for SQL operations.

v11.30 - Added LSTUNSUB and LSTUNSUBP parameters to MAILTOOL command to allow

specifying values for List-Unsubscribe and List-Unsubscribe-Post

headers. These can be set using the ILE functions using the #mailtool_setValue()

function and the list-unsubscribe and list-unsubscribe-post labels.

Added the option to specify up to 50 user defined headers and values

using the MAILTOOL command, and up to 100 using the ILE functions. The

ILE functions will use the new #mailtool_setUserValue() function.

v11.50 - Updated so if the SSL Handshake error 415 (GSK_ERROR_BAD_PEER) happens, MAILTOOL

will attempt to resend the email up to 5 times before issuing an error.

Updated MTPLOGHPF file to include locations of debug files.

Updated MTPLUSLOG to include the email ID so matching up debug files

is easier.

SP211022 - Added more debugging info when there is an error writing

to the debug file.

SP211128 - Updated on GSK_WOULD_BLOCK read to ignore error.

v12.00 - Updated ILE functions and removed the leading # (hashtag) from the names

for compatibility with other code pages.

SP220107 - Added subject back to MTPLOGHPF file. In the past I was leaving

it blank and retrieving it from the MIME file.

SP220202 - Added options to MTG4MSLOG command to edit the config file as well

as view details, such as the full path to the config file.

*NOTE - If you choose to edit the config file using option 2 it

could corrupt the file as it uses the EDTF command. We strongly

recommend instead using option 5 to view the full path the the

config file and edit it using a proper text editor such as Notepad++.

SP220330 - Updated MAILTOOL command so when a critical error is reported when

sending email with *G4MSMAIL that it will cause a hard error in

MAILTOOL as well so that it can be monitored.

SP220713 - When specifying NOATTACT(*ERR) and an attachment wasn't found,

MAILTOOL was not throwing an error. Fixed.

v12.50 - Added ability to specify send_with_server_type of *G4MSMAIL when using the

MAILTOOL ILE functions. This requires G4MS v9.12 or higher. This method

uses the g4msmail_sendMailMime() function which at this time (August 2022)

is limited to 4MB in size (before Base64 encoding).

When sending with G4G or G4MS with a MIME file added processing that if

debug is off to remove the MIME files.

SP221102 - Updated a few errors that were using the wrong return code

variable when reporting errors.

SP221104 - Updated check for Username: and Password: when using user

authentication. This was because for some reason the

Microsoft Office 365 servers would randomly send the wrong

prompt during negotiation. If it doesn't find the proper

prompt it will retry hoping that Microsoft's server sends

the proper response. Yes, I am coding around Microsoft's

bug. *shrug*

SP221109 - Updated code to ignore blank from email addresses if they

are in the routers config file.

SP221129b - Updated objects that work with G4MSMAIL to use the latest version.

Requires G4MS v9.15 sp221129 or higher.

SP221129c - Fixed issue with GSK_WOULD_BLOCK error was encountered and RC > 0

to treat it as a re-read for the operation.

SP221204 - Updated so that the temp directory would affect the debug and

trace files instead of always putting them in the /tmp directory.

Added email ID to job log message.

Added trace file location to job log if debug is on or the email

encounters an error using MAILTOOL plus so that we can easily

find it. Example:

Trace file:/tmp/mailtoolsmtp_127721.txt