netglue / zf-postmark
用于接收由 Postmark 发送的 Webhooks 的 Zend Framework 模块
Requires
- php: >=7.1
- ext-json: *
- psr/log: ^1.0
- zendframework/zend-authentication: ^2
- zendframework/zend-crypt: ^2||^3
- zendframework/zend-eventmanager: ^3.2
- zendframework/zend-modulemanager: ^2
- zendframework/zend-mvc: ^3
- zendframework/zend-serializer: ^2
- zendframework/zend-view: ^2
Requires (Dev)
- monolog/monolog: ^1.23
- php-coveralls/php-coveralls: ^2.1
- phpstan/phpstan: ^0.9.2
- phpunit/phpunit: ^7
- squizlabs/php_codesniffer: ^3.2
This package is auto-updated.
Last update: 2021-09-02 12:03:54 UTC
README
用途
此模块/包可以添加到 ZF3 应用中,以便轻松处理由 Postmark 发送的 Webhooks,例如投递、点击、打开和退回事件。它还可以用于处理入站电子邮件消息。
尚未在 ZF2 应用上测试,因此结果可能不同。可能是因为依赖项太新,无法工作,但将其移植到 ZF2 不会很困难。
安装
使用 composer 使用 "netglue/zf-postmark"
安装,在您的 application.config.php
中启用模块,使用模块名称 'NetgluePostmark'
,并添加自定义配置以更改路由 URL 或设置基本 HTTP 验证 (推荐)。
在 composer 安装过程中,Zend 的组件安装器应自动为您注入模块名称。
配置基本验证
为了减轻随机 POST 请求对您的入站或事件 Webhook 端点的影响,您应该配置基本验证,因此请根据 config/postmark.local.php.dist
的内容创建一个本地配置文件并进行配置。
默认情况下,用户名和密码分别为 postmark
和 Pa55w0rd
,您的 Webhook URL 将为 https://postmark:Pa55w0rd@my-domain.com/postmark-outbound-webhook
在您的 Postmark 账户中设置 Webhooks
假设您已使用默认路由并启用了基本验证,您的端点将是
https://username:password@your-domain.com/postmark-outbound-webhook
用于退回、点击、投递等,以及 https://username:password@your-domain.com/postmark-inbound-webhook
用于入站电子邮件消息。
转到 您的 Postmark 账户,选择您要配置的服务器,点击设置并输入入站或出站 Webhook 的正确 URL,如果已配置,则可选地提供基本验证凭据。
出站 Webhook 接受投递、退回、垃圾邮件投诉、打开和点击事件,而入站 Webhook 仅接受入站电子邮件事件/消息。
监听事件
控制器触发了您可以使用 Zend 的 Event Manager 包监听的一致事件。退回被细分为硬退回和软退回,因此,您可以选择记录软退回并以不同的方式对硬退回做出反应。所有事件名称都作为常量列在 \NetgluePostmark\EventManager\AbstractEvent
中,并且是
const EVENT_HARD_BOUNCE = 'postmark.event.hard_bounce'; const EVENT_SOFT_BOUNCE = 'postmark.event.soft_bounce'; const EVENT_BOUNCE_OTHER = 'postmark.event.bounce_other'; const EVENT_OPEN = 'postmark.event.open'; const EVENT_CLICK = 'postmark.event.click'; const EVENT_DELIVERY = 'postmark.event.delivery'; const EVENT_SPAM_COMPLAINT = 'postmark.event.spam_complaint'; const EVENT_INBOUND = 'postmark.event.inbound';
示例记录监听器
在 \NetgluePostmark\Listener\LoggingListener
中有一个示例聚合监听器,您可以通过阅读 dist 配置文件 config/postmark.local.php.dist
中的注释来附加它。
事件由 \NetgluePostmark\Service\EventEmitter
触发 - 使用目标代理工厂是最简单的事件订阅方式,因为只有在向 webhook 发送帖子时,您的监听器才会从容器中检索。
有关编写监听器的文档,请参阅 Zend 事件管理器文档。
测试
切换到模块安装的位置,执行 composer install
,然后执行 composer test
。
贡献
欢迎提交 PR。请为新功能编写测试。
支持
欢迎提交问题,但请理解,找到回答支持请求的时间非常有限,因此可能会有较长的等待时间。
关于
Netglue 在英格兰德文郡制作网站和应用。我们希望这对您有用,并且无论哪种方式我们都欢迎反馈 :)。