我正在使用yii2插件 nickcv ,我想知道电子邮件状态,就像软件验证或电子邮件是否传递一样。谁能帮我吗?
谢谢。
inner-component
答案 0 :(得分:1)
Mandrill会根据每个邮件跟踪电子邮件,因此将跟踪通过您的帐户发送的单个电子邮件的打开,点击和传递数据。您可以添加标签和元数据,以便为您发送的电子邮件提供更多背景信息。
Mandrill自动为许多字段建立索引,可用于搜索或查找与发送相关的有趣趋势。可在Web应用程序中和通过Messages-API
进行搜索。
因此,您需要研究Messages API /messages/info.json
,该API检索最近发送的一条消息的信息。当您发送消息时,使用
Array
(
[0] => Array
(
[email] => recipient.email@example.com
[status] => sent
[reject_reason] => hard-bounce
[_id] => abc123abc123abc123abc123abc123
)
)
_id=>abc123abc123abc123abc123abc123
可用于通过向messages/info.json
发送呼叫来检查电子邮件的状态,提供了可轻松转换为Yii2的php示例代码。见下文
<?php
try {
$mandrill = new Mandrill('YOUR_API_KEY');
$id = 'abc123abc123abc123abc123';
$result = $mandrill->messages->info($id);
print_r($result);
/*
Array
(
[ts] => 1365190000
[_id] => abc123abc123abc123abc123
[sender] => sender@example.com
[template] => example-template
[subject] => example subject
[email] => recipient.email@example.com
[tags] => Array
(
[0] => password-reset
)
[opens] => 42
[opens_detail] => Array
(
[0] => Array
(
[ts] => 1365190001
[ip] => 55.55.55.55
[location] => Georgia, US
[ua] => Linux/Ubuntu/Chrome/Chrome 28.0.1500.53
)
)
[clicks] => 42
[clicks_detail] => Array
(
[0] => Array
(
[ts] => 1365190001
[url] => http://www.example.com
[ip] => 55.55.55.55
[location] => Georgia, US
[ua] => Linux/Ubuntu/Chrome/Chrome 28.0.1500.53
)
)
[state] => sent
[metadata] => Array
(
[user_id] => 123
[website] => www.example.com
)
[smtp_events] => Array
(
[0] => Array
(
[ts] => 1365190001
[type] => sent
[diag] => 250 OK
)
)
)
*/
} catch(Mandrill_Error $e) {
// Mandrill errors are thrown as exceptions
echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
// A mandrill error occurred: Mandrill_Unknown_Message - No message exists with the id 'McyuzyCS5M3bubeGPP-XVA'
throw $e;
}
?>
您还可以在mandrill帐户上设置WebHooks并将其指向服务器页面,例如yoursite.com/mandrill-webhook
,并在创建Webhook时可以指定触发该Webhook的事件,依次选择send
,{{1 }},open
并立即保存,只要这些事件中的任何一个触发,它就会发布一个带有click
的数组,以告知哪一个事件甚至被触发了。首次设置网络挂钩时,您可以向您的网址发送一个测试调用,该调用将在下面发布所有这三个事件。
json
答案 1 :(得分:0)
这可以通过在发送之前设置标头来实现。
您要查找的标题为:X-MC-Track
阅读文档here
您将可以通过以下方式进行设置
$message = Yii::$app->mailer->compose(...);
$message->getSwiftMessage()->getHeaders()->addTextHeader('X-MC-Track', 'opens,clicks');
也许它需要一些测试和调整,您应该使用像https://mailcatcher.me/这样的本地测试smtp服务器,它将帮助您检查是否设置了这些标头。
答案 2 :(得分:0)
可以尝试一下。它对我有用..!
echo "<pre>";
print_r(Yii::$app->mailer->getLastTransaction());die;
输出将是:-
Array
(
[0] => Array
(
[email] => tets.test@gmail.comm
[status] => rejected
[_id] => abcabcabacbac
[reject_reason] => soft-bounce
)
)