| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
📦 Packagist | 🐥 TYPO3 extension repository | 💾 Repository | 🐛 Issue tracker
An extension for TYPO3 CMS that extends TYPO3's mail spooling functionality with an extended queueable mail transport interface. In addition, it provides an improved version of TYPO3's FileSpooler. In order to make mails in the mail queue visible, the extension provides an (admin-only) backend module and console commands to list and flush the mail queue.
composer require cpsit/typo3-mailqueueAlternatively, you can download the extension via the TYPO3 extension repository (TER).
Note
In order to use a queueable mail transport, you need to configure it in your system settings, along with the required transport settings.
The extension builds on TYPO3's mail spooling feature. It provides an extended interface CPSIT\Typo3Mailqueue\Mail\Transport\QueueableTransport for TYPO3\CMS\Core\Mail\DelayedTransportInterface with additional methods to enqueue and dequeue mails:
public function getMailQueue(): Mail\Queue\MailQueueReturns an instance of CPSIT\Typo3Mailqueue\Mail\Queue\MailQueue that holds all currently enqueued mails as instances of CPSIT\Typo3Mailqueue\Mail\Queue\MailQueueItem.
public function enqueue(Mime\RawMessage $message, ?Mailer\Envelope $envelope = null): Mail\Queue\MailQueueItemAllows to enqueue a mail to the mail queue. This is basically identical to the send() method provided by the base Symfony\Component\Mailer\Transport\TransportInterface.
public function dequeue(Mail\Queue\MailQueueItem $item, Mailer\Transport\TransportInterface $transport): boolSends the message of a given mail queue item with the provided "real" transport, effectively dequeuing it from the mail queue. This is basically identical to the flushQueue() method provided by the base TYPO3\CMS\Core\Mail\DelayedTransportInterface with the difference that it only dequeues the given mail queue item and leaves the rest of the queue untouched.
public function delete(Mail\Queue\MailQueueItem $item): boolDeletes the message of a given mail queue item without sending it. The message is also dequeued from the mail queue.
Next to the QueueableTransport interface there exists an extended interface CPSIT\Typo3Mailqueue\Mail\Transport\RecoverableTransport. It allows to recover stuck mails with a configured recover timeout:
public function recover(int $timeout = 900): voidNote
Only administrators can see the backend module.
The backend module lists all currently enqueued mails. In addition, for supported transports it may also show transport failure details. It can be used to get a quick overview about the health state of the mail queue. It also allows to dequeue single mails from the mail queue by sending them with the configured real transport.
The extension provides a console command to flush the mail queue:
typo3 mailqueue:flushqueue [-l|--limit] [-r|--recover-timeout] [-j|--json]The number of mails to be sent can be limited with --limit (or -l). If no limit is passed, the whole mail queue is flushed.
For transports implementing the RecoverableTransport interface, the recover timeout can be configured with --recover-timeout (or -r).
When using --json (or -j), user-oriented output is written to stderr and result messages are written in JSON format to stdout.
The extension provides a console command to list enqueued mails:
typo3 mailqueue:listqueue [-s|--strict] [-w|--watch]With --strict (or -s) enabled, the command exits with a non-zero exit code in case any enqueued mail could not be delivered because of a failure.
In addition, a watch mode can be enabled with --watch (or -w) which updates the list every five seconds. The watch mode can be exited with Ctrl+C.
The extension provides two custom implementations as XClasses for TYPO3's native mail spoolers:
| TYPO3 core implementation | Custom implementation (XClass) |
|---|---|
| TYPO3\CMS\Core\Mail\FileSpool | CPSIT\Typo3Mailqueue\Mail\Transport\QueueableFileTransport |
| TYPO3\CMS\Core\Mail\MemorySpool | CPSIT\Typo3Mailqueue\Mail\Transport\QueueableMemoryTransport |
Queueable mail transports are registered the "normal" way as described in the official TYPO3 core documentation. Add the following to your system configuration (e.g. in additional.php/AdditionalConfiguration.php):
# File transport
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_spool_type'] = 'file';
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_spool_filepath'] = '/path/to/mailqueue';
# Memory transport
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_spool_type'] = 'memory';
# Use any other custom mail transport
# Note: Custom transports must implement CPSIT\Typo3Mailqueue\Mail\Transport\QueueableTransport interface!
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_spool_type'] = \Vendor\Extension\Mail\Transport\CustomQueueableTransport::class;The following extension configuration options are available:
| Configuration key | Description | Required | Default |
|---|---|---|---|
| queue.delayThreshold | Number in seconds after which a mail in the queue is considered "delayed" | – | 1800 |
| pagination.itemsPerPage | Number of mails to display on a single page in backend module | – | 20 |
Please have a look at CONTRIBUTING.md.
The extension icon ("envelope-open") as well as the icon for the backend module are modified versions of the original actions-envelope-open icon from TYPO3 core which is originally licensed under MIT License.
This project is licensed under GNU General Public License 2.0 (or later).
| Back | FazBrowse Home | New Git URL |