Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Swiftmailer Bundle Laravel Package

kunstmaan/swiftmailer-bundle

Legacy Symfony bundle that integrates the Swiftmailer mailer library. Largely obsolete now that Swiftmailer is abandoned and Symfony Mailer is the standard, so it suits only older projects still relying on Swiftmailer.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. Unchanged. This package is a Symfony bundle, not a Laravel package. v3.6.0 changes one composer constraint and adds no code: it still ships only a DependencyInjection extension, a configuration tree, and service definitions wiring a Swift_Mailer, transport, spool, and optional plugins (logger, anti-flood, redirecting) into the Symfony container. Laravel's container is PSR-11 compatible but ignores Symfony's Extension/CompilerPass conventions, Resources/config/*.yml loading, and bundles.php registration. There is still no path to composer require this into a Laravel application and have it do anything; any use means hand-porting YAML service definitions into a Laravel service provider and rewriting the package's only contribution.

The underlying mismatch is untouched: since Laravel 9 the framework's mail layer is symfony/mailer, not Swiftmailer. Allowing Symfony 6 packages does not change that — it widens a composer requirement around a library Laravel never used as its integration point.

Integration feasibility. Still effectively zero for Laravel, but the surrounding signals need one revision.

  • Upstream is still EOL. Swiftmailer was abandoned in November 2021 in favour of Symfony Mailer; symfony/swiftmailer-bundle was deprecated and removed. v3.6.0 does not address this and cannot.
  • The "dead fork" characterization needs softening to "minimum-viable fork." The previous assessment recorded the repo as archived with a last release of 2022-11-20. The existence of v3.6.0 means either the archive was lifted or the fork is being published from an active branch. That matters operationally — it means someone is reachable — but the substance is a single PR by a single contributor (@acrobat) bumping a version constraint.
  • Constraint widening is not maintenance. No CVE intake, no transport changes, no PHP 8.2+/8.3+ compatibility work, no test or CI evidence in the release notes. "Allow symfony 6 packages" is a composer-satisfying change, not a functional or security one.
  • Net effect on risk is mildly negative, not positive. By making the package installable alongside Symfony 6 components, this release extends the window in which it can survive in dependency graphs. A package that fails to install gets removed; a package that installs quietly gets kept. This release makes the dependency less likely to be noticed without making it more likely to be safe.

Read score: 0.015 versus opportunity: 8.81 exactly as before — opportunity here is a migration-demand indicator, not an adoption signal. v3.6.0 does not move either number in a way that changes the recommendation.

Technical risk. Unchanged in kind, with one addition.

(a) No CVE intake for the Swiftmailer stack; (b) TLS/STARTTLS and SMTP AUTH paths that no one will revisit as providers tighten requirements; (c) PHP deprecation drift causing silent failures in transport construction; (d) abandoned-OSS supply-chain exposure for near-zero functional benefit.

New in v3.6.0: (e) untested compatibility claims. A widened constraint asserts that this bundle works with Symfony 6, but the release notes show no test matrix, no CI, and no accompanying code change. Swiftmailer-era service definitions and container conventions were not validated against Symfony 6 in this release. The failure mode is not "won't install" but "installs and then fails at container compile or first send" — which is strictly harder to diagnose than a clean composer conflict.

Key questions.

  1. Has the repository been unarchived, and who is @acrobat relative to the org? Is there a stated maintenance commitment, or is this a one-off unblock?
  2. Did any CI or test run accompany the constraint widening, or is Symfony 6 support asserted rather than demonstrated?
  3. What concretely drove this release — which downstream project needed Symfony 6 alongside the fork? That project is the real scope of the migration.
  4. Is anything in the current dependency graph actually pulling this in transitively, or is it a stale composer.lock entry that v3.6.0 just made easier to keep?
  5. Who inside the org owns it, and is there an internal CVE/deliverability contact now that a maintainer is demonstrably active?
  6. Does any application code touch Swiftmailer APIs directly (Swift_Message, Swift_Mailer, plugins), or is usage confined to container config?
  7. What is the mail volume and provider set (SES, Postmark, SMTP relay)? That still determines migration urgency.

Integration Approach

Stack fit. None for Laravel. Recommendation is unchanged: do not integrate; treat as a removal candidate. Target state remains symfony/mailer via Laravel's native Mail facade and a first-party transport (SES/Postmark/Mailgun/SMTP), which is already the supported path on Laravel 9+.

Migration path.

  1. Inventory. composer why kunstmaan/swiftmailer-bundle and composer why swiftmailer/swiftmailer; grep for Swift_ symbols, swiftmailer.* config keys, and bundle registration in config/bundles.php.
  2. Re-run inventory after v3.6.0. The constraint widening may have allowed a transitive dependency to resolve where it previously failed, or let a held-back package upgrade. Diff the lockfile before and after; a new appearance here is a regression, not progress.
  3. Classify each hit as (a) config-only, (b) direct API usage, or (c) plugin dependency (spool, logger, anti-flood, redirecting). Plugins remain where effort concentrates — spool and redirecting have no drop-in equivalent and need explicit design (queue driver / Mail::alwaysTo() respectively).
  4. Rewrite the transport and mailer service definitions as a Laravel mail config block; map Swiftmailer message construction to Mailable classes.
  5. Verify against a staging SMTP sink before cutover; assert headers, attachments, and encoding parity.

Compatibility. Still API-gated, not version-gated. v3.6.0 changes the composer story for Symfony 6 and nothing about the code story for Swiftmailer→Symfony Mailer. Swift_Message → Symfony\Component\Mime\Email, setBody/addPart semantics still differ (notably multipart handling), and plugin behaviour must still be reproduced by hand. v3.6.0 is not a step toward compatibility with Laravel; it is a step toward this fork being installable in more places it should not be used.

Sequencing. Freeze any work that deepens the dependency. Order: inventory → block new usage via a CI rule or composer conflict → migrate highest-volume/lowest-complexity senders first → retire the package from the lockfile → delete the fork from internal Packagist if it is only there for you.

Two adjustments given v3.6.0:

  • Do not accept the constraint bump as a migration deferral. It will be tempting to read "Symfony 6 support landed" as "the fork is alive, deprioritize." It is a one-line unblock. If anything, treat a fresh release as the moment to get a written deprecation date while a maintainer is responsive — that window was assumed closed and is now open.
  • Re-baseline the migration tickets. If any prior ticket was blocked on "cannot upgrade because this bundle pins Symfony 5," that blocker is now gone and the ticket should be re-scoped and re-prioritized rather than closed as resolved.

Operational Impact

Maintenance. Still effectively zero upstream maintenance, but no longer provably zero. There is a named contributor who has shipped a release. The distinction matters: you now have a contact path and an implicit expectation of responsiveness that did not exist when the repo appeared archived. Do not let that expectation substitute for a support agreement. Archival had one advantage — it was unambiguous. A low-activity fork invites the assumption that someone else is watching the mail path.

Support. Still no vendor, no community, no advisory pipeline. Incidents are debugged from source. Budget one engineer to own the mail path during migration; after migration, support returns to the framework and the ESP. The new release slightly improves the odds of getting a question answered and does not change the odds of getting a security fix.

Scaling. Unchanged. Mail sending is not the constraint — the spool is. A Swiftmailer memory or file spool is process-local and does not survive horizontal scaling, deploy restarts, or container recycling. In a Laravel context this should be a queue-backed send, which also provides retries and backpressure. Flag any spool usage as a correctness issue, not a performance one.

Failure modes. (1) Silent send failure after a PHP upgrade as transport construction breaks on a deprecation. (2) Auth/TLS breakage when a provider drops legacy SMTP ciphers — surfaces as intermittent 5xx or dropped connections. (3) Spool files orphaned on ephemeral filesystems, losing queued mail on deploy. (4) Deliverability drift with no maintainer patching encoding/header bugs. (5) New: container-compile or runtime failure on Symfony 6, where v3.6.0 asserts compatibility that no visible testing supports. This one is worse than a composer conflict because it fails after deploy rather than at install. (6) Lockfile archaeology — the package lingers for years because nobody can prove it is unused, and v3.6.0 makes that linger easier.

Ramp-up. Unchanged for the migration itself: a competent Laravel engineer can port a typical Swiftmailer integration in days, not weeks. The real ramp-up remains institutional — establishing that this bundle was a stopgap, that the fork is deprecated internally, and that Symfony Mailer/Laravel Mail is the sanctioned path. v3.6.0 adds one item to that communications work: a fresh release will be cited as evidence the fork is healthy. Get ahead of it with an explicit internal position — "constraint bump only, no security or transport maintenance, migration remains on the roadmap" — or the dependency reappears in the next project that hits the original constraint.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console