henrikbjorn / 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: 2022-06-27 14:00:28 UTC
README
Stampie是为Postmark和SendGrid等不同电子邮件提供商提供的简单API包装器。
它非常容易使用,并可以像下面这样与您的应用程序集成,例如使用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。完整列表请参阅此处
每个邮件发送器在其构造函数中都将$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。如果存在问题或您有更好的实现想法,也适用同样的规则。