Sydent uses parametrised templates to generate the content of emails it sends and webpages it shows to users. Example templates can be found in the res folder.
Sending a value for brand
to some API endpoints allows for different
email and http templates to be used. These templates should be stored
in a file structure like this:
root_template_dir/
brand1/
[ brand1 template files ]
brand2/
[ brand2 template files ]
The config option templates.root_directory
should be set to the path
of root_template_dir
and templates.default_brand
should be set to
the sub directory to use if no brand
(or an invalid brand
) is provided
by the request.
Here are the requests that can contain a value for brand
and what
template the brand value is used to select:
Invite email templates:
POST /_matrix/identity/v1/store-invite
POST /_matrix/identity/v2/store-invite
Verification email templates:
POST /_matrix/identity/v1/validate/email/requestToken
POST /_matrix/identity/v2/validate/email/requestToken
Verification SMS templates - BRAND CURRENTLY IGNORED:
POST /_matrix/identity/v1/validate/msisdn/requestToken
POST /_matrix/identity/v2/validate/msisdn/requestToken
Verification response templates:
GET /_matrix/identity/v1/validate/email/submitToken
GET /_matrix/identity/v2/validate/email/submitToken
GET /_matrix/identity/v1/validate/msisdn/submitToken
GET /_matrix/identity/v2/validate/msisdn/submitToken
.eml.j2
filesFiles ending in ".eml.j2" are Jinja templates.
Using the urlencode
Jinja filter encodes the contents for URLs suitably.
All variables are automatically made safe for HTML.
If needed the safe
filter can be used to prevent the HTML encoding, this is
useful for email headers and for including a plaintext portion of an email.
See the Jinja documentation for more instructions on how to write these templates.
.eml
template filesFiles ending in ".eml" can use python %(variable)s
string substitution.
Appending "_forurl" or "_forhtml" to any of the variable names listed below returns their values encoded suitably for URLs or HTML respectively.
For example ">" in the _forhtml
version would be replaced with ">".
Note: "&&" must be used to get a raw &
character.
Invitation emails are sent when someone is invited to a room by their email address. They should contain a link for the user to click on that takes them to a matrix client.
Invite template files should have the name invite_template.eml.j2
.
Variable | Contents |
---|---|
date |
The time and date of sending as defined in RFC 2822 (e.g. "Fri, 09 Nov 2001 01:08:47 -0000") |
ephemeral_private_key |
The ephemeral private key being used for this invite |
from |
The sending email address as configured in email.from |
messageid |
The unique ID for this email |
multipart_boundary |
Randomized multipart boundary to use in multipart emails. NOTE: has no _forurl or _forhtml variants |
subject_header_value |
The invite subject line. As configured in email.invite.subject (for a room invite) and email.invite. subject_space (for a space invite) |
to |
The destination email address |
token |
A randomly generated token |
web_client_location |
Default web client to invite user to join via |
All values that get sent to the /_matrix/identity/v2/store-invite
API
endpoint are accessible as variables in invite templates.
Invites sent from Synapse make the following available:
Variable | Contents |
---|---|
address |
The email address being invited (same as to ) |
bracketed_room_name |
The string stored in room_name with brackets around it |
bracketed_verified_sender |
The string stored in sender with brackets around it |
medium |
The string "email" |
org.matrix.msc3288.room_type |
UNSTABLE. The same as room_type |
org.matrix.web_client_location |
UNSTABLE. The same as web_client_location |
room_alias |
An alias for the room (probably more readable than room_id ) |
room_avatar_url |
The URL of the room's avatar |
room_id |
The ID of the room to which the user is invited |
room_join_rules |
The join rules of the email (e.g. "public" or "invite") |
room_name |
The m.room.name state of the room. (e.g. "Synape Admins") |
room_type |
Is set to "m.space" if the invite is to a space |
sender |
The user ID of the inviter |
sender_avatar_url |
The URL of the inviter's avatar |
sender_display_name |
The current display name of the inviter |
Version when table last updated: Synapse v1.42.0
Verification template files should have the name verification_template.eml.j2
.
Variable | Contents |
---|---|
date |
The time and date of sending as defined in RFC 2822 (e.g. "Fri, 09 Nov 2001 01:08:47 -0000") |
from |
The sending email address as configured in email.from |
ipaddress |
The IP address that the verification request came from. If the IP address is unknown then this is the string "an unknown location" |
messageid |
The unique ID for this email |
multipart_boundary |
Randomized multipart boundary to use in multipart emails. NOTE: has no _forurl or _forhtml variants |
to |
The destination email address |
token |
A randomly generated token that some clients might need |
The SMS template isn't read from a file. Instead the SMS template
should be placed as a string into the config option bodyTemplate
.
This string uses python {variable}
substitution.
Variable | Contents |
---|---|
token |
A randomly generated token for the user to enter into the client |
Migration template files should have the name migration_template.eml.j2
.
The deprecated .eml
template version is not supported.
Variable | Contents |
---|---|
date |
The time and date of sending as defined in RFC 2822 (e.g. "Fri, 09 Nov 2001 01:08:47 -0000") |
from |
The sending email address as configured in email.from |
messageid |
The unique ID for this email |
multipart_boundary |
Randomized multipart boundary to use in multipart emails. NOTE: has no _forurl or _forhtml variants |
mxid |
The user ID that has been disassociated from the destination email address |
to |
The destination email address |
Verification response templates should have the name verify_response_template.http
.
Variable | Contents |
---|---|
message |
The verification success or failure message from the server |