Bygg med Skickamejl

Dokumentation och kodexempel för dig som vill skicka transaktionsmejl med Skickamejl. Testa API:t i Swagger eller gå direkt till ett exempel för din stack.

API-bas

Använd http://localhost:5121 lokalt. I produktion använder du den publika adressen till Skickamejl.

Autentisering

Skicka din API-nyckel i X-Api-Key. MCP använder Authorization: Bearer. Lägg aldrig nyckeln i publik frontendkod.

Full referens

Se alla endpoints, requestmodeller och svar i Swagger.

Öppna Swagger

Node.js eller modern JavaScript

Använd inbyggd fetch i Node 18+ eller installera ett HTTP-bibliotek om projektet redan använder det.

Installera valfria paket

npm install

# Om du vill använda axios i stället för fetch:
npm install axios

För frontendappar: skicka aldrig API-token från webbläsaren. Lägg anropet i din backend, server action eller edge-funktion.

Skicka med fetch

const response = await fetch("http://localhost:5121/api/messages", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "X-Api-Key": process.env.SKICKAMEJL_API_KEY
  },
  body: JSON.stringify({
    from: "no-reply@example.se",
    to: "kund@example.com",
    subject: "Din orderbekräftelse",
    textBody: "Tack för din beställning.",
    htmlBody: "<p>Tack för din beställning.</p>",
    messageStream: "transactional"
  })
});

if (!response.ok) {
  throw new Error(await response.text());
}

Skicka kampanjer via API

Kampanj-API:t använder samma X-Api-Key som vanliga meddelanden. Skapa en kontaktlista, importera mottagare, skapa ett utkast och starta utskicket i bakgrunden. Alla kampanjmejl måste innehålla {{unsubscribeUrl}} eller en tydlig avregistreringslänk.

Skapa lista och importera mottagare

curl "https://skickamejl.se/api/contact-lists" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: <server-api-token>" \
  -d '{
    "name": "Nyhetsbrev augusti",
    "messageStream": "broadcast"
  }'

curl "https://skickamejl.se/api/contact-lists/<contactListId>/import" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: <server-api-token>" \
  -d '{
    "source": "crm-export",
    "recipients": "Ada Lovelace <ada@example.com>\ngrace@example.com"
  }'

Skapa, förbered och starta

curl "https://skickamejl.se/api/campaigns" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-Api-Key: <server-api-token>" \
  -d '{
    "contactListId": "<contactListId>",
    "name": "Lanseringsutskick",
    "fromAddress": "hej@example.se",
    "subject": "Ny funktion i produkten",
    "htmlBody": "<p>Hej {{name}}!</p><p><a href=\"{{unsubscribeUrl}}\">Avregistrera</a></p>",
    "textBody": "Hej {{name}}!\n\nAvregistrera: {{unsubscribeUrl}}"
  }'

curl "https://skickamejl.se/api/campaigns/<campaignId>/prepare" \
  -X POST -H "X-Api-Key: <server-api-token>"

curl "https://skickamejl.se/api/campaigns/<campaignId>/send" \
  -X POST -H "X-Api-Key: <server-api-token>"

Koppla Skickamejl till Home Assistant

Integrationen kan skicka mejl från automationer, visa leveransstatus i dashboarden och trigga Home Assistant från riktiga mejlhändelser, till exempel när en mall skickas eller ett transaktionsmejl studsar.

Installera via HACS

  1. Lägg till https://github.com/MRCCollective/home-assistant-skickamejl som custom repository i HACS.
  2. Välj kategori Integration och installera Skickamejl.
  3. Starta om Home Assistant och lägg till integrationen under Settings -> Devices & services.
  4. Ange serverns API-token, avsändaradress och standardmottagare. Server-ID och servernamn hämtas automatiskt.
  5. Kopiera webhook-URL:en från sensor.skickamejl_webhook_url.
  6. Öppna serverinställningarna i Skickamejl, välj rätt meddelandeström under Home Assistant och skapa en webhook.

Välj eventet Skickat/köat om Home Assistant ska triggas så fort Skickamejl tar emot ett mejl. Payloaden innehåller bland annat event, eventType, templateId, messageId, deliveryId och recipient.

Har du flera servrar lägger du till integrationen en gång per server-API-token. Varje server får egna entiteter, standardadresser, webhook och leveransstatus.

Källkod: home-assistant-skickamejl på GitHub

Automation på skickad mall

alias: Reagera när konto-mejl skickas
triggers:
  - trigger: event
    event_type: skickamejl_email_event
conditions:
  - condition: template
    value_template: "{{ trigger.event.data.template_id == 'account-created' }}"
