Autenticazione
Entrambi i metodi usano la stessa credenziale: una chiave API, composta da un key ID (pubblico) e un key secret. Crea le chiavi nella dashboard su app.onesend.eu.
L'autenticazione REST usa un token Bearer formato dal key ID e dal key secret uniti da due punti:
Authorization: Bearer YOUR_KEY_ID:YOUR_KEY_SECRET
Per SMTP, il key ID è il nome utente e il key secret è la password. Non ci sono credenziali SMTP separate da generare. La chiave API è la credenziale sia per REST sia per SMTP.
Verifica il tuo dominio di invio
Puoi inviare solo da un indirizzo di un dominio che hai aggiunto e verificato. È richiesto anche durante la prova, per proteggere la reputazione dell'IP condiviso. La verifica si fa una sola volta, nella dashboard.
Quando aggiungi un dominio, onesend genera una chiave DKIM e ti fornisce quattro record TXT da pubblicare presso il tuo provider DNS:
| Scopo | Host | Valore (esempio) |
|---|---|---|
| DKIM | onesend._domainkey.yourdomain.com | v=DKIM1; k=rsa; p=MIIB... |
| SPF | yourdomain.com | v=spf1 include:onesend.eu ~all |
| DMARC | _dmarc.yourdomain.com | v=DMARC1; p=none; rua=mailto:dmarc@onesend.eu |
| Proprietà | _onesend.yourdomain.com | onesend-verify=YOUR_TOKEN |
È DKIM a determinare la verifica. SPF e DMARC sono fortemente consigliati, ma il dominio viene verificato solo tramite DKIM. Il selettore DKIM è onesend. Se hai già un record SPF, aggiungi include:onesend.eu al record esistente invece di crearne un secondo, poiché un dominio può avere un solo record SPF. Le modifiche DNS impiegano da pochi minuti a poche ore per propagarsi.
Inviare con l'API REST
POST https://api.onesend.eu/v1/email/send
Authorization: Bearer YOUR_KEY_ID:YOUR_KEY_SECRET
Content-Type: application/json
Corpo della richiesta:
{
"from": "hello@yourdomain.com",
"to": ["recipient@example.com"],
"cc": ["optional@example.com"],
"bcc": ["optional@example.com"],
"reply_to": "reply@yourdomain.com",
"subject": "Hello from onesend",
"html": "<h1>It works</h1>",
"text": "It works",
"headers": { "X-Custom": "value" },
"tags": { "campaign": "welcome" }
}
I campi obbligatori sono from, to, subject e almeno uno tra html o text. L'indirizzo from deve essere su un dominio verificato. I campi cc, bcc, reply_to, text, headers e tags sono facoltativi.
In caso di successo la risposta è 202 Accepted e il messaggio viene messo in coda per la consegna:
{ "message_id": "...", "status": "queued" }
Se il destinatario è nella tua lista di soppressione, la richiesta restituisce comunque 200 (non un errore), l'invio viene saltato e non viene fatturato:
{ "message_id": "...", "status": "suppressed", "reason": "Recipient on suppression list (bounce)" }
Inviare via SMTP
Punta il tuo mailer SMTP esistente a onesend. Nessuna modifica al codice oltre a host e credenziali.
Host: smtp.onesend.eu
Port: 587
Security: STARTTLS (required)
Username: YOUR_KEY_ID
Password: YOUR_KEY_SECRET
Valgono le stesse regole di REST: l'indirizzo From deve essere su un dominio verificato e i destinatari soppressi vengono saltati e non fatturati.
Esempi di codice
curl (REST)
curl -X POST https://api.onesend.eu/v1/email/send \
-H "Authorization: Bearer $ONESEND_KEY_ID:$ONESEND_KEY_SECRET" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@yourdomain.com",
"to": ["recipient@example.com"],
"subject": "Hello from onesend",
"html": "<h1>It works</h1>",
"text": "It works"
}'
Node.js (REST, fetch)
const res = await fetch("https://api.onesend.eu/v1/email/send", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.ONESEND_KEY_ID}:${process.env.ONESEND_KEY_SECRET}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "hello@yourdomain.com",
to: ["recipient@example.com"],
subject: "Hello from onesend",
html: "<h1>It works</h1>",
}),
});
const data = await res.json();
console.log(res.status, data);
Node.js (SMTP, nodemailer)
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: "smtp.onesend.eu",
port: 587,
requireTLS: true,
auth: {
user: process.env.ONESEND_KEY_ID,
pass: process.env.ONESEND_KEY_SECRET,
},
});
await transport.sendMail({
from: "hello@yourdomain.com",
to: "recipient@example.com",
subject: "Hello from onesend",
html: "<h1>It works</h1>",
});
Python (REST, requests)
import os, requests
r = requests.post(
"https://api.onesend.eu/v1/email/send",
headers={
"Authorization": f"Bearer {os.environ['ONESEND_KEY_ID']}:{os.environ['ONESEND_KEY_SECRET']}"
},
json={
"from": "hello@yourdomain.com",
"to": ["recipient@example.com"],
"subject": "Hello from onesend",
"html": "<h1>It works</h1>",
},
)
print(r.status_code, r.json())
Python (SMTP, smtplib)
import os, smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["From"] = "hello@yourdomain.com"
msg["To"] = "recipient@example.com"
msg["Subject"] = "Hello from onesend"
msg.set_content("It works")
msg.add_alternative("<h1>It works</h1>", subtype="html")
with smtplib.SMTP("smtp.onesend.eu", 587) as s:
s.starttls()
s.login(os.environ["ONESEND_KEY_ID"], os.environ["ONESEND_KEY_SECRET"])
s.send_message(msg)
PHP (REST, curl)
$ch = curl_init("https://api.onesend.eu/v1/email/send");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$keyId}:{$keySecret}",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"from" => "hello@yourdomain.com",
"to" => ["recipient@example.com"],
"subject" => "Hello from onesend",
"html" => "<h1>It works</h1>",
]),
]);
$response = curl_exec($ch);
Qualsiasi altro linguaggio, framework o strumento invia tramite le impostazioni SMTP sopra, inclusi Go net/smtp, Ruby, Java, Laravel, Rails, Django, WordPress e n8n.
Migrare da un altro provider
La migrazione più rapida è SMTP: cambia host e credenziali e lascia tutto il resto invariato. In ogni caso, aggiungi e verifica prima il tuo dominio di invio in onesend, perché l'invio richiede un dominio verificato.
Amazon SES
Per SMTP, cambia l'host da email-smtp.REGION.amazonaws.com a smtp.onesend.eu sulla porta 587 e usa il tuo key ID e key secret di onesend al posto delle credenziali SMTP di SES. È pronto all'uso. Per REST, SES usa richieste firmate con SigV4, quindi l'API REST di onesend ha una forma diversa; passa a POST /v1/email/send oppure usa SMTP per una migrazione senza modifiche al codice. Puoi esportare la tua lista di soppressione di SES e importare il CSV nella dashboard.
SendGrid
Per SMTP, SendGrid usa smtp.sendgrid.net con il nome utente apikey. onesend usa smtp.onesend.eu, con il nome utente impostato sul tuo key ID e la password sul tuo key secret. Per REST, il /v3/mail/send di SendGrid usa una struttura JSON diversa; usa invece POST /v1/email/send di onesend.
Mailgun
Per SMTP, cambia l'host da smtp.mailgun.org a smtp.onesend.eu e sostituisci le credenziali. Per REST, Mailgun usa richieste con codifica form verso /v3/DOMAIN/messages; usa invece il JSON POST /v1/email/send di onesend.
Postmark
Per SMTP, cambia l'host da smtp.postmarkapp.com a smtp.onesend.eu e sostituisci le credenziali. Per REST, Postmark usa un header X-Postmark-Server-Token e un corpo diverso; usa invece POST /v1/email/send di onesend.
Valori di stato della consegna
Un messaggio attraversa questi stati:
queuedaccettato e in attesa dell'invio da parte del worker.sentconsegnato al server di posta ricevente.bouncedbounce definitivo (permanente). L'indirizzo viene aggiunto alla tua lista di soppressione.soft_bouncederrore temporaneo, ad esempio una casella piena. Riprovato, non soppresso.complainedil destinatario l'ha contrassegnato come spam. Aggiunto alla tua lista di soppressione.suppressedil destinatario era già nella tua lista di soppressione. Saltato, non fatturato.invalidl'indirizzo non ha superato la validazione prima dell'invio (sintassi errata o dominio inesistente).blockedbloccato da un controllo delle policy prima dell'invio.failederrore di invio interno.
Lista di soppressione
onesend mantiene una lista di soppressione per ogni account. Gli indirizzi ci finiscono automaticamente per bounce definitivi e reclami, per la validazione prima dell'invio, oppure li aggiungi tu. onesend registra sia il motivo (perché è soppresso) sia l'origine (come ci è arrivato), oltre al codice diagnostico reale. Gestisci la lista nella dashboard e puoi importarla o esportarla come CSV.
Piani e fatturazione
Per inviare servono un dominio verificato e un piano. La prova copre 100 email senza limiti di tempo. I piani a pagamento sono Starter e Growth, fatturati mensilmente tramite Mollie (un fornitore di pagamenti dell'UE), con IVA applicata correttamente per clienti UE ed extra-UE, inclusa l'inversione contabile per partite IVA aziendali UE verificate. Il consumo eccedente viene fatturato, non bloccato, e gli invii soppressi non vengono mai conteggiati. Per prezzi attuali e volumi inclusi, vedi la pagina dei prezzi.
Sovranità e conformità
- Società che gestisce il servizio: WOCOO Management and Consulting GmbH, Vienna, Austria.
- Infrastruttura: Hetzner, Falkenstein, Germania. Nessun subincaricato statunitense nel percorso di invio.
- Progettato per il GDPR: i dati dei destinatari si trovano in un caveau di identità separato dai log di invio, e ogni account imposta la propria policy di conservazione. I dati della lista di soppressione e le statistiche aggregate vengono conservati.
- Recapitabilità: SPF, DKIM con chiavi a 2048 bit per dominio e DMARC per dominio di invio. IP di invio dedicate su richiesta.
Stai realizzando un'integrazione con un assistente IA? Una copia in testo semplice di questo riferimento si trova su /llms-full.txt