2amigos / mailer
带有队列功能的 Symphony Mailer 库的 Mailer 适配器。
Requires
- php: >=7.4
- aws/aws-sdk-php: ^3.296
- marc-mabe/php-enum: ^4.7
- pda/pheanstalk: ^4.0
- php-amqplib/php-amqplib: 2.*
- phpseclib/phpseclib: ^3.0
- predis/predis: ^2.2
- symfony/event-dispatcher: ^5.4
- symfony/mailer: ^5.4
- vlucas/phpdotenv: ^5.6
Requires (Dev)
- mockery/mockery: ^1.6.7
- phpunit/phpunit: ^8.5 || ^10.5
- squizlabs/php_codesniffer: ^3.8
Suggests
- aws/aws-sdk-php: Allows the use of Amazon SQS as a mail queue system
- pda/pheanstalk: Allows the use of Beanstalkd as mail queue system
- php-amqplib/php-amqplib: Allows the use of AMQP protocol required to use RabbitMq as a mail queue system
- predis/predis: Allows the use of Redis as a mail queue system
This package is auto-updated.
Last update: 2024-09-15 15:28:13 UTC
README
我们经常需要在项目中实现队列邮件功能。有队列和邮件库,但似乎没有哪个能够真正满足我们的需求,而且我们总是不得不将它们的功能同步在一起。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_BROKER
和 MAIL_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
类。它将返回一个队列对象,具有一些处理队列的方法。它们是
- enqueue(MailJob $job): bool
- dequeue():邮件作业
- ack(MailJob $job):void
- isEmpty():bool
$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