actions:
  - action: persistent_notification.create
    data:
      title: "Skickamejl"
      message: "Ett konto-mejl skickades till {{ trigger.event.data.recipient }}."

Automation på studs

alias: Varna när ett Skickamejl studsar
triggers:
  - trigger: event
    event_type: skickamejl_email_event
conditions:
  - condition: template
    value_template: "{{ trigger.event.data.event == 'email.bounced' }}"
actions:
  - action: notify.mobile_app_phone
    data:
      message: "Skickamejl kunde inte leverera till {{ trigger.event.data.recipient }}."

Exempel på webhook-payload

Fältet templateId kommer från mallens alias när mejlet skickas med en sparad mall.

{
  "event": "email.sent",
  "eventType": "Queued",
  "templateId": "account-created",
  "messageId": "msg_f3ab6f4acff845f6af560a5dd9a53d73",
  "deliveryId": "delivery_123",
  "recipient": "kund@example.se",
  "deliveryStatus": "Queued"
}

Skicka mejl från en automation

Välj servern med namn i Home Assistants visuella action-editor. config_entry_id skapas automatiskt av editorn.

action: skickamejl.send_email
data:
  config_entry_id: "<Home Assistant config entry-ID>"
  to: "familj@example.com"
  subject: "Larm från huset"
  text_body: "Rörelse upptäcktes i hallen."

to och from kan utelämnas för att använda serverns konfigurerade standardadresser. Både text- och HTML-innehåll stöds.

Serveridentitet för integrationer

En giltig server-API-token kan hämta sitt stabila server-ID och aktuella servernamn. Home Assistant använder detta automatiskt vid konfiguration.

curl "https://skickamejl.se/api/server" \
  -H "X-Api-Key: <server-api-token>"

{
  "serverId": "3115521f-0b99-42e7-ace5-c80b78a193d5",
  "serverName": "Produktion"
}

Dashboardkort

Lovelace-kortet visar det automatiskt hämtade servernamnet, backendstatus, senaste leveransstatus, leverans-ID, meddelande-ID och leveranshistorik. Det kan också visa ett valfritt formulär för testmejl.

# Dashboard resource
/skickamejl_static/skickamejl-card.js?v=0.5.0

# Manual card
type: custom:skickamejl-card
show_test_form: true

Testformuläret innehåller mottagare, ämne och textmeddelande. Lämna mottagaren tom för att använda standardmottagaren. Kortet skickar alltid via samma server som den valda backend-entiteten.

Utforska våra SDK-paket

Välj paket för din stack när du vill slippa bygga egna HTTP-anrop. SDK:erna använder serverns API-token i X-Api-Key och stöder både vanliga meddelanden och sparade mejlmallar.

Installera .NET-paketet

dotnet add package Skickamejl.Sdk

NuGet-paket: Skickamejl.Sdk

Källkod: skickamejl-sdk-dotnet på GitHub

Lägg nyckeln i user-secrets, miljövariabler eller din hemlighetshanterare, inte i källkod.

dotnet user-secrets set "Skickamejl:ApiKey" "<server-api-token>"
dotnet user-secrets set "Skickamejl:BaseUrl" "https://skickamejl.se/"

Skicka meddelande och mall

using Skickamejl.Sdk;

builder.Services.AddHttpClient("Skickamejl", (services, client) =>
{
    var configuration = services.GetRequiredService<IConfiguration>();
    client.BaseAddress = new Uri(
        configuration["Skickamejl:BaseUrl"] ?? "https://skickamejl.se/");
});

builder.Services.AddScoped(services =>
{
    var configuration = services.GetRequiredService<IConfiguration>();
    var apiKey = configuration["Skickamejl:ApiKey"]
        ?? throw new InvalidOperationException("Skickamejl:ApiKey saknas.");

    return new SkickamejlClient(
        services.GetRequiredService<IHttpClientFactory>().CreateClient("Skickamejl"),
        apiKey);
});

app.MapPost("/send-test", async (SkickamejlClient client) =>
{
    var message = await client.SendMessageAsync(new SendMessageRequest(
        From: "no-reply@example.se",
        To: "kund@example.com",
        Subject: "Test från .NET")
    {
        TextBody = "Det här är ett test.",
        HtmlBody = "<p>Det här är ett test.</p>",
        MessageStream = "transactional",
        Tag = "sdk-test"
    });

    var template = await client.SendTemplateMessageAsync(
        "orderbekraftelse",
        new SendTemplateMessageRequest(
            From: "no-reply@example.se",
            To: "kund@example.com")
        {
            Variables = new Dictionary<string, string>
            {
                ["customerName"] = "Anna",
                ["orderNumber"] = "12345"
            },
            MessageStream = "transactional",
            Tag = "order"
        });

    return Results.Accepted(value: new { message, template });
});

