daagmbh / mailer
此邮件库简化了PHP应用程序中多语言邮件的定义和发送。
v0.6
2018-06-06 19:45 UTC
Requires
- php: >=7.0
- swiftmailer/swiftmailer: ^6.0
- symfony/event-dispatcher: ^2.7|^3.0|^4.0
- symfony/translation: ^4.1
- twig/twig: ^2.4
Requires (Dev)
- phpunit/phpunit: ~6.0
Suggests
- swiftmailer/swiftmailer: ^5.4|^6.0
- symfony/translation: ^2.7|^3.0|^4.0
- twig/twig: ^1.0|^2.0
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)。请参阅许可证文件以获取更多信息。