Scaleway
Send through Scaleway Transactional Email with region-scoped endpoints and header-based reply-to.
The Scaleway adapter calls the Scaleway Transactional Email API over fetch — no extra dependency. Sends are region-scoped: the adapter targets /regions/{region}/emails and defaults to fr-par.
@opencoredev/email-sdk/scalewayConfigure
Create an IAM secret key in the Scaleway console, note your project ID, and verify the sending domain in Transactional Email.
import { createEmailClient } from "@opencoredev/email-sdk";
import { scaleway } from "@opencoredev/email-sdk/scaleway";
export const email = createEmailClient({
adapters: [
scaleway({
secretKey: process.env.SCALEWAY_SECRET_KEY!,
projectId: process.env.SCALEWAY_PROJECT_ID!,
}),
],
});Prop
Type
Send
Scaleway maps cc, bcc, replyTo, headers, and attachments.
const result = await email.send({
from: "Acme <billing@acme.com>",
to: "user@example.com",
replyTo: "support@acme.com",
subject: "Your May invoice",
html: "<p>Invoice INV-2041 is attached.</p>",
attachments: [
{ filename: "invoice.txt", content: "Invoice INV-2041 — 49.00 EUR", contentType: "text/plain" },
],
});
console.log(result.id); // Scaleway email id (`id` or `email_id` in the response)replyTo travels as a Reply-To entry in Scaleway's additional_headers. Setting both replyTo and a manual Reply-To header throws an EmailValidationError before any request — pick one.
No tags or metadata
Scaleway has no tag or metadata concept, so either field throws an EmailValidationError before
any request is made. Pick a tag-capable adapter if you need them.
Verify from the CLI
SCALEWAY_SECRET_KEY="..." SCALEWAY_PROJECT_ID="..." npx email-sdk doctor --adapter scalewaySCALEWAY_SECRET_KEY="..." SCALEWAY_PROJECT_ID="..." npx email-sdk send \
--adapter scaleway \
--region fr-par \
--from "Acme <hello@acme.com>" \
--to user@example.com \
--subject "Scaleway smoke test" \
--text "It works" \
--dry-run--region falls back to the SCALEWAY_REGION env var, then fr-par. Drop --dry-run for one real send to prove the key, project, region, and sender domain line up.
