Services
Mail Service
E-Mails versenden über verwaltete SMTP-Accounts, gebrandete Layouts und Templates. Typische Reihenfolge: Account → Brand → Template → Send.
SMTP Account anlegen
/api/mail/create-smtp-account (POST)
{
"name": "Primary SMTP",
"host": "smtp.example.com",
"port": 587,
"secure": false,
"user": "smtp_user",
"pass": "SMTP_PASSWORD"
}
curl -X POST "https://dev.nuvisphere.de/api/mail/create-smtp-account" \
-H "Content-Type: application/json" \
-H "x-api-key: API_KEY"
-d '{
"name": "Primary SMTP",
"host": "smtp.example.com",
"port": 587,
"secure": false,
"user": "smtp_user",
"pass": "SMTP_PASSWORD"
}'
// server-side (Node/Next.js)
const res = await fetch("https://dev.nuvisphere.de/api/mail/create-smtp-account", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": process.env.MAILER_API_KEY!,
},
body: JSON.stringify({
"name": "Primary SMTP",
"host": "smtp.example.com",
"port": 587,
"secure": false,
"user": "smtp_user",
"pass": "SMTP_PASSWORD"
}),
});
if (!res.ok) throw new Error(`Request failed ${res.status}`);
const json = await res.json();
- API Key niemals im Browser verwenden – nur serverseitig (z. B.
process.env.MAILER_API_KEY
). - Lässt du optionale Felder weg, nutzt die API ggf. Template-/Defaultwerte.
Brand anlegen
/api/mail/create-brand (POST)
{
"name": "Acme",
"company": "Acme GmbH",
"replyTo": "acme@example.com",
"html": "<header>...</header><footer>...</footer>"
}
curl -X POST "https://dev.nuvisphere.de/api/mail/create-brand" \
-H "Content-Type: application/json" \
-H "x-api-key: API_KEY"
-d '{
"name": "Acme",
"company": "Acme GmbH",
"replyTo": "acme@example.com",
"html": "<header>...</header><footer>...</footer>"
}'
// server-side (Node/Next.js)
const res = await fetch("https://dev.nuvisphere.de/api/mail/create-brand", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": process.env.MAILER_API_KEY!,
},
body: JSON.stringify({
"name": "Acme",
"company": "Acme GmbH",
"replyTo": "acme@example.com",
"html": "<header>...</header><footer>...</footer>"
}),
});
if (!res.ok) throw new Error(`Request failed ${res.status}`);
const json = await res.json();
- API Key niemals im Browser verwenden – nur serverseitig (z. B.
process.env.MAILER_API_KEY
). - Lässt du optionale Felder weg, nutzt die API ggf. Template-/Defaultwerte.
Template anlegen
/api/mail/create-template (POST)
{
"name": "Welcome",
"subject": "Hallo {{name}}",
"html": "<h1>Willkommen {{name}}</h1>"
}
curl -X POST "https://dev.nuvisphere.de/api/mail/create-template" \
-H "Content-Type: application/json" \
-H "x-api-key: API_KEY"
-d '{
"name": "Welcome",
"subject": "Hallo {{name}}",
"html": "<h1>Willkommen {{name}}</h1>"
}'
// server-side (Node/Next.js)
const res = await fetch("https://dev.nuvisphere.de/api/mail/create-template", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": process.env.MAILER_API_KEY!,
},
body: JSON.stringify({
"name": "Welcome",
"subject": "Hallo {{name}}",
"html": "<h1>Willkommen {{name}}</h1>"
}),
});
if (!res.ok) throw new Error(`Request failed ${res.status}`);
const json = await res.json();
- API Key niemals im Browser verwenden – nur serverseitig (z. B.
process.env.MAILER_API_KEY
). - Lässt du optionale Felder weg, nutzt die API ggf. Template-/Defaultwerte.
E-Mail senden
/api/mail/send (POST)
{
"brandId": "BRAND_ID",
"smtpAccountId": "SMTP_ID",
"templateId": "TEMPLATE_ID",
"to": [
{
"email": "you@example.com",
"name": "You"
}
],
"variables": {
"name": "You"
}
}
curl -X POST "https://dev.nuvisphere.de/api/mail/send" \
-H "Content-Type: application/json" \
-H "x-api-key: API_KEY"
-d '{
"brandId": "BRAND_ID",
"smtpAccountId": "SMTP_ID",
"templateId": "TEMPLATE_ID",
"to": [
{
"email": "you@example.com",
"name": "You"
}
],
"variables": {
"name": "You"
}
}'
// server-side (Node/Next.js)
const res = await fetch("https://dev.nuvisphere.de/api/mail/send", {
method: "POST",
headers: {
"content-type": "application/json",
"x-api-key": process.env.MAILER_API_KEY!,
},
body: JSON.stringify({
"brandId": "BRAND_ID",
"smtpAccountId": "SMTP_ID",
"templateId": "TEMPLATE_ID",
"to": [
{
"email": "you@example.com",
"name": "You"
}
],
"variables": {
"name": "You"
}
}),
});
if (!res.ok) throw new Error(`Request failed ${res.status}`);
const json = await res.json();
- API Key niemals im Browser verwenden – nur serverseitig (z. B.
process.env.MAILER_API_KEY
). - Lässt du optionale Felder weg, nutzt die API ggf. Template-/Defaultwerte.