daagmbh/mailer

此邮件库简化了PHP应用程序中多语言邮件的定义和发送。

v0.6 2018-06-06 19:45 UTC

This package is not auto-updated.

Last update: 2024-09-22 09:34:27 UTC


README

此库简化了PHP应用程序中多语言邮件的定义和发送。其主要目标是允许在不写太多代码的情况下轻松发送邮件。邮件通过所谓的消息以抽象方式描述,并在多个步骤中渲染。

特性

  • 文本和HTML邮件
  • 自动翻译成用户所在的地区(包括发送者的电子邮件地址和姓名)
  • 文本可以从任意资源/翻译器中获取(目前,只有一个用于Symfony翻译器的解析器)
  • 可以使用任意的模板引擎渲染模板(目前,只有一个Twig渲染器)
  • 可以通过各种传输方式发送邮件(目前,有一个通过Swift Mailer的传输方式)

使用方法

首先,您需要实例化邮件发送器(这里使用Twig作为渲染器和Symfony翻译器作为模板解析器)

$mailer = new DaaMailer(
	new SymfonyTemplateResolver($translator),
	new TwigTemplateRenderer($twig),
	$eventDispatcher
);

然后,您可以定义用于发送消息的发送者

// Here you define the login data, the sending email address and the name of the sender for a specific locae
$mailer->registerSender('support', 'de_DE', new SmtpSender('smtp.googlemail.com', 'foo@acme.com', 'password123', 'kundenservice@acme.com', 'Kundenservice'));
$mailer->registerSender('support', 'en_US', new SmtpSender('smtp.googlemail.com', 'foo@acme.com', 'password123', 'support@acme.com', 'Service'));

然后,您需要定义一个新的消息类。消息类是邮件的抽象定义,在发送前由邮件发送器渲染。

<?php

use Daa\Library\Mail\Message\MessageInterface;
use Daa\Library\Mail\RecipientContainer;

class RegistrationMessage implements MessageInterface
{

    private $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function getLocale()
    {
        return $this->user->getLocale();
    }

    public function getSenderId()
    {
        return 'support';
    }

    public function getRecipients()
    {
        return new RecipientContainer($this->user->getEmail());
    }

    public function getSubjectKey()
    {
        return 'user.registration.subject';
    }

    public function getTemplateKey()
    {
        return 'user.registration.text';
    }

    public function getParameters()
    {
        return ['user' => $this->user];
    }
}

最后,您只需将邮件文本放入您的翻译文件中(或以模板解析器期望的其他方式)。

现在,您就可以发送电子邮件了

$message = new RegistrationMessage($user);
$mailer->sendMessage($message);

就这么简单。容易吧?

高级使用

您可以将此库扩展以允许更高级的使用。例如,您可以嵌入自己的模板解析器和渲染器。

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。