46 lines
1.9 KiB
JavaScript
46 lines
1.9 KiB
JavaScript
import nodemailer from "nodemailer";
|
|
|
|
const transport = nodemailer.createTransport({
|
|
host: process.env.SMTP_HOST ?? "mailpit",
|
|
port: Number(process.env.SMTP_PORT ?? 1025),
|
|
secure: process.env.SMTP_SECURE === "true",
|
|
...(process.env.SMTP_USER
|
|
? { auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS } }
|
|
: {}),
|
|
});
|
|
|
|
const FROM = process.env.SMTP_FROM ?? "Star Wars Wild Space <noreply@wildspace.local>";
|
|
const APP_URL = (process.env.APP_URL ?? "http://localhost:8080").replace(/\/$/, "");
|
|
|
|
export async function sendConfirmationEmail(to, token) {
|
|
const url = `${APP_URL}/?email_confirm=${encodeURIComponent(token)}`;
|
|
await transport.sendMail({
|
|
from: FROM,
|
|
to,
|
|
subject: "Confirmez votre adresse email — Star Wars Wild Space",
|
|
text: `Cliquez sur le lien ci-dessous pour confirmer votre compte :\n\n${url}\n\nCe lien expire dans 24 heures.`,
|
|
html: `
|
|
<h2>Star Wars — Wild Space</h2>
|
|
<p>Cliquez sur le lien ci-dessous pour confirmer votre adresse email :</p>
|
|
<p><a href="${url}" style="font-size:16px">${url}</a></p>
|
|
<p><small>Ce lien expire dans 24 heures.</small></p>
|
|
`,
|
|
});
|
|
}
|
|
|
|
export async function sendPasswordResetEmail(to, token) {
|
|
const url = `${APP_URL}/?reset=${encodeURIComponent(token)}`;
|
|
await transport.sendMail({
|
|
from: FROM,
|
|
to,
|
|
subject: "Réinitialisation de mot de passe — Star Wars Wild Space",
|
|
text: `Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe :\n\n${url}\n\nCe lien expire dans 1 heure. Si vous n'avez pas fait cette demande, ignorez cet email.`,
|
|
html: `
|
|
<h2>Star Wars — Wild Space</h2>
|
|
<p>Cliquez sur le lien ci-dessous pour réinitialiser votre mot de passe :</p>
|
|
<p><a href="${url}" style="font-size:16px">${url}</a></p>
|
|
<p><small>Ce lien expire dans 1 heure. Si vous n'avez pas fait cette demande, vous pouvez ignorer cet email.</small></p>
|
|
`,
|
|
});
|
|
}
|