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.