Email template service

maurerkrisztian

Krisztián Maurer

Posted on July 20, 2022

Email template service

If we are developing a more serious app, we will probably use some kind of email notification or newsletter, or even just a password change email. In this article, I will present my email / pdf template service.

Code: https://github.com/MaurerKrisztian/template-api-tm

Demo: https://template-api-tm-production.up.railway.app/template

The goal was:

  • by entering the template-name and the data of the placeholders, I get back the filled-in html page

Thinking about this a step further, since I use it for emails 90% of the time, I have therefore built in the email send feature.

Example body:

{
   "mailOptions": {
      "to": "test@gmail.com", 
      "subject": "test email"
   }, 
   "template": {
      "name": "test_template", 
      "data": {
         "title": "test title", 
         "description": "This is a test description", 
         "color": "#DEB887"
      }
   }
}
Enter fullscreen mode Exit fullscreen mode

The following must be specified for each request: mailOption, template.name template.data

  • Error management: The data part is easy to mess up, so every template has a validator.

  • The other problem was that if we have several templates, we can't keep in mind what kind of data it expects, and digging through the code is quite time-consuming. That's why I added an endpoint where you can view the most important information: available templates, example data, etc.

https://template-api-tm-production.up.railway.app/template

  • You can access a playground for testing templates with different data with the press of a button it will rerender the template.

  • Emails can only work with inline css, however writing the entire template with inline css is not very nice and not maintainable, so the css specified in the style tag in the templates is automatically converted to inline when sent out.

  • Finally, I also included pdf generation, you can specify what you want: html or pdf when requesting.

This is what your generation process looks like:

  • data validation
  • fills in the template with the data field
  • converting to pdf (if necessary)
  • template inline css transformation
  • email sending

I's not perfect but mine. 🙂 Also my first article. 🥳

💖 💪 🙅 🚩
maurerkrisztian
Krisztián Maurer

Posted on July 20, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Email template service
typescript Email template service

July 20, 2022