Email & newsletters
Email in Astropress covers two distinct jobs, and the right tool for each is different:
- Newsletter / campaign email — bulk sends to a subscriber list, with open tracking, unsubscribe links, and campaign analytics → use Listmonk
- Transactional email — triggered one-to-one messages like password resets, order confirmations, and account notifications → use Resend or any SMTP relay
You can enable both at the same time: astropress add --email listmonk --transactional-email smtp.
Newsletter: Listmonk
Listmonk is a self-hosted newsletter and mailing list manager. It handles subscriber imports, double opt-in, HTML/plain-text templates, campaign scheduling, open/click tracking, and unsubscribe compliance. It does not handle transactional email.
| Attribute | Detail |
|---|---|
| Licence | MIT |
| Hosting | Self-hosted (Docker, ~200 MB RAM) |
| Cost | Free (server cost only) |
| SMTP | Bring your own SMTP server (Postal, Brevo SMTP, etc.) |
# Add to new projectastropress new my-site --email listmonk
# Add to existing projectastropress add --email listmonkAfter scaffolding, see SERVICES.md for Docker Compose setup and LISTMONK.md for integration steps.
When it’s the right choice: you want full control over your subscriber data, your newsletter history, and your send infrastructure. Listmonk is the privacy-respecting default and the only option that keeps all subscriber data on your server.
Limitations:
- Requires running a persistent Docker container (Listmonk + PostgreSQL)
- You are responsible for SMTP deliverability (SPF, DKIM, DMARC records)
- No built-in email-sending — you must point Listmonk at an SMTP server
Further reading: listmonk.app · listmonk.app/docs
Transactional email
Transactional email (password resets, receipts, notifications) needs reliable delivery to individuals. Newsletter tools are not designed for this — use a dedicated transactional service.
Resend
Resend is a hosted transactional email service with a simple API and first-party Node tooling.
| Attribute | Detail |
|---|---|
| Licence | Hosted service |
| Hosting | Resend cloud |
| Cost | Provider-managed pricing |
| Setup | Sign up → create API key → paste into .env |
astropress add --transactional-email resendWhen it’s the right choice: you want the simplest Astropress integration with a dedicated transactional-email API and managed deliverability.
Limitations:
- Your send data is on a third-party provider
- Provider pricing and region controls are external to Astropress
- You are still responsible for verifying your sending domain
Further reading: resend.com
SMTP
Astropress also supports a generic SMTP contract. This works with self-hosted Postal, Brevo SMTP, Amazon SES SMTP, Mailgun SMTP, Postmark SMTP, and similar relays.
| Attribute | Detail |
|---|---|
| Licence | Varies by provider |
| Hosting | Your SMTP relay |
| Cost | Varies by provider |
| Setup | Set SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, and SMTP_FROM_EMAIL |
astropress add --transactional-email smtpWhen it’s the right choice: you want one generic config shape that can target a self-hosted relay or a hosted SMTP provider without changing Astropress code.
Limitations:
- Deliverability depends on the relay you choose
- Self-hosting Postal still requires DNS work and usually a dedicated IP for good deliverability
- Hosted SMTP providers have their own limits, pricing, and compliance requirements
Examples: Postal, Brevo SMTP, Amazon SES SMTP, Mailgun SMTP, Postmark SMTP
Combining Listmonk and SMTP
A common setup for full self-hosting:
- Listmonk for newsletter campaigns → sends via your SMTP relay
- Astropress SMTP for transactional email → password resets, order confirmations
astropress add --email listmonk --transactional-email smtpPoint Listmonk’s SMTP settings at the same relay, and configure SMTP_HOST / SMTP_PORT / SMTP_USERNAME / SMTP_PASSWORD / SMTP_FROM_EMAIL in your site’s .env.