stampie / stampie
Stampie 是一个针对不同邮件提供商(如Postmark、SendGrid、Mailgun、Mandrill)的简单API包装器。
Requires
- php: ^7.2 || ^8.0
- php-http/client-implementation: ^1.0
- php-http/discovery: ^1.0
- php-http/httplug: ^1.0 || ^2
- php-http/message-factory: ^1.0
- php-http/multipart-stream-builder: ^1.0
Requires (Dev)
- ext-json: *
- guzzlehttp/psr7: ^1.3
- php-http/message: ^1.0
- php-http/mock-client: ^1.0
- phpunit/phpunit: ^8.5.20 || ^9.5.9
Suggests
- stampie/extra: Extensions for Stampie
Conflicts
- sebastian/comparator: <1.2.4
Replaces
- henrikbjorn/stampie: v1.1.0
This package is auto-updated.
Last update: 2024-08-27 18:29:56 UTC
README
Stampie 是一个简单的API包装器,适用于Postmark、SendGrid等邮件提供商。
它使用非常简单,并且可以很容易地集成到您的应用程序中,如下面的SendGrid邮件发送示例所示。
提供商
<?php // composer autoloading. require 'vendor/autoload.php'; class Message extends \Stampie\Message { public function getFrom() { return 'alias@domain.tld'; } public function getSubject() { return 'You are trying out Stampie'; } public function getText() { return 'So what do you think about it?'; } } $adapter = new Http\Adapter\Guzzle6\Client(); $mailer = new Stampie\Mailer\SendGrid($adapter, 'username:password'); // Throws an HttpException for error // messages not recognized by SendGrid api or ApiException for known errors. $mailer->send(new Message('reciever@domain.tld'));
以下简单示例展示了Stampie底层的工作方式和开发过程。由于其他人在HTTP通信方面表现得比我们好得多,因此Stampie使用了PSR-18抽象,您可以选择任何库,如Buzz或Guzzle。完整的列表在这里: https://packagist.org.cn/providers/psr/http-client-implementation
每个邮件发送器在构造函数中都将$serverToken
作为第二个参数。这是用于身份验证的。在Postmark邮件发送器中,这是一个哈希值,但在SendGrid中,它是一个username:password
模式,被分成两部分,并以参数形式发送。邮件发送器负责格式化请求,以便针对特定的API。
Message
或MessageInterface
是一个简单的存储类,它保存有关发送到API的消息的信息,例如发件人的电子邮件地址和接收者,以及HTML和文本正文。
最后,对于添加新的邮件发送器或适配器时应使用的每个类或抽象实现,都有一个接口。
安装
Stampie没有与Guzzle或其他发送HTTP消息的库紧密耦合。它使用一个名为PSR-18的抽象。这将为您提供选择要使用的PSR-7实现和HTTP客户端的灵活性。
如果您只想快速开始,请运行以下命令
composer require stampie/stampie php-http/curl-client nyholm/psr7
为什么需要这么多包?
Stampie依赖于虚拟包psr/http-client-implementation,它要求您安装一个适配器,但我们并不关心您安装哪个。这是您应用程序中的实现细节。我们还需要一个PSR-17实现。
如果您不想使用php-http/curl-client
,您可以。您可以使用php-http/guzzle6-adapter
或其他库,该库位于此列表中。
文档
所有标签和发布版本都生成了API文档。这些文档可以在stampie.github.io/Stampie/api/main/找到。
扩展
- Stampie Extra使用Symfony EventDispatcher组件为Stampie提供扩展。
框架集成
Stampie 本身完全解耦,不依赖于任何框架。
集成
- StampieBundle 同样在 Packagist 上。
测试
Stampie 使用 GitHub Actions 进行 持续集成 测试,并力求达到高覆盖率。
开发
如上所述,在集成新的邮件发送器或适配器时,请依赖于本包中已有的接口或抽象类。此外,还应提供单元测试。
反馈
这是一个创建来测试 TDD(测试驱动开发)的项目,也许会有一些从中学到的经验教训。但您始终欢迎通过 GitHub、Twitter、GitHub 问题或 Pull Request 发送反馈。如果您发现错误或有更好的或更智能的实现想法,也是如此。