BoxLang 🚀 A New JVM Dynamic Language Learn More...
|:------------------------------------------------------:  |
| ⚡︎ B o x L a n g ⚡︎
| Dynamic : Modular : Productive
|:------------------------------------------------------:  |
This module provides mail sending functionality to Boxlang with many features such as attachments, signing, and encryption.
This module contributes the following Components to the language:
mail - the wrapping component for a mail operation mail component from - Sender email addressto - Comma-delimited list of recipient email addressescharset - The character encoding of the emailsubject - The email subjectserver - Optional SMTP server addressport - Optional SMTP server portusername - Optional SMTP usernamepassword - Optional SMTP passworduseSSL - Optional true|false for SMTP ConnectionuseTLS - true|false for SMTP TLS Connectionmailerid - The header ID of the mailermimeAttach - path of file to attachtype - MIME type of the emailwrapText - Wrap text after a certain number of
characters has been reachedsign - true|false Whether to sign the mail
message - requires keystore, keystorePassword, keyAlias, keyPasswordkeystore - The location of the keystore (Used
when signing)keystorePassword - The password of the keystore
(Used when signing)keyAlias - The alias of the private key to use
for signing (Used when signing)keyPassword The password for the private key
within the keystore (Used when signing)encrypt - true|false Whether to encrypt the
mail message - requires recipientCert, encryptionAlgorithmrecipientCert - The path to the public key
certificate of the recipient (Used when encrypting)encryptionAlgorithm - The encryption algorithm
to use (Used when encrypting). One of DES_EDE3_CBC,
RC2_CBC, AES128_CBC, AES192_CBC, AES256_CBCdebug - true|false Whether to enable debug
logging outputmailparam - the component which supplies a mail
parameter to the operation, such as headers or files mailparam component name - The header name ( if applicable )value - The header value ( if applicable )contentID - The content ID ( optional content id)disposition - The disposition type (
inline or attachment - if
applicable )file - The file path of an attachment ( if
applicable )fileName - An optional name of the file to be
sent as an attachment ( if applicable )type - The media type ( if applicable )mailpart - the component which supplies a message part
( e.g. "text", "html", etc ) to the mail
operation mailpart component type - The mime type of the mail partcharset - The character encoding of the mail partwrapText - The number of characters to wrap the
mail part atbx:mail
    from="[email protected]"
    to="[email protected]"
    subject="Hello from BoxLang Mail!"
{
    writeOutput( "Hello world!" );
}
<bx:mail
    from="[email protected]"
    to="[email protected]"
    subject="File For You"
    mimeAttach="/path/to/my/file.pdf"
>
Here's a PDF for you!
</bx:mail>
<bx:mail
	from="[email protected]"
	to="[email protected]"
	subject="Mail In Parts"
>
	<bx:mailpart type="text">
	Hello mail!
	</bx:mailpart>
	<bx:mailpart type="html">
	<h1>Hello mail!</h1>
	</bx:mailpart>
	<bx:mailparam file="/path/to/my/file.pdf" fileName="PDFForYou.pdf" type="application/x-pdf" />
</bx:mail>
Mail server connectivity may be provided either via runtime
configuration ( e.g. .boxlang.json ) or via the
attributes allowed by the mail component ( see above ). An example
configuration is provided below:
{
	"modules": {
		"mail": {
			// An array of mail servers
			"mailServers" : [
				{
					// The SMTP Server
					"smtp": "127.0.0.1",
					// The SMTP Port
					"port": "25",
					// The SMTP Username
					"username": "",
					// The SMTP Password
					"password": "",
					// Whether to use SSL in connection to the SMTP server
					"ssl": false,
					// Whether to use TLS in connection to the SMTP server
					"tls": false,
					// The idle timeout, in milliseconds, for connection to the mail server
					"idleTimeout": "10000",
					// The timeout, in milliseconds before giving up on attempts to connect
					"lifeTimeout": "60000"
				}
			],
			// The default encoding to use for outbound email
			"defaultEncoding" : "utf-8",
			// Whether to enable spooling of mail - when false, mail will be sent immediately
			"spoolEnable" : true,
			// The interval in fractions of seconds to process the spool
			"spoolInterval" : .50,
			// The connection timeout - defaults to null, meaning no connection timeout attempting to connect to the mail server
			"connectionTimeout" : null,
			// The following attributes are used for signing of all outbound emails
			"signMesssage" : false,
			// The signature keystore
			"signKeystore" : null,
			// The signature keystore password
			"signKeystorePassword" : null,
			// The private key alias within the keystore
			"signKeyAlias" : null,
			// The Key password within the keystore
			"signKeyPassword" : null,
			// Whether to enable mail logging
			"logEnabled" : true,
			// The severity level for logging
			"logSeverity" : "ERROR",
			// The time in minutes retain a message in the spool before the message is discarded - defaults to infinite
			"spoolTimeout" : 0,
			//  The time in minutes to try resending email before it is considered bounced - defaults to infinite
			"bounceTimeout" : 0,
			// Optional directory settings for the spool ( Defaults to BoxLang runtime home )
			"spoolDirectory" : "/usr/local/boxlang/mail/unsent",
			"bounceDirectory" : "/usr/local/mail/bounced"
		}
	}
}
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
								$ 
									box install bx-mail