henrikbjorn/stampie

该软件包已被废弃且不再维护。作者建议使用stampie/stampie软件包。

Stampie是为Postmark、SendGrid、Mailgun、Mandrill等不同电子邮件提供商提供的简单API包装器。

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

README

CI

Stampie是为PostmarkSendGrid等不同电子邮件提供商提供的简单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抽象,您可以选择使用任何库,如BuzzGuzzle。完整列表请参阅此处

每个邮件发送器在其构造函数中都将$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。如果存在问题或您有更好的实现想法,也适用同样的规则。