独特的 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}"
},
刚刚通过 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}"
},