andytan07/laravel-ses-tracker

该软件包已被弃用,不再维护。没有建议的替代软件包。

允许您在通过 Laravel 和 Amazon SES 发送电子邮件时跟踪打开、投递、退回、投诉和点击链接

v0.2.0 2020-04-01 02:16 UTC

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+。

以下是原始软件包与本软件包之间的区别

  1. 所有命名空间都已更改为 andytan07/LaravelSesTracker
  2. 服务提供者是 LaravelSesTrackerServiceProvider
  3. 所有表名都以 laravel_ses_tracker 为前缀,而不是 laravel_ses
  4. laravel_ses_tracker_sent_emails 中新增了取消订阅列(待定)
  5. 配置文件现在是 config/laravel-ses-tracker.php,而不是 config/laravelses.php
  6. 路由没有变化,它们仍然以前缀 /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"
            }
        ]
    }
}