andytan07 / laravel-ses-tracker
允许您在通过 Laravel 和 Amazon SES 发送电子邮件时跟踪打开、投递、退回、投诉和点击链接
Requires
- php: ^7.2
- aws/aws-php-sns-message-validator: ^1.4
- aws/aws-sdk-php: ^3.28
- guzzlehttp/guzzle: ~6.0
- illuminate/console: ^6.0
- illuminate/container: ^6.0
- illuminate/database: ^6.0
- illuminate/mail: ^6.0
- illuminate/routing: ^6.0
- illuminate/support: ^6.0
- laminas/laminas-diactoros: ^2.2
- nesbot/carbon: ^2.0
- paquettg/php-html-parser: ^2.2
- ramsey/uuid: ^3.7
- symfony/psr-http-message-bridge: ^1.0
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
This package is auto-updated.
Last update: 2021-02-02 08:36:21 UTC
README
此仓库已过时并归档,以支持 Laravel 中更受欢迎的电子邮件跟踪解决方案。请查看 jdavidbakr/mail-tracker。
一个 Laravel 6.0+ 软件包,允许您获取通过 SES 发送的电子邮件的简单发送统计信息,包括投递、打开、退回、投诉和链接跟踪。
这是 oliveready7/laravel-ses 软件包的改进版本,已更新以支持 Laravel v6.0+ 并修复一些错误。主要是我改进了这个软件包,以便它适合在我的公司项目中使用 Laravel v6.0+。
以下是原始软件包与本软件包之间的区别
- 所有命名空间都已更改为
andytan07/LaravelSesTracker
- 服务提供者是
LaravelSesTrackerServiceProvider
- 所有表名都以
laravel_ses_tracker
为前缀,而不是laravel_ses
- 在
laravel_ses_tracker_sent_emails
中新增了取消订阅列(待定) - 配置文件现在是
config/laravel-ses-tracker.php
,而不是config/laravelses.php
- 路由没有变化,它们仍然以前缀
/laravel-ses
开头
除了上述列出的区别外,本软件包与 oliveready7 的软件包之间没有太多区别。
通过 composer 安装
添加到 composer.json
composer require andytan07/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();
批处理选项允许您将电子邮件分组,以便您可以获取特定组的统计结果
SesMail::enableAllTracking()
->setBatch('welcome_emails')
->to('hello@example.com')
->send(new Mailable);
您可以通过手动查询数据库来手动操作结果。或者,您可以使用软件包中提供的函数。
SesMail::statsForBatch('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
]
])
]
发送计数 = 尝试发送的电子邮件数量
投递 = 已投递的电子邮件数量
打开 = 打开的电子邮件数量
投诉 = 将电子邮件放入垃圾邮件的人的数量
点击量 = 至少点击了您电子邮件中一个链接的人的数量
链接热度 = 邮件中每个链接的独特点击次数,按点击次数排序。
API 信息
数据总是包含表示请求是否成功的 'success' 键
400 错误请求 = 端点验证失败
404 = 查询中找不到某个内容
422 = 可能发生的其他错误
GET /laravel-ses/api/has/bounced/{email}
参数 - 无
响应
{ "success": "true", "bounced": "true", "bounces": [ { "message_id":"7a", "sent_email_id": "1", "type": "Permanent", "email": "harrykane@gmail.com", "bounced_at": "2018-01-01 12:00:00" } ] }
GET /laravel-ses/api/has/complained/{email}
参数 - 无
响应
{ "success": "true", "complained": "true", "complaints": [ { "message_id":"8b", "sent_email_id": "23", "type": "abuse", "email": "wanyama@hotmail.com", "complained_at": "2018-01-02 09:12:00" } ] }
GET /laravel-ses/api/stats/batch/{batchName}
参数 - 无
响应
{ "success": "true", "data": { "success":true, "data": { "send_count":0, "deliveries":0, "opens":0, "bounces":0, "complaints":0, "click_throughs":0, "link_popularity":[] } } }
GET /laravel-ses/api/stats/email/{email}
参数 - 无
响应
{ "success": true, "data": { "counts": { "sent_emails": 3, "deliveries": 2, "opens": 1, "bounces": 1, "complaints": 1, "click_throughs": 2 }, "data": { "sent_emails": [ { "id": 1, "message_id": "d3e2028a324fde23363ec3a073ecd436@swift.generated", "email": "something@gmail.com", "batch": "welcome_emails", "sent_at": "2018-03-18 10:28:26", "delivered_at": "2017-08-25 07:58:40", "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" }, { "id": 9, "message_id": "b623bf23064c088fa044a58f22ddacad@swift.generated", "email": "something@gmail.com", "batch": "win_back", "sent_at": "2018-03-18 10:28:26", "delivered_at": "2017-08-25 07:58:40", "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" }, { "id": 10, "message_id": "ec100dcd13ce91b6b28002173564d1b9@swift.generated", "email": "something@gmail.com", "batch": "june_newsletter", "sent_at": "2018-03-18 10:28:26", "delivered_at": null, "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" } ], "deliveries": [ { "id": 1, "message_id": "d3e2028a324fde23363ec3a073ecd436@swift.generated", "email": "something@gmail.com", "batch": "welcome_emails", "sent_at": "2018-03-18 10:28:26", "delivered_at": "2017-08-25 07:58:40", "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" }, { "id": 9, "message_id": "b623bf23064c088fa044a58f22ddacad@swift.generated", "email": "something@gmail.com", "batch": "win_back", "sent_at": "2018-03-18 10:28:26", "delivered_at": "2017-08-25 07:58:40", "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" } ], "opens": [ { "id": 1, "sent_email_id": "1", "email": "something@gmail.com", "batch": "welcome_emails", "beacon_identifier": "bfd935de-2219-4f86-9bd3-24afd06cc37a", "url": "https://laravel-ses.com/laravel-ses/beacon/bfd935de-2219-4f86-9bd3-24afd06cc37a", "opened_at": "2018-03-18 10:28:26", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" } ], "bounces": [ { "id": 3, "message_id": "b623bf23064c088fa044a58f22ddacad@swift.generated", "sent_email_id": "9", "type": "abuse", "email": "something@gmail.com", "complained_at": "2017-08-25 07:58:39", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" } ], "complaints": [ { "id": 3, "message_id": "b623bf23064c088fa044a58f22ddacad@swift.generated", "sent_email_id": "9", "type": "abuse", "email": "something@gmail.com", "complained_at": "2017-08-25 07:58:39", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26" } ], "click_throughs": [ { "id": 1, "link_identifier": "0f14e25d-4712-4a9a-be6b-b190dc1a31b3", "sent_email_id": "1", "original_url": "https://google.com", "batch": "welcome_emails", "clicked": "1", "click_count": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26", "message_id": "d3e2028a324fde23363ec3a073ecd436@swift.generated", "email": "something@gmail.com", "sent_at": "2018-03-18 10:28:26", "delivered_at": "2017-08-25 07:58:40", "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1" }, { "id": 1, "link_identifier": "c7933d15-8e22-41e7-9074-e327ee02cf1a", "sent_email_id": "1", "original_url": "https://superficial.io", "batch": "welcome_emails", "clicked": "1", "click_count": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26", "message_id": "d3e2028a324fde23363ec3a073ecd436@swift.generated", "email": "something@gmail.com", "sent_at": "2018-03-18 10:28:26", "delivered_at": "2017-08-25 07:58:40", "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1" }, { "id": 9, "link_identifier": "be2d0bc9-87b7-48cc-8b57-6b714bfc9d48", "sent_email_id": "9", "original_url": "https://google.com", "batch": "win_back", "clicked": "1", "click_count": "1", "created_at": "2018-03-18 10:28:26", "updated_at": "2018-03-18 10:28:26", "message_id": "b623bf23064c088fa044a58f22ddacad@swift.generated", "email": "something@gmail.com", "sent_at": "2018-03-18 10:28:26", "delivered_at": "2017-08-25 07:58:40", "complaint_tracking": "1", "delivery_tracking": "1", "bounce_tracking": "1" } ] } }