stampie/stampie

Stampie 是一个针对不同邮件提供商(如Postmark、SendGrid、Mailgun、Mandrill)的简单API包装器。

v1.1.0 2021-09-08 10:47 UTC

README

CI

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抽象,您可以选择任何库,如BuzzGuzzle。完整的列表在这里: https://packagist.org.cn/providers/psr/http-client-implementation

每个邮件发送器在构造函数中都将$serverToken作为第二个参数。这是用于身份验证的。在Postmark邮件发送器中,这是一个哈希值,但在SendGrid中,它是一个username:password模式,被分成两部分,并以参数形式发送。邮件发送器负责格式化请求,以便针对特定的API。

MessageMessageInterface是一个简单的存储类,它保存有关发送到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 本身完全解耦,不依赖于任何框架。

集成

测试

Stampie 使用 GitHub Actions 进行 持续集成 测试,并力求达到高覆盖率。

开发

如上所述,在集成新的邮件发送器或适配器时,请依赖于本包中已有的接口或抽象类。此外,还应提供单元测试。

反馈

这是一个创建来测试 TDD(测试驱动开发)的项目,也许会有一些从中学到的经验教训。但您始终欢迎通过 GitHub、Twitter、GitHub 问题或 Pull Request 发送反馈。如果您发现错误或有更好的或更智能的实现想法,也是如此。