Skip to content

Send Helo mail through stechstudio/laravel-helo-email - #35

Merged
jszobody merged 4 commits into
masterfrom
feat/use-laravel-helo-email
Oct 3, 2026
Merged

jszobody merged 4 commits into
masterfrom
feat/use-laravel-helo-email

Conversation

@jszobody

@jszobody jszobody commented Oct 3, 2026

Copy link
Copy Markdown
Member

Postmaster's built-in Helo client and transport move into a standalone package, stechstudio/laravel-helo-email. Postmaster keeps webhooks, suppression sync, and the dashboard.

What changes

  • Sending. The package registers the helo mail transport. Postmaster reads the send result through HeloResult::from() to record suppressed recipients as dropped and delayed sends as deferred, as before.
  • Suppression sync. Sync and unsuppress call the package's API client. A short or malformed list still fails before any local suppression changes.
  • Config. The API key, channel, and mail type come from the package's config/helo.php (HELO_API_KEY, HELO_CHANNEL_ID, HELO_MAIL_TYPE). postmaster.providers.helo keeps signing_key and the webhook settings.
  • Setup wizard and docs say to install the package for API sending and sync. SMTP sending and webhooks don't need it.
  • Fix: Postmaster's internal X-Postmaster-* headers no longer reach the provider when persistence is off. A final MessageSending listener strips any left after Postmaster has read them, in both modes.

Breaking

POSTMASTER_HELO_API_KEY, POSTMASTER_HELO_CHANNEL_ID, and POSTMASTER_HELO_MAIL_TYPE are gone; use the HELO_* names. API sending and Helo sync now need composer require stechstudio/laravel-helo-email. Helo support hasn't shipped in a release yet, so no released app is affected.

Testing

  • 451 tests pass, phpstan clean. HeloIntegrationTest covers sending through the package end to end: correlation, partial suppressions, delayed submission, resend, and sandbox release.
  • The package's transport tests moved to the package (79 tests, CI on PHP 8.3 to 8.5 and Laravel 12 and 13).

With persistence off, nothing removed Postmaster's X-Postmaster-*
headers before sending, so every provider received them. With it on,
only the headers the stash listener knows were removed. A final
listener now strips all of them after Postmaster has read them.
Postmaster's own Helo client and transport move into a standalone
package. Postmaster keeps webhooks, sync, and the dashboard.

- Send through the package's helo transport and read its send result
- Sync and unsuppress through the package's API client
- Read the API key, channel, and mail type from config/helo.php
- Name the package in the Helo setup wizard and setup report
Drop the local path repository used during development.
@jszobody
jszobody merged commit 83bd1b1 into master Oct 3, 2026
1 check passed
@jszobody
jszobody deleted the feat/use-laravel-helo-email branch October 3, 2026 19:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant