From e1615f93451ed976a1baeddaeeaa316a80f12519 Mon Sep 17 00:00:00 2001 From: Theis Gaedigk Date: Tue, 27 Jan 2026 21:11:01 +0100 Subject: [PATCH] added functional mailer --- FrontendV2/src/pages/ContactPage.tsx | 2 +- backendV2/routes/app/services/mailer_v2.js | 45 ++++++++++++++++++++++ backendV2/routes/app/userMgmt.route.js | 10 +++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 backendV2/routes/app/services/mailer_v2.js diff --git a/FrontendV2/src/pages/ContactPage.tsx b/FrontendV2/src/pages/ContactPage.tsx index 18f669f..24885a7 100644 --- a/FrontendV2/src/pages/ContactPage.tsx +++ b/FrontendV2/src/pages/ContactPage.tsx @@ -17,7 +17,7 @@ export const ContactPage = () => { const sendMessage = async () => { // Logic to send the message - const result = await fetch(`${API_BASE}/contact`, { + const result = await fetch(`${API_BASE}/api/users/contact`, { method: "POST", headers: { Authorization: `Bearer ${Cookies.get("token") || ""}`, diff --git a/backendV2/routes/app/services/mailer_v2.js b/backendV2/routes/app/services/mailer_v2.js new file mode 100644 index 0000000..a4c31e2 --- /dev/null +++ b/backendV2/routes/app/services/mailer_v2.js @@ -0,0 +1,45 @@ +import nodemailer from "nodemailer"; +import dotenv from "dotenv"; +dotenv.config(); + +export function sendMail(username, message) { + const transporter = nodemailer.createTransport({ + host: process.env.MAIL_HOST, + port: process.env.MAIL_PORT, + secure: true, + auth: { + user: process.env.MAIL_USER, + pass: process.env.MAIL_PASSWORD, + }, + }); + + (async () => { + const mailText = `Neue Kontaktanfrage im Ausleihsystem.\n\nBenutzername: ${username}\n\nNachricht:\n${message}`; + + const mailHtml = ` + + + + Neue Nachricht im Ausleihsystem + + +

Neue Nachricht im Ausleihsystem

+

Benutzername: ${username}

+

Nachricht:

+

${message}

+ +`; + + const info = await transporter.sendMail({ + from: '"Ausleihsystem" ', + to: process.env.MAIL_SENDEES_CONTACT, + subject: "Sie haben eine neue Nachricht!", + text: mailText, + html: mailHtml, + }); + + // debugging logs + // console.log("Message sent:", info.messageId); + })(); + // console.log("sendMailLoan called"); +} diff --git a/backendV2/routes/app/userMgmt.route.js b/backendV2/routes/app/userMgmt.route.js index 85e1f9e..0f63862 100644 --- a/backendV2/routes/app/userMgmt.route.js +++ b/backendV2/routes/app/userMgmt.route.js @@ -6,6 +6,7 @@ dotenv.config(); // database funcs import import { loginFunc, changePassword } from "./database/userMgmt.database.js"; +import { sendMail } from "./services/mailer_v2.js"; router.post("/login", async (req, res) => { const result = await loginFunc(req.body.username, req.body.password); @@ -35,4 +36,13 @@ router.post("/change-password", authenticate, async (req, res) => { } }); +router.post("/contact", authenticate, async (req, res) => { + const message = req.body.message; + const username = req.user.username; + + sendMail(username, message); + + res.status(200).json({ message: "Contact message sent successfully" }); +}); + export default router;