The EmailProvider sends notifications using cbMailServices.


To use the EmailProvider, you need cbMailServices installed. This is not installed by Megaphone. If you do not have cbMailServices installed, an exception will be thrown if you try to define a channel with the EmailProvider.


The EmailProvider accepts the following properties:

    "mailer": "default", // optional, uses the cbMailServices default otherwise
    "onSuccess": () => {}, // optional, logs to info otherwise
    "onFailure": () => {} // optional, logs to error otherwise


The toEmail method returns a Mail@cbmailservices instance to send. The to property can be either defined in the toEmail method or a routeNotificationForEmail method defined on the Notifiable instance.

public struct function toEmail( notifiable, newMail ) {
    return newMail(
        to = notifiable.getEmail(),
        from = "",
        subject = "Megaphone Email Notification",
        type = "html",
        bodyTokens = { product: "ColdBox" }
    ).setBody( "
        <p>Thank you for downloading @product@, have a great day!</p>
    " );


You can let the Notifiable instance define how to send the Email Notification by adding a routeNotificationForEmail method.

component accessors="true" {
    property name="email";
    public string function routeNotificationForEmail() {
        return getEmail();


Last updated