davidneal / laravel-ses-tracker
允许您通过 Laravel 和 Amazon SES 发送电子邮件时跟踪打开、投递、退回、投诉和点击链接
Requires
- php: ^7.2.5
- aws/aws-php-sns-message-validator: ^1.4
- aws/aws-sdk-php: ^3.148
- guzzlehttp/guzzle: ~6.0
- laminas/laminas-diactoros: ^2.2
- paquettg/php-html-parser: ^2.2
Requires (Dev)
- dms/phpunit-arraysubset-asserts: ^0.1.1
- mockery/mockery: ^1.3.1
- orchestra/database: ^4.0
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^7.5.15|^8.4|^9.0
README
一个 Laravel 6.0+ 包,允许您获取通过 SES 发送的电子邮件的简单发送统计数据,包括投递、打开、退回、投诉和链接跟踪。
这是对 oliveready7/laravel-ses 包的改进版本,已更新以支持 Laravel v6.0+ 并修复了一些错误。主要目的是为了使这个包适合在我的公司项目中使用 Laravel v6.0+。
以下是原始包和此包之间的差异
- 所有命名空间都更改为
DavidNeal/LaravelSesTracker
- 服务提供者现在是
LaravelSesTrackerServiceProvider
- 所有表名都以前缀
laravel_ses_tracker
开头,而不是laravel_ses
- 在
sent_emails
中添加了新的取消订阅列(待办事项) - 配置文件现在是
config/laravel-ses-tracker.php
而不是config/laravelses.php
- 路由没有改变,它们仍然以前缀
/laravel-ses
开头
除了上述列出的差异外,此包与oliveready7的包之间没有太多差异。
通过 composer 安装
添加到 composer.json
composer require davidneal/laravel-ses-tracker
确保您的 app/config/services.php 中设置了 SES 值
'ses' => [
'key' => your_ses_key,
'secret' => your_ses_secret,
'domain' => your_ses_domain,
'region' => your_ses_region,
],
请注意,如果您使用 IAM,它需要访问 SNS(用于投递、退回和投诉)以及 SES
确保您的邮件驱动程序位于 app/config/mail.php 中设置为 'ses'
发布公共资产
php artisan vendor:publish --tag=public --force
迁移包的数据库表
php artisan migrate
可选地,您可以发布包的配置(laravel-ses-tracker.php)
php artisan vendor:publish --tag=config
配置选项
- aws_sns_validator - 是否使用 AWS 的 SNS 验证器来处理传入的 SNS 请求。默认 = false
在生产环境中运行命令以设置 Amazon 电子邮件通知以跟踪退回、投诉和投递。确保在您的配置中正确设置了您的应用程序 URL。
如果您使用的是 http 协议而不是 https,请将 --http 标志添加到该命令中
php artisan setup:sns
使用方法
要发送启用所有跟踪的电子邮件
SesMail::enableAllTracking()
->to('hello@example.com')
->send(new Mailable);
所有跟踪允许您跟踪打开、退回、投递、投诉和链接
当然,您可以禁用和启用所有跟踪选项
SesMail::disableAllTracking();
SesMail::disableOpenTracking();
SesMail::disableLinkTracking();
SesMail::disableBounceTracking();
SesMail::disableComplaintTracking();
SesMail::disableDeliveryTracking();
SesMail::enableAllTracking();
SesMail::enableOpenTracking();
SesMail::enableLinkTracking();
SesMail::enableBounceTracking();
SesMail::enableComplaintTracking();
SesMail::enableDeliveryTracking();
setEmailId 选项允许您通过外键将电子邮件分组,因此您可以获取您特定电子邮件的结果。
SesMail::enableAllTracking()
->setEmailId($email->id)
->to('hello@example.com')
->send(new Mailable);
您可以通过手动查询数据库来手动操作结果。或者,您可以使用包中提供的函数。
SesMail::statsForEmail('welcome_emails');
//example result
[
"send_count" => 8,
"deliveries" => 7,
"opens" => 4,
"bounces" => 1,
"complaints" => 2,
"click_throughs" => 3,
"link_popularity" => collect([
"https://welcome.page" => [
"clicks" => 3
],
"https://facebook.com/brand" => [
"clicks" => 1
]
])
]
发送计数 = 尝试发送的电子邮件数量
投递 = 已投递的电子邮件数量
打开 = 打开的电子邮件数量
投诉 = 将电子邮件放入垃圾邮件的人数
点击率 = 至少点击了您电子邮件中的一个链接的人数
链接流行度 = 邮件中每个链接的唯一点击次数,按点击次数排序。