terehinis/mandrill-bundle
A Laravel bundle that integrates the Mandrill transactional email API, letting you configure API credentials and send template or dynamic emails through a simple, framework-friendly interface.
Verdict: not leverageable for a Laravel product as-is; valuable only as a reference artifact. This is a Symfony bundle (terehinis/mandrill-bundle), which is architecturally incompatible with Laravel's service-provider/package-discovery model. Its zero adoption signals (0 stars, 0 dependents, no visible release cadence) mean a TPM has no evidence base to plan around — no downstream consumers to validate behavior, no maintainer to escalate to, no compatibility guarantees.
Architecture fit. A Symfony bundle expects a Bundle class registered in AppKernel/bundles.php, a DI Extension building a mandrill: config tree, and services wired into Symfony's container — historically a Swiftmailer transport. Laravel expects Illuminate\Support\ServiceProvider with register()/boot(), mergeConfigFrom(), package discovery, and a Transport bound into Laravel's mail manager. There is no clean mapping; any "integration" is a port, not an install. The TPM should model this as a build task, not an adoption task.
Integration feasibility. Low against the stated Laravel target; moderate as a reference implementation. Reasonable paths:
/messages/send and /messages/send-template payload shape, then re-implement a thin Laravel transport against the official SDK or HTTP client.Technical risk.
LICENSE file before any code reuse.Key questions for the TPM to resolve before committing roadmap.
mandrill/mandrill, or call the API directly? Determines whether we inherit a second abandoned dependency./messages/send, /messages/send-template, subaccounts, webhooks?X-Mandrill-Signature (HMAC-SHA1)?Stack fit.
| Target | Fit | TPM read |
|---|---|---|
| Laravel 10–12 | No | Wrong framework paradigm; full port required |
| Symfony 6/7 | No | Swiftmailer removed; unmaintained constraints |
| Symfony 4.4 | Unlikely | Needs verification; pre-Mailer design assumed |
| Symfony 2.3–3.4 | Possible | Only if the app is itself frozen on that line |
| Framework-agnostic PHP | No | It is a bundle, not a library |
Recommended path — extract the pattern, do not install the package.
composer.json, the DI Extension, and the transport service. Confirm license and dependency tree.Illuminate\Mail\Transport registered via a service provider, with a queued job wrapper. Use the official mandrill/mandrill SDK or a PSR-18 HTTP client — roughly 150–250 lines. Keep provider-specific code confined to a single adapter./users/ping for credential validation; test API key; async=false for deterministic assertions; stubbed HTTP client in CI so unit tests never depend on the network.X-MC-* headers for tracking and subaccount routing.Compatibility checklist. PHP 8.1+ with strict types; Composer 2 with resolved constraints (no --ignore-platform-reqs); PSR-18 client injection; secrets from env/vault, never committed YAML; PHPUnit/Pest coverage for error-code mapping.
Sequencing.
Maintenance. Upstream is effectively dormant: no maintainer response path, no PHP minor-version tracking, no dependency bumps. If any code is forked, we own it outright — budget roughly 10–15% of one engineer per quarter for API drift, PHP/SDK upgrades, and credential rotation. Name the fork explicitly (internal namespace, internal repo) so it is never mistaken for the upstream package.
Support. No issue triage, no release notes, no security advisories. Add to the SBOM and dependency-review policy with a documented risk acceptance if any part is retained. First-line support for delivery failures will land on the platform team, not upstream — plan an on-call runbook accordingly.
Scaling. The bundle is a synchronous HTTP client. Mandrill imposes per-account quotas and reputation-based throttling and provides no queue; throughput is bounded by our own concurrency and backoff. Anything beyond low-volume transactional mail must route through a queue (Laravel jobs) with rate limiting — otherwise request latency and provider throttling couple directly to user-facing response times. Subaccount segmentation should be planned up front, not retrofitted.
Failure modes to plan for.
Mitigations to build into the re-implementation: hard timeouts (≤5s), bounded exponential backoff, circuit breaker with a fallback provider, webhook HMAC verification, structured error mapping, and a dead-letter queue for failed sends.
Ramp-up. Documentation is likely a mid-2010s README with little onboarding value beyond endpoint names. Realistically, ramp-up cost is the re-implementation itself: one engineer, one to two weeks to first production send, with the Mandrill API reference being a more reliable guide than the package. Do not plan onboarding or training around this repository — plan it around the re-implementation and the Mandrill API docs. The TPM-level decision this package surfaces is not "adopt or not," but "what is our transactional-email transport strategy, and how do we keep provider choice a configuration concern rather than an architecture lock-in?"
How can I help you explore Laravel packages today?