PHPackages                             formatd/mailer-queueadaptor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. formatd/mailer-queueadaptor

ActiveNeos-package

formatd/mailer-queueadaptor
===========================

Mail Queue for Neos.SwiftMailer

11.1k2[1 PRs](https://github.com/Format-D/FormatD.Mailer.QueueAdaptor/pulls)PHP

Since Aug 11Pushed 3y agoCompare

[ Source](https://github.com/Format-D/FormatD.Mailer.QueueAdaptor)[ Packagist](https://packagist.org/packages/formatd/mailer-queueadaptor)[ RSS](/packages/formatd-mailer-queueadaptor/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

FormatD.Mailer.QueueAdaptor
===========================

[](#formatdmailerqueueadaptor)

This package changes the mail delivery in Neos (`neos/swiftmailer`) to asynchronously send mails via a queue. The idea is to make it work as a plug-and-play replacement for every mail generated in the system.

Disclaimer
----------

[](#disclaimer)

This Package is just a proof of concept and needs a patch for `neos/swiftmailer` to work (contained in this package and applied automatically by `cweagans/composer-patches`). The patch is neccessary because the Message object of `neos/swiftmailer` cannot be serialized. The patch changes the implementation from inheritance to a decorator pattern.

Setup
-----

[](#setup)

### Choose a queue backend

[](#choose-a-queue-backend)

This Packages uses flowpack/jobqueue-common () to set up a mail queue. You can choose a backend of your taste, install it via composer and then override the `className` in the configuration:

```
Flowpack:
  JobQueue:
    Common:
      queues:
        'fdmailer-mail-queue':
          className: 'Flowpack\JobQueue\Doctrine\Queue\DoctrineQueue'

```

To use the default db backend just install `flowpack/jobqueue-doctrine`.

### Setup queue

[](#setup-queue)

The queue must be set up with this command. See documentation here for details: .

```
./flow queue:setup fdmailer-mail-queue

```

### Start worker for queue

[](#start-worker-for-queue)

After these steps mails are put into the queue instead of beeing sent directly during the request. To send the queued mails run a worker cronjob on CLI:

```
# work on max 25 jobs in max 50 sec
./flow job:work fdmailer-mail-queue --limit 25 --exitAfter 50

```

Now test if it is working:

```
./flow email:send --body "Hello World" from@example.com to@example.com "My Test Mail"

```

###  Health Score

19

—

LowBetter than 10% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity25

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/bb327c5b80466d2d0236e188879eb7bfefe44330e56fe7cc27b5417a5b9689ea?d=identicon)[formatd](/maintainers/formatd)

---

Top Contributors

[![bweinzierl](https://avatars.githubusercontent.com/u/30659291?v=4)](https://github.com/bweinzierl "bweinzierl (8 commits)")

### Embed Badge

![Health badge](/badges/formatd-mailer-queueadaptor/health.svg)

```
[![Health](https://phpackages.com/badges/formatd-mailer-queueadaptor/health.svg)](https://phpackages.com/packages/formatd-mailer-queueadaptor)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
