PHPackages                             dmt-software/mail-service - 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. [Mail &amp; Notifications](/categories/mail)
4. /
5. dmt-software/mail-service

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

dmt-software/mail-service
=========================

Mail sender service

1.1.0(3mo ago)0361MITPHPPHP &gt;=8.4CI passing

Since Apr 1Pushed 3mo agoCompare

[ Source](https://github.com/dmt-software/mail-service)[ Packagist](https://packagist.org/packages/dmt-software/mail-service)[ RSS](/packages/dmt-software-mail-service/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (7)Dependencies (7)Versions (8)Used By (1)

Mail Service
============

[](#mail-service)

Installation
------------

[](#installation)

```
composer require dmt-software/mail-service
```

### Choose a mailer package

[](#choose-a-mailer-package)

Currently, the only adapter available uses `symfony/mailer`.
This should be added to the composer dependencies.

```
composer require symfony/mailer:^8.0
```

Usage
-----

[](#usage)

```
use DMT\MailService\Exceptions\InvalidMessageException;
use DMT\MailService\Exceptions\SendMessageException;
use DMT\MailService\MailService;
use DMT\MailService\Model\EmailAddress;
use DMT\MailService\Model\EmailMessage;

try {
    /** @var MailService $service */
    $service->send(
        new EmailMessage(
            subject: 'subject',
            html: 'html content',
            text: 'text content',
            to: new EmailAddress('user@example.com'),
            from: new EmailAddress('site@example.com')
        )
    );
} catch (InvalidMessageException|SendMessageException) {
    // error sending email
}
```

Events
------

[](#events)

### Auto create text part

[](#auto-create-text-part)

To create a text part of the email, the `HtmlToTextEventSubscriber` can be used. For any HTML mailing without a text part, this event subscriber will generate a simple text variant for that message.

```
use DMT\MailService\Adapters\MailAdapterInterface;
use DMT\MailService\Event\MailServiceEventDispatcher;
use DMT\MailService\Event\Subscribers\HtmlToTextEventSubscriber;
use DMT\MailService\MailService;
use DMT\MailService\Model\EmailMessage;

/** @var MailAdapterInterface $adapter */
$service = new MailService(
    $adapter,
    new MailServiceEventDispatcher(
        new HtmlToTextEventSubscriber()
    )
);

/** @var EmailMessage $message */
$message = new EmailMessage(
    subject: 'subject',
    html: 'content',
    text: null,
    to: new EmailAddress('user@example.com'),
    from: new EmailAddress('site@example.com')
);

$service->send($message); // message will contain a text part: "content"
```

### Using mail templates

[](#using-mail-templates)

The message content can also be rendered from a twig template. This can be done by using the `RenderMailTemplateEventSubscriber` subscriber.

```
use DMT\MailService\Adapters\MailAdapterInterface;
use DMT\MailService\Event\MailServiceEventDispatcher;
use DMT\MailService\Event\Subscribers\RenderMailTemplateEventSubscriber;
use DMT\MailService\MailService;
use DMT\MailService\Model\TemplatedMessage;
use Twig\Environment;

/** @var MailAdapterInterface $adapter */
/** @var Environment $twig */
$service = new MailService(
    $adapter,
    new MailServiceEventDispatcher(
        new RenderMailTemplateEventSubscriber($twig)
    )
);

$message = new TemplatedMessage(
    subject: 'subject',
    template: 'mail/template.twig',
    to: new EmailAddress('user@example.com'),
    from: new EmailAddress('site@example.com'),
    context: ['name' => 'Jane Doe']
);

$service->send($message); // template will be rendered
```

If a template contains a block called **html\_part**, that block will be rendered for the HTML part of the message. A block called **text\_part**, will be rendered as text part of the message. When none of the blocks above are specified the whole template is rendered as HTML part.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance81

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Every ~2 days

Total

7

Last Release

102d ago

Major Versions

0.2.3 → 1.0.02026-04-09

### Community

Maintainers

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

---

Top Contributors

[![proggeler](https://avatars.githubusercontent.com/u/18281353?v=4)](https://github.com/proggeler "proggeler (15 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/dmt-software-mail-service/health.svg)

```
[![Health](https://phpackages.com/badges/dmt-software-mail-service/health.svg)](https://phpackages.com/packages/dmt-software-mail-service)
```

###  Alternatives

[symfony/mailer

Helps sending emails

1.6k409.1M1.5k](/packages/symfony-mailer)[symfony/http-kernel

Provides a structured process for converting a Request into a Response

8.1k869.4M9.0k](/packages/symfony-http-kernel)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M400](/packages/easycorp-easyadmin-bundle)[symfony/security-bundle

Provides a tight integration of the Security component into the Symfony full-stack framework

2.5k185.6M2.4k](/packages/symfony-security-bundle)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)

PHPackages © 2026

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