独特的 Mailgun 轨道打开

Mailgun track unique opens

刚刚通过 API.

测试了 mailgun

一切正常。

简述:如何通过 webhook 跟踪特定邮件的唯一打开次数。


(不一定相关,但为了完整性,我使用 Yii2 PHP 框架 - 没有扩展,只是来自 mailgun 的快速入门 php 代码)

发送电子邮件并跟踪打开事件。 但我发现它会跟踪同一封邮件的每一次打开。

那么跟踪特定邮件是否被打开的最佳方法是什么(通过 webhook)。哪些数据最适合识别特定电子邮件或在发送时更好地使用“自定义变量”?

跟踪电子邮件打开的最佳方法是所谓的 "pixel"。 首先,您需要在电子邮件中注入像素。

例如:

    public function insertPixel($user,$template)
        {
            $output = $template.'<img src="'.Yii::app()->homeUrl.'/mailing/pixel/track?id='.$this->campaign->id.'&user='.$user.'&rand='.rand().'">';

            return $output;
        }

指向php端点。在那个端点,你会得到空缺并用它们做 w/e 你想做的事。

例如:

public function actionTrack()
{
    if (isset($_GET["id"])&&isset($_GET["user"])){
            Yii::app()->db->createCommand("UPDATE mailing_campaigns SET open_count = open_count + 1 WHERE id=:id")
                ->bindParam(":id",$_GET["id"],PDO::PARAM_INT)
                ->execute();
    }
    header('Content-Type: image/gif');
    echo "\x47\x49\x46\x38\x37\x61\x1\x0\x1\x0\x80\x0\x0\xfc\x6a\x6c\x0\x0\x0\x2c\x0\x0\x0\x0\x1\x0\x1\x0\x0\x2\x2\x44\x1\x0\x3b";
    exit;
}

此代码调整邮件活动的打开计数器,例如 returns 1x1 透明 .gif 图片。

这不是 100% 准确,因为有些人不会在电子邮件中加载图片,但这是目前我所知道的最佳方式。

好的,我想我得到了一个可以接受的工作流程——通过“自定义变量”。

您可以为每个收件人定义不同的值,这样您就可以发送一个唯一的 ID,然后在打开的事件中跟踪该 ID。并为每个发件人保存一个打开或更新打开时间。

我的发送码(PHP):

$result = $mg->sendMessage($domain, array(
            'from'    => 'foo@bar.de>',
            'to'      => 'recipient1@mail.de, recipient2@mail.de',
            'subject' => 'Hello %recipient.first% from %recipient.group%!',
            'text'    => 'Test of Mailgun',
            'html'    => '<html>It is so simple to send a message.<br/>Right?</html>',
            'o:tag'   => array('test'),
            'o:tracking-opens' => 'yes',
            'v:my-custom-data' => '{"my_message_id": %recipient.id%}',
            'recipient-variables' => '{
                "recipient1@mail.de": {"first":"Recipient1", "group":"group1", "id":1},
                "recipient2@mail.de": {"first":"Recipient2", "group":"group2", "id":2}
            }'
));

然后在每个事件中您都会收到带有唯一 ID 的响应。

打开第一封邮件的事件:

"user-variables": {
    "my-custom-data": "{\"my_message_id\": 1}"
},

打开第二封邮件的事件:

"user-variables": {
    "my-custom-data": "{\"my_message_id\": 2}"
},