Replies: 5 comments 3 replies
|
Great discussion @RibasSu — worker-mailer is impressive work, building a real SMTP client on Cloudflare TCP Sockets is genuinely non-trivial. I'm planning to build the Resend provider plugin alongside this, so flagging it to avoid duplication. Since Resend is HTTP-based rather than SMTP it won't overlap with your approach at all — just Happy to coordinate on shared conventions so the SMTP and Resend plugins feel consistent to users. |
|
Thanks for looking at this! To answer your questions:
|
|
Thanks, this is super helpful and lines up well with what I had in mind. I’ve started with the SMTP provider plugin and wired it against the existing One implementation note from this first pass: SMTP on Cloudflare ends up needing some provider-specific configuration/validation around transport security (for example, STARTTLS vs implicit TLS), but so far the core email pipeline itself feels like a good fit, and I haven’t run into any hook-level blockers. Thanks again. This gave me a clear path forward. |
|
Data point for this thread: we needed a production email provider on Cloudflare Workers and ended up writing an AWS SES one. It has been running on three client sites since 2026-09-06 (magic link, invites, form notifications). Full source and the wiring are in #2933 — single file, One finding that belongs in this thread: hooks run outside the request context, so the env has to come from |
|
Another data point for the ecosystem picture here: there's already a published SMTP plugin on npm — None of this to detract from the SMTP work in #406 or the SES provider in #2933 — really the opposite. Between that PR, this package, and the SES one, there are now a few solid transactional/SMTP efforts in flight, and it might help everyone to cross-link them from this thread so people evaluating options can find them in one place (and so contributors can coordinate rather than each rebuild the transport). The "email provider base" idea and a future featured-plugins list would both help here. Also +1 on the env finding from #2933: hooks run outside the request context, so the transport reads secrets from |
Uh oh!
There was an error while loading. Please reload this page.
Hello EmDash team!
I'm currently exploring the email architecture with the goal of building email provider plugins (SMTP via Worker Mailer, Resend, Postmark, SES, and others)
The current email pipeline looks solid:
beforeSend→deliver(exclusive hook) →afterSendemail:providecapability for registering transportsemail:sendfor consumption andemail:interceptfor middlewaresemdash-console-email) already workingsource: "system") properly isolated for securityThis shows the core is already well-prepared to support multiple email providers through plugins
Before moving forward with implementation and publishing, I'd like to align with the maintainers' vision:
API Stability: Do you plan any significant (breaking) changes to the email hooks (
email:deliver,email:provide) or capabilities in the short/medium term?Recommended Direction: Is having separate plugins for each email provider the right approach according to the project's direction?
Admin UX: What is the preferred pattern for a provider's settings page in the admin?
adminEntry(React component)Reusable Base Plugin: Would it make sense to create a reusable "email provider base" to reduce code duplication across providers (configuration, validation, error handling, etc.)?
Official vs Community Plugins: What’s the long-term policy for “official/recommended” providers? Is there interest in maintaining a curated list?
My initial suggestions:
If this direction sounds good to you, I can prepare a more concrete proposal. I’d probably start with a generic SMTP provider, as it covers most use cases
Thanks in advance for the great work
Looking forward to your feedback!
All reactions