Directus Mailer

Directus Mailer 💬

An endpoint for sending emails with the Directus Nodemailer service.

Installation

  • Download or fork the repository
  • Install the requirements
    npm install
  • Build the extension
    npm run build
  • Create a folder in your directus endpoints folder named Mailer or an alternate route name.
  • Move the index.js build file to your new folder directus/extensions/endpoints/Mailer/index.js
  • Configure your email client in your .env file @email config.
  • Start your Directus instance npx directus start

Authentication

Requests made by unauthenticated users will be rejected. Requests must be made with a cookie or bearer token unless guest sending is active.

Sending Notifications

An example POST request made to https://directusAppDomain/Mailer{or custom path}/ In this example we are sending a test message to two recipients.

{
  "subject": "How cool is Directus?",
  "to": ["email@gmail.com", "email@hotmail.com"],
  "template": {
    "name": "default-template",
  }
}

Liquid Templating 💧

You can build custom email templates with Liquid.js and add them to your extensions/templates folder to reference them as templates in your POST request. @email templating

If you're unfamiliar with Liquid, data can be referenced in a template with this interpolation{{title}} @data variables

{
  "from": "hello@ryntab.com",
  "to": "*********@gmail.com",
  "subject": "This email was made with Handlebars",
	"template" : "alert",
	"data" : {
		"title": "Im a title!",
		"subtitle": "Im a subtitle!",
		"body": "Im the body!"
	}
}

Attachments 📦

To add attachments in your email notification, include an array of attachment objects. @attachments

{
  "subject": "How cool is Directus?",
  "to": "email@gmail.com",
  "template": {
    "name": "default-template",
    "attachments": [
        {
            "name": "image.png",
            "path": "./public/images/image.png"
        },
         {
            "name": "image_2.png",
            "path": "./public/images/image_2.png"
        }
    ]
  }
}

Directus File Attachments

You can also include Directus files as attachments with an array of reference IDs. If the current user has permissions to view the file, then it will be attached to the email notification.

{
  "subject": "How cool is Directus?",
  "to": "email@gmail.com",
  "template": {
    "name": "default-template",
    "files":  [
	    "c17d967b-b257-414d-ab92-41ae6d0784ed",
		"b507c26f-1333-4a8a-b8df-9731be74542e"
	]
  }
}

You can include both attachments and Directus files in your email notification.

{
  "subject": "How cool is Directus?",
  "to": "email@gmail.com",
  "template": {
    "name": "default-template",
    "files":  [
	"c17d967b-b257-414d-ab92-41ae6d0784ed",
	"b507c26f-1333-4a8a-b8df-9731be74542e"
     ],
    "attachments": [
       {
        "filename": "text1.txt",
        "content": "hello world!"
       }
    ]
  }
}

Environment Variables

EMAIL_ALLOW_GUEST_SEND=false

Guest sending is intended for more convenient debugging with API clients, you should always set this to false when not debugging. 🚨