cfmail Test Harness
Mode: #encodeForHtml(mode)#. Use responsibly.
// Collect inputs
p = {
to = safe(form.to), from = safe(form.from), subject = safe(form.subject),
body = form.body, html = structKeyExists(form,”html”),
cc = safe(form.cc), bcc = safe(form.bcc), replyTo = safe(form.replyTo),
server = safe(form.server), port = safe(form.port),
username = safe(form.username), password = safe(form.password),
useTLS = structKeyExists(form,”useTLS”), useSSL = structKeyExists(form,”useSSL”),
attachments = safe(form.attachments), headers = form.headers,
rateMs = val(form.rateMs), mode = safe(form.mode)
};
// Safety: prevent sending to large distribution lists accidentally
if (listLen(p.to) > 5 and p.mode eq “prod”) {
throw(type=”HarnessSafety”, message=”Too many recipients in prod mode.”);
}
// Send the message
start = getTickCount();
<cfmail
to="#p.to#"
from="#p.from#"
subject="#p.subject#"
charset="utf-8"
type="#iif(p.html,'html','text')#"
>
#preserveSingleQuotes(p.body)#
logLine = serializeJSON({
timestamp = dateTimeFormat(now(), “yyyy-mm-dd HH:nn:ss”),
to = p.to, from = p.from, subject = p.subject, status = status, elapsedMs = elapsed,
server = p.server, port = p.port, tls = p.useTLS, ssl = p.useSSL, mode = p.mode
}) & chr(10);
fileWrite(logFile, logLine, true);
Result: #encodeForHtml(status)# (elapsed: #elapsed# ms)
Log file: #logFile#
