POST /api/contact posted { to, subject, body, replyTo } to ${mailApiUrl}/send,
which the mail service (libreshop/mail src/app.py) does not have, so every
message failed with a 500. It now posts { to_email, subject, message } to
POST /v1/send/message, still to paperwork@muellerprints.de, with the same
subject and text as before. The service sets no Reply-To; the sender's
address stays in the text. A line break in the subject is replaced by a
space, so it cannot start another mail header.
mailApiUrl was read from runtimeConfig without being declared there, so
NUXT_MAIL_API_URL could not set it and the fallback http://mail:2222 was
always used. It is declared now, with that default; mp's compose.yml sets
no NUXT_MAIL_API_URL.
contactMail and mailSendUrl (server/utils/contactMail.ts) are pure and tested.
Refs libretech/mp#71
19 lines
631 B
TypeScript
19 lines
631 B
TypeScript
import { contactMail, mailSendUrl } from "~/server/utils/contactMail";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const result = contactMail(await readBody(event));
|
|
if (result.ok === false) {
|
|
throw createError({ statusCode: 400, message: result.message });
|
|
}
|
|
|
|
try {
|
|
const config = useRuntimeConfig();
|
|
await $fetch(mailSendUrl(config.mailApiUrl || "http://mail:2222"), { method: "POST", body: result.mail });
|
|
|
|
return { success: true };
|
|
} catch (error) {
|
|
console.error("Failed to send contact email:", error);
|
|
throw createError({ statusCode: 500, message: "E-Mail konnte nicht gesendet werden" });
|
|
}
|
|
});
|