Installera Node-paketet

npm install @mrccollective/skickamejl-sdk

npm-paket: @mrccollective/skickamejl-sdk

Källkod: skickamejl-sdk-node på GitHub

Använd Node 18+ eller en runtime med fetch. Lägg API-token i miljövariabler eller din hemlighetshanterare.

SKICKAMEJL_API_KEY=<server-api-token>
SKICKAMEJL_BASE_URL=https://skickamejl.se/

Skicka meddelande och mall

import { SkickamejlClient } from "@mrccollective/skickamejl-sdk";

const client = new SkickamejlClient({
  baseUrl: process.env.SKICKAMEJL_BASE_URL ?? "https://skickamejl.se/",
  apiKey: process.env.SKICKAMEJL_API_KEY
});

const message = await client.sendMessage({
  from: "no-reply@example.se",
  to: "kund@example.com",
  subject: "Test från Node",
  textBody: "Det här är ett test.",
  htmlBody: "<p>Det här är ett test.</p>",
  messageStream: "transactional",
  tag: "sdk-test"
});

const template = await client.sendTemplateMessage("orderbekraftelse", {
  from: "no-reply@example.se",
  to: "kund@example.com",
  variables: {
    customerName: "Anna",
    orderNumber: "12345"
  },
  messageStream: "transactional",
  tag: "order"
});

console.log(message.messageId, template.messageId);

Använd MCP med en AI-klient

Du behöver en AI-klient med stöd för externa MCP-servrar. Anslut klienten till Skickamejl med API-nyckeln för den server som agenten ska arbeta med.

1

Hämta serverns API-nyckel

Öppna servern i Skickamejl och kopiera en API-nyckel. Nyckeln bestämmer vilken server agenten får använda.

2

Välj din AI-klient

Följ rätt flik nedan. Konfigurationsformatet skiljer sig mellan olika MCP-klienter.

3

Starta om och kontrollera anslutningen

Starta om klienten och kontrollera att verktygen från Skickamejl visas innan du ber agenten skicka något.

1. Spara nyckeln

Lägg nyckeln i miljövariabeln SKICKAMEJL_API_TOKEN. Spara den inte i projektets källkod.

$env:SKICKAMEJL_API_TOKEN = "<server-api-token>"

Kommandot ovan gäller den aktuella PowerShell-sessionen. Använd operativsystemets eller organisationens hemlighetshantering för en beständig installation.

2. Lägg till servern i Codex

Lägg konfigurationen i ~/.codex/config.toml eller i projektets .codex/config.toml.

[mcp_servers.skickamejl]
url = "https://skickamejl.se/mcp"
bearer_token_env_var = "SKICKAMEJL_API_TOKEN"
default_tools_approval_mode = "writes"

Starta om Codex och använd /mcp för att kontrollera att servern är ansluten. Inställningen writes gör att skrivande verktyg kräver godkännande.

Kontrollera klientens stöd

Den här fliken gäller bara klienter som använder formatet mcp.json. Placering av filen och stöd för miljövariabler varierar mellan klienter.

Typ
Streamable HTTP
Endpoint
https://skickamejl.se/mcp
Autentisering
Authorization: Bearer

Exempel för mcp.json

{
  "mcpServers": {
    "skickamejl": {
      "type": "http",
      "url": "https://skickamejl.se/mcp",
      "headers": {
        "Authorization": "Bearer <server-api-token>"
      }
    }
  }
}

Ersätt platshållaren lokalt och lägg aldrig filen med en riktig API-nyckel i Git. Använd klientens stöd för miljövariabler eller säker lagring när det finns.

3. Be agenten använda Skickamejl

När anslutningen är klar kan användaren beskriva uppgiften med vanlig text:

Använd Skickamejls MCP-server för att skicka ett transaktionellt testmejl.
Mottagare: <mottagare@example.com>
Ämne: MCP-test
Text: Det här skickades via MCP.

Granska mottagare och innehåll när klienten ber om godkännande. Vilka bekräftelser som visas styrs av AI-klienten.

Nästa steg

Gå vidare till den tekniska referensen, SDK-paketen eller agentanpassade integrationsregler.

1

Swagger/OpenAPI

Se alla endpoints, parametrar och svar från den körande appen.

Öppna Swagger
4

MCP-server

Anslut agenter till Skickamejls MCP-endpoint med samma server API-token.

https://skickamejl.se/mcp
5

Agentguide

En kompakt integrationssida för AI-agenter och kodassistenter.

Öppna agentguiden