dmt-software/mail-service 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dmt-software/mail-service

最新稳定版本:1.1.0

Composer 安装命令:

composer require dmt-software/mail-service

包简介

Mail sender service

README 文档

README

Installation

composer require dmt-software/mail-service

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

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: '<p>html content</p>',
            text: 'text content',
            to: new EmailAddress('user@example.com'),
            from: new EmailAddress('site@example.com') 
        )
    );
} catch (InvalidMessageException|SendMessageException) {
    // error sending email
}

Events

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: '<p>content</p>',
    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

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.

统计信息

  • 总下载量: 33
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-09

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固