Version: 22.04
Email Service
The Email Service is called whenever a notification needs to be sent to a Journey Manager user. Journey Manager provides email-based implementations for notification.
info
You can implement your own notification services that can use email or other communication channels; for example, you could provide an SMS notification service.
The Email Service can be configured on multiple levels, and is resolved in the following order:
- Form Version
- Organization
- Global Service
The global default Email Service is used throughout, but can be overridden on the organization and form version level for sending submission related messages to applicants.
Service Invoke Parameters
Parameters are not nullable except where otherwise indicated.
Parameter | Description |
---|---|
svcDef | SvcDef A service definition value object. |
txn | Txn Nullable. A transaction record value object. |
subject | String The email subject. |
message | String Nullable. The email body message. |
fromAddress | String Nullable. The sender address. |
replyToAddress | String Nullable. The address to use when the recipient replies to the message. |
toAddress | String The email addresses of the main recipients of the email. |
ccAddress | String Nullable. The email addresses of recipients that you want to copy the email to publicly. |
bccAddress | String Nullable. The email addresses of recipients that you want to copy the email to privately (Blind Carbon Copy). |
attachmentMap | Map<string byte> Nullable. A map of attached files (containing filename/file data entries). |
Error Handling
If an error occurs, it is recorded in the Journey Manager database error log.
Templates
Service
import com.avoka.core.groovy.GroovyLogger as logger
import com.avoka.tm.svc.*
import com.avoka.tm.vo.*
import javax.servlet.http.*
class FluentEmailService {
/**
* Perform send email
*/
void invoke(SvcDef svcDef,
Txn txn,
String subject,
String message,
String fromAddress,
String replyToAddress,
String toAddress,
String ccAddress,
String bccAddress,
Map<string byte>attachmentMap) {
// TODO: perform business logic
new Emailer()
.setSubject(subject)
.setMessage(message)
.setFromAddress(fromAddress)
.setReplyToAddress(replyToAddress)
.setToAddress(toAddress)
.setCcAddress(ccAddress)
.setBccAddress(bccAddress)
.setAttachmentMap(attachmentMap)
.setTxn(txn)
.sendEmail()
}
}
Unit Test
import com.avoka.core.groovy.GroovyLogger as logger
import com.avoka.tm.svc.*
import com.avoka.tm.test.*
import com.avoka.tm.vo.*
import org.junit.Test
class UnitTest extends AbstractJUnitTest {
/*
* Perform service unit test
*
* throws exception if unit test fails
*/
@Test
void testEmailService() throws Exception {
Txn txn = new MockVoBuilder().createTxnOpened()
Map params = [
"svcDef": svcDef,
"txn": txn,
"subject": "Email Subject",
"message": "Email Message",
"fromAddress": null,
"replyToAddress": null,
"toAddress": "[email protected]",
"ccAddress": null,
"bccAddress": null,
"attachmentMap": null,
]
new ServiceInvoker(svcDef).invoke(params)
}
}