SendHeron
Choose SendHeron attachment policy and its corresponding replay guarantees.
Import sendheronEmailLayer from @corven/email-sdk/sendheron to provide the common Email service for this account.
Configure the account
import { Layer } from "effect";
import type { Redacted } from "effect";
import { sendheronEmailLayer } from "@corven/email-sdk/sendheron";
import { emailHttpLayer } from "./sending.js";
export const configuredSendheronAccount = (apiKey: Redacted.Redacted) =>
sendheronEmailLayer({
apiKey,
attachments: "Disabled",
submissionMode: "TransactionalOnly",
tracking: "AuthorizeProviderTracking",
}).pipe(Layer.provide(emailHttpLayer));
The example reuses the explicit HTTP Layer. Acquire credentials in trusted host code, then provide this account Layer to your sending program.
Message behavior
- Authorize transactional provider tracking, and choose attachments Disabled when you need the native replay profile.
- Intent is constrained to HTML, a named sender, one plain to recipient and one plain reply-to address; CC and BCC are unsupported.
- Scheduled messages cannot include attachment bytes. Enabled attachments require explicit supported MIME types.
- An acknowledged suppression is terminal; do not work around it by choosing another provider.
Idempotency
With attachments Disabled, native replay has a 24-hour retention window and keys up to 255 characters. With attachments enabled or unspecified, keys are only forwarded; unknown outcomes are not automatically replayable.
Read field support before switching accounts, and receipts and retries before adding recovery behavior. Configuration and local validation do not authenticate the account or prove delivery.