Schnellstart
Erste E-Mail per API senden
Verifizieren Sie eine Domain, erstellen Sie einen API-Schlüssel und senden Sie Ihre erste E-Mail mit cURL oder einem offiziellen SDK für Node.js, Python, PHP, Ruby, Go, Java, .NET oder Rust.
Dieser Schnellstart führt Sie in etwa fünf Minuten von einem neuen Konto zu einer zugestellten E-Mail, zuzüglich der Zeit, die Ihr DNS-Anbieter zum Veröffentlichen der Einträge braucht. Sie verifizieren eine Domain, erstellen einen API-Schlüssel, senden eine E-Mail und finden sie in der Weboberfläche.
Voraussetzungen
- Ein Emailit-Konto. Registrieren Sie sich unter dash.emailit.com.
- Eine Domain, für die Sie DNS-Einträge anlegen können, etwa
acme.com. Sie können auch eine Subdomain verwenden, etwamail.acme.com.
Domain hinzufügen und verifizieren
Emailit sendet nur von Domains, die Sie verifiziert haben, damit die Mailserver der Empfänger prüfen können, dass die E-Mail wirklich von Ihnen stammt.
-
Domain hinzufügen. Öffnen Sie Email APIDomains, wählen Sie Add domain, geben Sie
acme.comein und wählen Sie Create. -
DNS-Einträge anlegen. Die Domainseite listet die Einträge auf, die Sie bei Ihrem DNS-Anbieter anlegen müssen. Kopieren Sie die exakten Werte von dieser Seite. Die drei erforderlichen Einträge sehen so aus:
Typ Name Wert TXT emailit._domainkey.acme.comv=DKIM1; t=s; h=sha256; p=…(Ihr Schlüssel)TXT emailit.acme.comv=spf1 include:_spf.emailit.com ~allMX emailit.acme.com, Priorität 10feedback-smtp.ffdc-1.emailit.comWenn Ihr DNS bei Cloudflare liegt, können Sie die Einträge stattdessen mit einem Klick anlegen. Siehe Cloudflare.
-
DNS prüfen. Wählen Sie Check DNS. Wenn SPF, DKIM und Return Path OK anzeigen, ist die Domain Verified. Die meisten Anbieter veröffentlichen Einträge innerhalb von Minuten, es kann aber bis zu 48 Stunden dauern.
Bei Pay as you go zeigt eine Domain, die vor weniger als 30 Tagen registriert wurde, Pending verification, bis das Emailit-Team sie geprüft hat. Details und optionale Einträge für DMARC, Tracking und eingehende E-Mails finden Sie unter Versanddomain hinzufügen.
API-Schlüssel erstellen
-
API Keys öffnen. Öffnen Sie Email APIAPI Keys und wählen Sie Add API key.
-
Schlüssel benennen und Scope wählen. Geben Sie einen Namen wie
Quickstartein. Sending Only kann nur E-Mails senden. Full Access kann zusätzlich den Rest der API aufrufen. Für diesen Schnellstart funktioniert beides. -
Schlüssel kopieren. Wählen Sie Create und kopieren Sie den Schlüssel. Er beginnt mit
secret_und wird nur einmal angezeigt. -
Speichern Sie ihn in einer Umgebungsvariablen, damit er nicht in Ihrem Code landet:
export EMAILIT_API_KEY="secret_••••"
E-Mail senden
Installieren Sie das SDK für Ihre Sprache oder verwenden Sie cURL:
# cURL is preinstalled on macOS, Linux and Windows 10 or later
curl --versionnpm install @emailit/nodepip install emailitcomposer require emailit/emailit-phpcomposer require emailit/emailit-laravel
# Then add EMAILIT_API_KEY=secret_•••• to your .env filegem install emailitgo get github.com/emailit/emailit-go/v2<dependency>
<groupId>com.emailit</groupId>
<artifactId>emailit-java</artifactId>
<version><!-- latest version from Maven Central --></version>
</dependency>dotnet add package Emailitcargo add emailit
cargo add tokio --features fullSenden Sie dann eine E-Mail. Verwenden Sie eine Absenderadresse auf der verifizierten Domain und senden Sie an die E-Mail-Adresse, mit der Sie sich registriert haben:
curl https://api.emailit.com/v2/emails \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "Acme <hello@acme.com>",
"to": "ada@example.com",
"subject": "Hello from Emailit",
"html": "<p>This is my first email sent with Emailit.</p>"
}'import { Emailit } from '@emailit/node';
const emailit = new Emailit(process.env.EMAILIT_API_KEY);
const email = await emailit.emails.send({
from: 'Acme <hello@acme.com>',
to: 'ada@example.com',
subject: 'Hello from Emailit',
html: '<p>This is my first email sent with Emailit.</p>',
});
console.log(email.id, email.status);import os
from emailit import EmailitClient
client = EmailitClient(os.environ["EMAILIT_API_KEY"])
email = client.emails.send({
"from": "Acme <hello@acme.com>",
"to": "ada@example.com",
"subject": "Hello from Emailit",
"html": "<p>This is my first email sent with Emailit.</p>",
})
print(email.id, email.status)<?php
require 'vendor/autoload.php';
$emailit = Emailit::client(getenv('EMAILIT_API_KEY'));
$email = $emailit->emails()->send([
'from' => 'Acme <hello@acme.com>',
'to' => 'ada@example.com',
'subject' => 'Hello from Emailit',
'html' => '<p>This is my first email sent with Emailit.</p>',
]);
echo $email->id . ' ' . $email->status;use Emailit\Laravel\Facades\Emailit;
$email = Emailit::emails()->send([
'from' => 'Acme <hello@acme.com>',
'to' => 'ada@example.com',
'subject' => 'Hello from Emailit',
'html' => '<p>This is my first email sent with Emailit.</p>',
]);
logger()->info('Sent email', ['id' => $email->id]);require "emailit"
client = Emailit::EmailitClient.new(ENV["EMAILIT_API_KEY"])
email = client.emails.send(
from: "Acme <hello@acme.com>",
to: "ada@example.com",
subject: "Hello from Emailit",
html: "<p>This is my first email sent with Emailit.</p>"
)
puts email.id, email.statuspackage main
import (
"fmt"
"os"
"github.com/emailit/emailit-go/v2"
)
func main() {
client := emailit.NewClient(os.Getenv("EMAILIT_API_KEY"))
email, err := client.Emails.Send(&emailit.SendEmailRequest{
From: "Acme <hello@acme.com>",
To: []string{"ada@example.com"},
Subject: "Hello from Emailit",
Html: "<p>This is my first email sent with Emailit.</p>",
})
if err != nil {
panic(err)
}
fmt.Println(email.Id)
}import com.emailit.*;
import com.emailit.params.*;
import java.util.List;
public class SendEmail {
public static void main(String[] args) throws Exception {
EmailitClient emailit = new EmailitClient(System.getenv("EMAILIT_API_KEY"));
EmailitObject email = emailit.emails().send(
EmailSendParams.builder()
.setFrom("Acme <hello@acme.com>")
.setTo(List.of("ada@example.com"))
.setSubject("Hello from Emailit")
.setHtml("<p>This is my first email sent with Emailit.</p>")
.build()
);
System.out.println(email.getString("id"));
}
}using Emailit;
using Emailit.Options;
using Emailit.Resources;
var emailit = new EmailitClient(Environment.GetEnvironmentVariable("EMAILIT_API_KEY"));
Email email = emailit.Emails.Send(new EmailSendOptions
{
From = "Acme <hello@acme.com>",
To = new[] { "ada@example.com" },
Subject = "Hello from Emailit",
Html = "<p>This is my first email sent with Emailit.</p>",
});
Console.WriteLine($"{email.Id} {email.Status}");use emailit::types::CreateEmailBaseOptions;
use emailit::{Emailit, Result};
#[tokio::main]
async fn main() -> Result<()> {
let api_key = std::env::var("EMAILIT_API_KEY").expect("EMAILIT_API_KEY is not set");
let emailit = Emailit::new(&api_key);
let email = CreateEmailBaseOptions::new(
"Acme <hello@acme.com>",
["ada@example.com"],
"Hello from Emailit",
)
.with_html("<p>This is my first email sent with Emailit.</p>");
let result = emailit.emails.send(email).await?;
println!("{:?}", result.id);
Ok(())
}Antwort lesen
Eine erfolgreiche Anfrage gibt 200 mit der neuen E-Mail zurück:
{
"object": "email",
"id": "em_2pX7cN4kQ9vLm3RtB8yWd1Zs",
"token": "2pX7cN4m8FqT1vKz6RbL3HwYd",
"message_id": "<2pX7cN4m8FqT1vKz6RbL3HwYd@acme.com>",
"from": "Acme <hello@acme.com>",
"to": ["ada@example.com"],
"subject": "Hello from Emailit",
"status": "accepted",
"scheduled_at": null,
"created_at": "2026-10-01T09:30:12.418Z",
"tracking": { "loads": false, "clicks": false }
}| Feld | Bedeutung |
|---|---|
id |
Die ID der E-Mail. Damit rufen Sie die E-Mail ab, stornieren sie oder senden sie erneut und ordnen Webhook-Events zu. |
status |
accepted bedeutet, dass Emailit die E-Mail zur Zustellung in die Warteschlange gestellt hat. Wenn Sie scheduled_at gesetzt haben, ist er scheduled. |
message_id |
Der Header Message-ID der E-Mail. |
ids |
Nur bei mehreren Empfängern vorhanden. Ordnet jeder Empfängeradresse ihre eigene E-Mail-ID zu. |
tracking |
Ob Öffnungen (loads) und Klicks für diese E-Mail erfasst werden. Tracking erfordert eine verifizierte Tracking-Subdomain. |
accepted heißt noch nicht, dass die E-Mail zugestellt ist. Die Zustellung erfolgt im Hintergrund, und der Status ändert sich mit ihrem Fortschritt.
In der Weboberfläche prüfen
Öffnen Sie Email APIEmails. Ihre E-Mail steht oben im Tab Outgoing. Innerhalb weniger Sekunden wechselt ihr Status meist von accepted zu delivered. Öffnen Sie sie, um die Header, den Inhalt, jeden Zustellversuch mit der Antwort des Empfangsservers und die Ergebnisse der Spam-Prüfung zu sehen.
Die Anfrage selbst erscheint unter Email APILogs, mit dem Statuscode sowie dem Anfrage- und Antwort-Body.
Fehlerbehebung
| Antwort | Ursache | Lösung |
|---|---|---|
401 API key required oder Invalid API key |
Der Header Authorization fehlt oder der Schlüssel ist falsch |
Senden Sie Authorization: Bearer secret_… mit einem aktuellen Schlüssel |
403 unverified_workspace_recipient |
Der Workspace ist im Sandbox-Modus | Senden Sie an die Konto-E-Mail-Adresse eines Workspace-Mitglieds oder beantragen Sie Produktionszugang |
422 From/Sender domain is not valid or not verified |
Die Absenderdomain ist in diesem Workspace nicht verifiziert | Verifizieren Sie die Domain oder verwenden Sie eine Adresse auf einer verifizierten Domain |
403 Domain not authorized |
Der reine Sende-Schlüssel ist auf eine andere Domain beschränkt | Verwenden Sie einen Schlüssel für diese Domain oder einen unbeschränkten Schlüssel |
402 Insufficient credits |
Der Workspace hat nicht genug Credits | Credits hinzufügen |
429 Rate limit exceeded |
Zu viele E-Mails in dieser Sekunde oder heute | Warten Sie die Zeit in retry-after ab. Siehe Rate Limits. |