2amigos/mailer

该软件包的最新版本(2.0.0)没有提供许可证信息。

带有队列功能的 Symphony Mailer 库的 Mailer 适配器。

2.0.0 2024-01-20 08:22 UTC

This package is auto-updated.

Last update: 2024-09-15 15:28:13 UTC


README

tests Codacy Badge Codacy Badge Latest Stable Version Total Downloads PHP Version Require

我们经常需要在项目中实现队列邮件功能。有队列和邮件库,但似乎没有哪个能够真正满足我们的需求,而且我们总是不得不将它们的功能同步在一起。
Mailer 库就是为了填补我们在实现队列和/或邮件系统时遇到的差距而构建的。它具有以下功能

消息加密/解密,以防邮件消息包含不应公开的数据。非常适合 SAS 系统。

  • 支持不同的后端队列(目前支持 beanstalkd、pdo、redis、sqs 和 rabbitmq),这样我们就不会被框架和/或库的功能限制而被迫使用队列存储。统一系统。基本到中型项目确实需要邮件系统,但它们不需要另一种类型的队列系统。这就是为什么队列系统不是独立的,而是与该系统耦合在一起。
  • 安装
  • 安装此扩展的首选方式是通过 composer

运行以下命令之一:

或将其添加到您的 composer.json 文件的 require 部分:

使用

$ composer require 2amigos/mailer

或添加

"2amigos/mailer": "^2.0"

到您的 composer.json 文件中。

使用方法

配置

设置消息代理连接作为邮件传输器所需的全部配置应在该 .env 文件上执行。已提供 .env.example 文件,您可以将其复制并重新开始!

$ cp .evn.example .env

MESSAGE_BROKERMAIL_TRANSPORT 定义了默认消息代理和邮件传输,它们是必填项。默认情况下,它设置为使用 Redis 代理和 SMTP 传输。

您可以通过调用

$values = \Da\Mailer\Helper\ConfigReader::get(); // array

邮件消息

MailMessage 类是电子邮件内容的抽象。除了附件外,您还可以通过构造函数或直接访问器直接指定电子邮件内容。

$message = new \Da\Mailer\Model\MailMessage([
    'from' => 'sarah.connor@gmail.com', 
    'to' => 'john.connor@gmail.com',
    'subject' => 'What is up?',
    'textBody' => 'I hope to find you well...'
]);

// or
$message->bodyHtml = "I hope I'm finding doing <b>well.</b>"
// body html takes priority over body text with both were set.

您还可以使用我们的 EmailAddress 类来定义带相关名称的电子邮件

$message->cc = [
    \Da\Mailer\Mail\Dto\EmailAddress::make('Samn@email.com', 'Samantha');
    \Da\Mailer\Mail\Dto\EmailAddress::make('oliver@email.com', 'Oliver');
];

并且要添加附件,您可以使用 addAttachment(path, name) 方法

$message->addAttachment(__DIR__ . DIRECTORY_SEPARATOR . 'file-test.pdf', 'Important File.png');

此外,您还可以将文本或 HTML 正文设置为资源路径。

$message->bodyHtml = __DIR__ . DIRECTORY_SEPARATOR . 'html-template.html';

可用的公共属性

入队邮件消息

您可以通过调用方法 enqueue 轻松访问消息入队。

$message->enqueue();

消息将被入队到默认消息代理,并使用默认传输。

邮件工作

MailJob 类将抽象队列应用程序的消息行为。您可以使用 MailJobBuilder 类创建一个新的 MailJob

$mailJob = \Da\Mailer\Builder\MailJobBuilder::make([
    'message' => json_encode($message)
]);

在幕后,构建器将构建一个针对您在 .env 文件上定义的默认代理专门化的 MailJob。如果您想创建一个要发送到不同代理的邮件工作,您可以将它作为第二个参数设置,使用来自 \Da\Mailer\Enum\MessageBrokerEnum 枚举的一个值

$mailJob = \Da\Mailer\Builder\MailJobBuilder::make([
        'message' => json_encode($message)
    ],
    \Da\Mailer\Enum\MessageBrokerEnum::BROKER_SQS
);

MailJob 类有一组用于操作其内容和检查其状态的方法。以下代码涵盖了它们所有

$mailJob->getMessage(); // returns the MailJob message
$mailJob->markAsCompleted(); // void, mark the job as completed
$mailJob->isCompleted(); // returns true if the job has been complete
$mailJob->setMessage(new \Da\Mailer\Model\MailMessage()); // change the job's message 

邮件器

Mailer 类是我们用来发送电子邮件的。

$message = new \Da\Mailer\Model\MailMessage([
    'from' => 'sarah.connor@gmail.com', 
    'to' => 'john.connor@gmail.com',
    'subject' => 'What is up?',
    'textBody' => 'I hope to find you well...'
]);

$mailer = \Da\Mailer\Builder\MailerBuilder::make();
// or if you want to set a transport different from the default
$mailer = \Da\Mailer\Builder\MailerBuilder::make(\Da\Mailer\Enum\TransportType::SEND_MAIL);
$mailer->send($message); // returns \Symfony\Component\Mailer\SentMessage::class|null

队列

要创建队列,您可以使用我们的 QueueBuilder 类。它将返回一个队列对象,具有一些处理队列的方法。它们是

$queue = \Da\Mailer\Builder\QueueBuilder::make();

// if you want to use a different broker than the default
$queue = \Da\Mailer\Builder\QueueBuilder::make(\Da\Mailer\Enum\MessageBrokerEnum::BROKER_RABBITMQ);

高级用法

如果您想手动处理消息代理和SMTP,可以查看以下主题

贡献

请参阅贡献以获取详细信息。

代码质量

我们为你们添加了一些开发工具,以便你们可以用干净的代码为库做出贡献

  • PHP错误检测器:接收一个PHP源代码库,并查找该源中的一些潜在问题。
  • PHP代码扫描器:对PHP、JavaScript和CSS文件进行标记化,并检测违反定义的编码标准。
  • PHP代码修复器:分析一些PHP源代码,并尝试修复编码标准问题。

您应按此顺序使用它们。

使用PHP错误检测器

所有选项的示例

 ./vendor/bin/phpmd ./src text codesize,unusedcode,naming,design,controversial,cleancode

使用代码扫描器

 ./vendor/bin/phpcs -s --report=source --standard=PSR2 ./src

使用代码修复器

我们添加了一个PHP代码修复器来标准化我们的代码。它包括Symfony、PSR-12和一些贡献者规则。

./vendor/bin/php-cs-fixer --config-file=.php_cs fix ./src

测试

$ ./vendor/bin/phpunit

致谢

许可证

BSD许可证(BSD)。有关更多信息,请参阅许可证文件


Web开发从未如此有趣
www.2amigos.us