@toolctrl/mail
Source-only mail provider boundary for queued transactional delivery.
This package provides the Mailjet adapter used by the worker mail runtime. Web and API code enqueue transactional mail jobs; they do not read provider credentials or call Mailjet directly.
Provider Boundary
MailProvider exposes one delivery method:
import { createMailjetProviderFromEnv } from "@toolctrl/mail";
const mail = createMailjetProviderFromEnv();
await mail.send({
to: ["user@example.com"],
subject: "Welcome",
text: "Thanks for signing up.",
});
The Mailjet adapter uses the built-in fetch API and the Send API v3.1 POST /v3.1/send endpoint with HTTP Basic Auth (base64(MAILJET_API_KEY:MAILJET_SECRET_KEY)). There is no Mailjet SDK dependency.
Environment
Required in the worker environment when Mailjet delivery is enabled:
| Variable | Purpose |
|---|---|
MAILJET_API_KEY |
Mailjet public API key (Basic-Auth username). |
MAILJET_SECRET_KEY |
Mailjet private/secret API key (Basic-Auth password). |
MAILJET_FROM_EMAIL |
Default sender email from a verified Mailjet sender domain. |
MAILJET_FROM_NAME |
Optional default sender display name. |
Runtime Boundary
- Web/API transactional send paths enqueue
toolctrl.emailjobs through@toolctrl/queue. - Worker handlers instantiate
createMailjetProviderFromEnvand deliver queued jobs. - Do not add provider credentials, SDKs, or direct Mailjet calls to route modules.