1
0
mirror of https://gitlab.com/bramw/baserow.git synced 2024-11-24 08:26:46 +00:00
bramw_baserow/docs/patterns/emails.md
2024-04-25 08:34:01 +00:00

55 lines
2.4 KiB
Markdown

# Emails
## Creating a new email template
Baserow uses [MJML](https://mjml.io/) framework to define email templates. These templates have to be compiled into their HTML versions so that they can be used by Django.
Start by creating a new template (`*.mjml.eta`) in the core email template folder (`backend/src/baserow/core/templates/baserow`) or in the template folder of the contrib module that the template belongs to.
The template should be in MJML format and will typically inherit a base layout (`base.layout.eta`) common to all emails. Besides formatting itself, the template should be a normal Django template, using the Django template language, and should utilize standard Django syntax for translations.
The template will look something like this:
```html
<% layout("../base.layout.eta") %>
<mj-section>
<mj-column>
<mj-text mj-class="title">{% trans "Title to be translated" %}</mj-text>
<mj-text mj-class="text">
{% blocktrans trimmed %}
Text to be translated
{% endblocktrans %}
</mj-text>
<mj-button mj-class="button" href="{{ some_link_passed_as_context_variable }}">
{% trans "Link text to be translated" %}
</mj-button>
</mj-column>
</mj-section>
```
If you are using the Baserow docker compose development environment started by `./dev.sh` script, the new template should be automatically compiled into its HTML version, resulting in a new file. If that's not the case, follow the instructions in `backend/email_compiler` to compile the template manually.
### Do
- Make sure the received email has both HTML and plain text version.
- Make sure the whole content of the email template is translatable.
- Make sure the links lead correctly to Baserow instance without hard-coding the URL.
### Don't
- Don't edit HTML email templates directly, edit the MJML templates instead and recompile them.
## Sending emails
Subclass `BaseEmailMessage` to define an email message with the correct template and all the needed parameters.
### Do
- Send emails in background Celery tasks.
- Use `with translation.override(user.profile.language)` to send emails in the user's selected language.
## Testing
The Baserow dev environment (using the `./dev.sh` script) automatically starts an instance of [MailHog](https://github.com/mailhog/MailHog) at [http://localhost:8025/](http://localhost:8025/). You can verify that the emails are formatted and sent correctly there.