Library
Module
Module type
Parameter
Class
Class type
This module provides the email service and the email template service.
The email service provides API for sending emails. Currently SMTP and Sendgrid are supported.
First, choose a backend in service/service.ml
:
module Email = Sihl_email.Smtp
If you want to use the same backend multiple times with different configs, you can use the Make
functors. The functor argument has to have a fetch
function that takes a unit and returns the configuration for the backend wrapped in Lwt.t
. This allows reading the config from IO.
module MarketingSmtpConfig = struct
let fetch () = Lwt.return {sender="marketing@mail.io"; username=...}
end
module CustomerServiceSmtpConfig = struct
let fetch () = Lwt.return {sender="help@mail.io"; username=...}
...
end
module MarketingMail = Sihl_email.MakeSmtp (MarketingSmtpConfig)
module CustomerServiceMail = Sihl_email.MakeSmtp (CustomerServiceSmtpConfig)
Then, register the service in run/run.ml
:
let services = [ Service.Email.register () ]
Run make sihl config
to get a list of required configurations.
You can use EMAIL_BYPASS_INTERCEPT
to actually use a configured SMTP server in a development setting (without having to set SIHl_ENV to production).
The API is documented in Sihl.Contract.Email.Sig
.
The template service can be used to create and edit email templates. Email templates are rendered with parameters to emails, that can be sent with the email service
. Currently MariaDb (Sihl_cache.MariaDb
) and PostgreSql (Sihl_cache.PostgreSql
) are supported.
First, choose a backend in service/service.ml
:
module Email_template = Sihl_email.Temlate.PostgreSql
Then, register the service in run/run.ml
:
let services = [ Service.Email_template.register () ]
Run make sihl migrate
to run pending migrations.
The API is documented in Sihl.Contract.Email_template.Sig
.