Junkerne Mailer API Dokumentation

Guide til integration på hjemmesider og systemer.

Version v1.1.0

1. Base URL

https://mailer.junkerne.dk

Endpoint til mailafsendelse: POST /api/send

2. Autentificering

Alle kald til /api/send skal have en API nøgle i header:

X-API-Key: mk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

API nøglen oprettes i adminpanel eller brugerpanel.

3. Request format

POST /api/send
Content-Type: application/json
X-API-Key: mk_...

{
  "to": "kunde@eksempel.dk",
  "subject": "Emne",
  "body": "Beskedtekst"
}

Felter

to (påkrævet): modtager email

subject (valgfri): emne, default bruges hvis tom

body (valgfri): beskedtekst

Afsendernavn styres centralt og sættes altid til Fra hjemmesiden.

from_name, from_email, sender_name og from fra request ignoreres.

Afsender-email styres centralt via serverens DEFAULT_FROM_EMAIL / UPSTREAM_FROM_EMAIL.

4. Responses

200 OK
{"ok":true,"message":"Mail sendt"}
401 Unauthorized
{"ok":false,"error":"Unauthorized"}
400 Bad Request
{"ok":false,"error":"Missing field: to"}
429 Too Many Requests
    {"ok":false,"error":"Rate limit exceeded"}

5. cURL eksempel

curl -X POST "https://mailer.junkerne.dk/api/send" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: mk_INDSAET_DIN_NOEGLE" \
  -d '{"to":"mail@domæne.dk","subject":"Test","body":"Hej fra API"}'

6. JavaScript (Node/Backend)

const res = await fetch("https://mailer.junkerne.dk/api/send", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-API-Key": process.env.MAILER_API_KEY
  },
  body: JSON.stringify({
    to: "mail@domæne.dk",
    subject: "Velkommen",
    body: "Tak for din tilmelding"
  })
});

const data = await res.json();
console.log(data);

Vigtigt: Kør dette på server/backend, ikke direkte i browser med synlig API nøgle.

7. PHP eksempel (hjemmeside backend)

<?php
$payload = json_encode([
  'to' => 'mail@domæne.dk',
  'subject' => 'Ordrebekræftelse',
  'body' => 'Tak for din ordre'
]);

$ch = curl_init('https://mailer.junkerne.dk/api/send');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'X-API-Key: ' . getenv('MAILER_API_KEY')
  ],
  CURLOPT_POSTFIELDS => $payload,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $httpCode . "\n";
echo $response;

8. WordPress eksempel (wp_remote_post)

$response = wp_remote_post('https://mailer.junkerne.dk/api/send', [
  'headers' => [
    'Content-Type' => 'application/json',
    'X-API-Key' => getenv('MAILER_API_KEY'),
  ],
  'body' => wp_json_encode([
    'to' => 'mail@domæne.dk',
    'subject' => 'Kontaktformular',
    'body' => 'Ny besked fra kontaktformularen',
  ]),
  'timeout' => 20,
]);

$code = wp_remote_retrieve_response_code($response);
$body = wp_remote_retrieve_body($response);

9. Sikkerhedsanbefalinger

1. Del aldrig API nøgler i frontend JavaScript.

2. Gem nøgler i miljøvariabler på backend/server.

3. Brug én nøgle pr. domæne/integration.

4. Rotér nøgle straks ved mistanke om læk.

5. Brug adminpanel til at deaktivere kompromitterede nøgler.

10. Support / Fejlsøgning

Hvis du får 401, er nøglen forkert eller deaktiveret.

Hvis du får 400, mangler payload-felter (typisk to).

Hvis du får 500, kontakt admin og oplys tidspunkt + request-id hvis tilgængeligt.