Skip to content

Commit

Permalink
improve email templates
Browse files Browse the repository at this point in the history
  • Loading branch information
sdumetz committed Feb 13, 2025
1 parent 847c6ec commit 6fecf87
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 12 deletions.
12 changes: 8 additions & 4 deletions source/server/routes/admin/mailtest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Request, Response } from "express";
import sendmail from "../../utils/mails/send.js";
import { getLocals, getUser } from "../../utils/locals.js";
import { BadRequestError } from "../../utils/errors.js";
import { useTemplateProperties } from "../views/index.js";

/**
* Send a test email
Expand All @@ -14,13 +15,16 @@ export default async function handleMailtest(req :Request, res :Response){
if(!to){
throw new BadRequestError("No email address found for user "+ requester);
}
useTemplateProperties(req, res);
const mail_content = await getLocals(req).templates.render(`emails/test`, {
brand: config.brand,
hostname: config.hostname,
});
let out = await sendmail({
to,
subject: config.brand+" test email",
html: [
`\t<h1>${config.brand} test email</h1>`,
`\t<p>This is a test email sent from the admin panel of ${config.hostname}</p>`,
].join("\n")});
html: mail_content
});

res.status(200).send(out);
}
4 changes: 2 additions & 2 deletions source/server/routes/views/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ routes.use("/", (req :Request, res:Response, next)=>{
* Common properties for template rendering.
* All props required for navbar/footer rendering should be set here
*/
export function useTemplateProperties(req :Request, res:Response, next:NextFunction){
export function useTemplateProperties(req :Request, res:Response, next?:NextFunction){
const session = getSession(req);
const user = getUser(req);
const {search} = req.query;
Expand All @@ -45,7 +45,7 @@ export function useTemplateProperties(req :Request, res:Response, next:NextFunct
location: req.originalUrl,
search,
})
next();
if(next) next();
}

routes.use("/", useTemplateProperties);
Expand Down
8 changes: 3 additions & 5 deletions source/server/templates/emails/connection_fr.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@
<p>Bonjour <b>{{name}}</b>,</p>
<p>
Nous venons de recevoir une demande de lien de connexion pour un compte lié à votre adresse.<br>
Si vous n'êtes pas à l'origine de cette demande, vous pouvez ignorer cet email.
</p>
<p>
Sinon, vous pouvez vous connecter en cliquant sur le bouton ci-dessous.
Connectez-vous en cliquant sur le bouton ci-dessous:
</p>
<p align="center">
<a class="btn" href="{{url}}">Connectez-vous</a>
Expand All @@ -18,5 +15,6 @@
Une fois connecté, n'oubliez pas de réinitialiser votre mot de passe!
</p>
<p>
Pour rapporter toute erreur, vous pouvez nous contacter sur la <a href="https://github.com/Holusion/e-thesaurus">page du projet eThesaurus</a>
Si vous n'êtes pas à l'origine de cette demande, vous pouvez ignorer cet email.<br>
Pour rapporter toute erreur, veuillez contacter votre administrateur eCorpus.</a>
</p>
4 changes: 4 additions & 0 deletions source/server/templates/emails/test.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<h1>{{i18n "titles.testEmail" what=brand }}</h1>
<p>{{{i18n "leads.testEmail" hostname=hostname}}}</p>
<h2>{{i18n "titles.testEmailVerify"}}</h2>
<p>{{{i18n "leads.testEmailDKIM"}}}</p>
9 changes: 8 additions & 1 deletion source/server/templates/locales/en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ titles:
permissions: Access rights
archives: Archived Scenes
rename: Rename this scene
testEmail: "{{what}} email system test"
testEmailVerify: Additional verifications
tooltips:
showPassword: Show the password's text
permissions: >
Expand Down Expand Up @@ -135,7 +137,12 @@ leads:
rename: >
Changing a scene's name will break all existing links pointing to it.
Proceed with care!
testEmail: >
This is a test message from <a href="https://{{hostname}}/ui/">{{hostname}}</a>.
If it lands in your inbox, your email setup is probably OK.
testEmailDKIM: >
To be extra safe and prevent (most) emails being flagged as SPAM, check the DKIM signature using tools like Google's
<a href="https://postmaster.google.com">Postmaster Tools</a>.
errors:
generic: Unknown Error
"Username not provided": Username not provided
Expand Down
9 changes: 9 additions & 0 deletions source/server/templates/locales/fr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@ titles:
permissions: Droits d'accès
archives: Scènes archivées
rename: Renommer la scène
testEmail: Test du système d'email de {{what}}
testEmailVerify: Vérifications supplémentaires
tooltips:
showPassword: Montrer le texte du mot de passe
permissions: >
Expand Down Expand Up @@ -135,6 +137,13 @@ leads:
Vous ne pouvez pas changer vos propres droits d'accès à cette scène. Si nécessaire, demandez de l'aide à un administrateur
rename: >
Attention: Changer le nom d'une scène cassera tous les liens qui pointent vers elle!
testEmail: >
Ceci est un email de test envoyé par <a href="https://{{hostname}}/ui/">{{hostname}}</a>.
Si vous le recevez et qu'il n'atterit pas dans les spams, c'est que votre instance est probablement bien configurée
testEmailDKIM: >
Afin d'assurer un bon taux de succès, il peut être utile de vérifier la <a href="">signature DKIM</a> du message.<br>
Pour GMAIL, vous pouvez utiliser l'outil <a href="https://postmaster.google.com">Postmaster Tools</a>.
errors:
generic: Erreur inconnue
"Username not provided": Nom d'utilisateur non fourni
Expand Down

0 comments on commit 6fecf87

Please sign in to comment.