kenyroot / laravel-ses
允许您通过Laravel和Amazon SES发送邮件时跟踪打开、投递、退信、投诉和点击链接
Requires
- aws/aws-php-sns-message-validator: ^1.4
- aws/aws-sdk-php: ^3.28
- guzzlehttp/guzzle: ^7.4.1
- illuminate/console: ~5.5
- illuminate/container: ~5.5
- illuminate/database: ~5.5
- illuminate/mail: ~5.5
- illuminate/routing: ~5.5
- illuminate/support: ~5.5
- nesbot/carbon: ^1.22
- paquettg/php-html-parser: ^1.7
- ramsey/uuid: ^3.7
- symfony/psr-http-message-bridge: ^1.0
- zendframework/zend-diactoros: ^1.7
Requires (Dev)
- mockery/mockery: ~1.0
- orchestra/database: ~3.5
- orchestra/testbench: ~3.5
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-09-21 18:35:57 UTC
README
一个Laravel 5.5+的包,允许您获取通过SES发送的邮件的简单发送统计数据,包括投递、打开、退信、投诉和链接跟踪。
通过composer安装
添加到composer.json中
composer require oliveready7/laravel-ses
确保您的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
可选地,您可以发布包的配置(laravelses.php)
php artisan vendor:publish --tag=config
配置选项
- aws_sns_validator - 包是否使用AWS的SNS验证器进行入站SNS请求。默认 = false
在生产环境中运行命令以设置Amazon电子邮件通知以跟踪退信、投诉和投递。确保在您的配置中设置了正确的app 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"
}
]
}
}