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.
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
- Lägg till
https://github.com/MRCCollective/home-assistant-skickamejlsom custom repository i HACS. - Välj kategori Integration och installera Skickamejl.
- Starta om Home Assistant och lägg till integrationen under Settings -> Devices & services.
- Ange serverns API-token, avsändaradress och standardmottagare. Server-ID och servernamn hämtas automatiskt.
- Kopiera webhook-URL:en från
sensor.skickamejl_webhook_url. - Ö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.
Hämta serverns API-nyckel
Öppna servern i Skickamejl och kopiera en API-nyckel. Nyckeln bestämmer vilken server agenten får använda.
Välj din AI-klient
Följ rätt flik nedan. Konfigurationsformatet skiljer sig mellan olika MCP-klienter.
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.
.NET SDK
Installera den officiella klienten för C# och .NET-projekt.
Öppna skickamejl-sdk-dotnet på GitHubNode SDK
Installera den officiella klienten för Node.js och moderna JavaScript-projekt.
Öppna skickamejl-sdk-node på GitHubMCP-server
Anslut agenter till Skickamejls MCP-endpoint med samma server API-token.
https://skickamejl.se/mcp