Outgoing mail

Choose an instance-wide provider under System settings → Mail delivery. New installations default to Resend; Cloudflare Email Sending is a Beta alternative. Switching preserves the other provider's configuration and never enables automatic fallback after a failure.

For the free setup, choose Resend, verify your sending domain and send a test message. For Cloudflare sending, first check Workers Paid and domain onboarding requirements. Neither path needs a VPS; costs and preparation explains the allowances and prerequisites.

Resend

  1. Add a sender domain you own, such as example.com, to Resend. Configure its DNS records and wait for verification.
  2. Create an API key permitted to send from that domain.
  3. Select Resend under FlareMail System settings → Mail delivery. Enter the key for the matching domain, save and confirm your administrator password when prompted.
  4. Compose from an address on that domain, send to your own external mailbox and confirm receipt.

Each sender domain needs valid credentials and verification. Leaving an existing secret field empty generally keeps its value rather than removing it. Keep keys out of source and documentation. Resend's test domain and recipient restrictions are not a replacement for your production domain. Domain verification · API keys

After an accepted send, FlareMail attempts to retrieve the actual Message-ID for subsequent replies. Sending access only permits sending; the current email lookup requires Full access, which also allows managing other Resend resources, not just reading emails. If you retain sending-only access or retrieval fails, the interface confirms the send and separately explains the threading limitation. Later replies may not join the original conversation. There is no need to resend. Resend permissions · Threading details

Full access does not guarantee an immediate Message-ID: Resend may return null while the message is queued. FlareMail makes up to three lookups within a five-second deadline, then retains the accepted send with a threading notice if needed. It never resends the message. Delivery webhooks do not currently backfill historical records.

Cloudflare Email Sending (Beta)

Sending to arbitrary external recipients requires Workers Paid and onboarding each sender domain in your account. Free sends to already verified destination addresses are a separate exception, rather than a general mailbox sending setup. Pricing and requirements

  1. Onboard your sender domain in Cloudflare Email Service → Email Sending and complete DNS verification.
  2. Enable the template's commented binding in your own apps/worker/wrangler.toml:
toml
[[send_email]]
name = "email"
  1. Redeploy from the repository root:
sh
npx --yes pnpm@10.34.5 run deploy
  1. Under System settings → Mail delivery, confirm the binding is ready, select Cloudflare and save. If a schema upgrade is pending, complete it under Maintenance first.
  2. Send externally and inspect the recipient's inbox, spam folder and Cloudflare sending logs.

Adding the binding alone does not select the provider. Local simulated bindings do not deliver real mail. Do not add remote = true for ordinary local testing. Platform setup

Attachments and size

Web and CLI send/reply requests allow at most 32 MiB for the complete HTTP body, including text, encoded attachments and JSON overhead. Oversized requests return 413 before full reading or parsing. This request limit does not increase attachment or provider limits.

Application sending allows up to 10 attachments including inline images, 10 MiB per file and 20 MiB in total. The Cloudflare provider also applies a conservative 5 MiB estimate for the entire encoded message, leaving less room for attachments. Providers may impose additional quotas, recipient or content limits. Cloudflare limits

Results and retries

Inspect the status and warning in Sent. Provider acceptance does not guarantee arrival in the recipient's main inbox; check spam folders or provider logs.

Correct unverified domains, invalid credentials, missing bindings, quotas or excessive size before trying again. Do not immediately resend after a timeout or unknown outcome. CLI/Agent retries of the same operation must reuse the original requestId; see CLI / Agent.