stechstudio/laravel-email-events

处理电子邮件事件webhook

0.9 2024-03-29 21:56 UTC

This package is auto-updated.

Last update: 2024-08-29 22:48:12 UTC


README

Latest Version on Packagist Software License

所以,你的Laravel应用已经通过SendGrid、Mailgun或Postmark发送电子邮件,非常好。现在你想要捕获webhook并响应电子邮件事件,如投递或退回。这可能会有些混乱,授权webhook提交,解析负载,处理细节……然后你当然已经绑定到了一个特定的电子邮件提供商。

此包极大地简化了这一过程。它将接受任何支持电子邮件提供商的webhook提交,授权提交,将其泛化为标准数据格式,并触发Laravel事件。现在你只需要监听事件就可以了!

安装

通过Composer

$ composer require stechstudio/laravel-email-events

快速入门

1. 添加路由

在你的 routes/web.php 文件中添加

EmailEvents::routes();

这将连接到 .hooks/email-events/{provider} 的路由。

2. 配置你的认证方法

有多种认证选项可用。默认选项(适用于任何提供者)只是一个URL令牌。

在你的app .env文件中设置一个令牌密钥

MAIL_EVENTS_AUTH_TOKEN=mysecrettoken

3. 配置你的邮件提供商与你的webhook端点

登录到你的电子邮件提供商账户,找到webhook部分,并添加你的URL端点。请确保指定提供者名称,并包括认证令牌。

例如,如果你正在使用SendGrid,你会进入邮件设置页面,打开“事件通知”设置,检查你关心的所有操作,并提供你的POST URL

https://<yourdomain>/.hooks/email-events/sendgrid?auth=mysecrettoken

注意,在本地/开发模式下,你可以使用valet share来获取你应用程序的公开访问域名。

4. 监听事件

最后,你需要在你的应用程序中监听电子邮件事件。设置一个事件监听器并监听STS\EmailEvents\EmailEvent

类似于以下内容

namespace App\Listeners;

use STS\EmailEvents\EmailEvent;

class NotifyBouncedEmail {

    public function handle(EmailEvent $event)
    {
        // I only care about bounces
        if($event->getAction() != EmailEvent::EVENT_BOUNCED) {
            return;
        } 
        
        // Ok so we have an email bounce! Need to go handle that. Maybe notify us on Slack?
        // ...
    }
    
}