я использую плагин yii2 nickcv и я хочу знать, что статус электронной почты так же, как мягкая проверка или письмо доставлено или нет. Может кто-нибудь мне помочь??
Заранее спасибо.
\Yii::$app->mailer
->compose('mailViewName', ['model' => $model])
->setTo('[email protected]')
->send();
Можешь попробовать? меня устраивает..!
echo "<pre>";
print_r(Yii::$app->mailer->getLastTransaction());die;
вывод будет: —
Array
(
[0] => Array
(
[email] => [email protected]
[status] => rejected
[_id] => abcabcabacbac
[reject_reason] => soft-bounce
)
)
Mandrill отслеживает электронную почту для каждого отдельного сообщения, поэтому количество открытий, кликов и данных о доставке отслеживается для отдельных сообщений электронной почты, отправляемых через ваш аккаунт. Вы можете добавить теги и метаданные для дополнительного контекста отправляемых вами писем.
Mandrill автоматически индексирует ряд полей, которые вы можете использовать для поиска или поиска интересных тенденций, имеющих отношение к вашей отправке. Поиск доступен в веб-приложении и через Messages-API
.
Так что вам нужно посмотреть в API сообщений /messages/info.json
, который извлекает информацию для одного недавно отправленного сообщения. При отправке сообщения мандрил отвечает
Array
(
[0] => Array
(
[email] => [email protected]
[status] => sent
[reject_reason] => hard-bounce
[_id] => abc123abc123abc123abc123abc123
)
)
_id=>abc123abc123abc123abc123abc123
можно использовать для проверки состояния электронной почты, отправив вызов messages/info.json
Предоставлен пример кода php, который можно легко преобразовать в Yii2. увидеть ниже
<?php
try {
$mandrill = new Mandrill('YOUR_API_KEY');
$id = 'abc123abc123abc123abc123';
$result = $mandrill->messages->info($id);
print_r($result);
/*
Array
(
[ts] => 1365190000
[_id] => abc123abc123abc123abc123
[sender] => [email protected]
[template] => example-template
[subject] => example subject
[email] => [email protected]
email-deliverymandrillphpyii2 знак равно> массив
(
[0] => восстановление пароля
)
[открывает] => 42
[opens_detail] => массив
(
[0] => массив
(
[ts] => 1365190001
[ip] => 55.55.55.55
[местоположение] => Грузия, США
[уа] => Linux / Ubuntu / Chrome / Chrome 28.0.1500.53
)
)
[клики] => 42
[clicks_detail] => массив
(
[0] => массив
(
[ts] => 1365190001
[url] => http://www.example.com
[ip] => 55.55.55.55
[местоположение] => Грузия, США
[уа] => Linux / Ubuntu / Chrome / Chrome 28.0.1500.53
)
)
[состояние] => послал
[метаданные] => массив
(
[user_id] => 123
[сайт] => www.example.com
)
[smtp_events] => массив
(
[0] => массив
(
[ts] => 1365190001
[тип] => послал
[diag] => 250 ОК
)
)
)
* /
} catch (Mandrill_Error $ e) {
// Ошибки Mandrill генерируются как исключения
echo 'Произошла ошибка мандрила:'. get_class ($ e). '-'. $ e->GetMessage ();
// Произошла ошибка мандрила: Mandrill_Unknown_Message - Нет сообщения с идентификатором 'McyuzyCS5M3bubeGPP-XVA'
бросить $ e;
}
?>
[/ NOEDIT]
Также вы можете настроить WebHooks на свою учетную запись в Mandrill и указать ее на странице вашего сервера, скажем yoursite.com/mandrill-webhook
и при создании веб-крючка вы можете указать, какие события будут вызывать этот веб-крючок, выберите send
, open
, click
и сохраните сейчас, когда любое из этих событий сработает, он отправит массив с json
что говорит, что даже вызвало. Когда вы настроите веб-крючок в первый раз, вы можете отправить тестовый вызов на ваш URL, который опубликует все 3 из этих событий, как показано ниже.
Array
(
[mandrill_events] => [
{
"event": "send",
"msg": {
"ts": 1365109999,
"subject": "This an example webhook message",
"email": "[email protected]",
"sender": "[email protected]",
"tags": [
"webhook-example"],
"opens": [],
"clicks": [],
"state": "sent",
"metadata": {
"user_id": 111
},
"_id": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa",
"_version": "exampleaaaaaaaaaaaaaaa"},
"_id": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa",
"ts": 1530365793
},
{
"event": "open",
"msg": {
"ts": 1365109999,
"subject": "This an example webhook message",
"email": "[email protected]",
"sender": "[email protected]",
"tags": [
"webhook-example"],
"opens": [
{
"ts": 1365111111
}
],
"clicks": [
{
"ts": 1365111111,
"url": "http://mandrill.com"}
],
"state": "sent",
"metadata": {
"user_id": 111
},
"_id": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa1",
"_version": "exampleaaaaaaaaaaaaaaa"},
"_id": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa1",
"ip": "127.0.0.1",
"location": {
"country_short": "US",
"country": "United States",
"region": "Oklahoma",
"city": "Oklahoma City",
"latitude": 35.4675598145,
"longitude": -97.5164337158,
"postal_code": "73101",
"timezone": "-05:00"},
"user_agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.8) Gecko/20100317 Postbox/1.1.3",
"user_agent_parsed": {
"type": "Email Client",
"ua_family": "Postbox",
"ua_name": "Postbox 1.1.3",
"ua_version": "1.1.3",
"ua_url": "http://www.postbox-inc.com/",
"ua_company": "Postbox, Inc.",
"ua_company_url": "http://www.postbox-inc.com/",
"ua_icon": "http://cdn.mandrill.com/img/email-client-icons/postbox.png",
"os_family": "OS X",
"os_name": "OS X 10.6 Snow Leopard",
"os_url": "http://www.apple.com/osx/",
"os_company": "Apple Computer, Inc.",
"os_company_url": "http://www.apple.com/",
"os_icon": "http://cdn.mandrill.com/img/email-client-icons/macosx.png",
"mobile": false
},
"ts": 1530365793
},
{
"event": "click",
"msg": {
"ts": 1365109999,
"subject": "This an example webhook message",
"email": "[email protected]",
"sender": "[email protected]",
"tags": [
"webhook-example"],
"opens": [
{
"ts": 1365111111
}
],
"clicks": [
{
"ts": 1365111111,
"url": "http://mandrill.com"}
],
"state": "sent",
"metadata": {
"user_id": 111
},
"_id": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa2",
"_version": "exampleaaaaaaaaaaaaaaa"},
"_id": "exampleaaaaaaaaaaaaaaaaaaaaaaaaa2",
"ip": "127.0.0.1",
"location": {
"country_short": "US",
"country": "United States",
"region": "Oklahoma",
"city": "Oklahoma City",
"latitude": 35.4675598145,
"longitude": -97.5164337158,
"postal_code": "73101",
"timezone": "-05:00"},
"user_agent": "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.8) Gecko/20100317 Postbox/1.1.3",
"user_agent_parsed": {
"type": "Email Client",
"ua_family": "Postbox",
"ua_name": "Postbox 1.1.3",
"ua_version": "1.1.3",
"ua_url": "http://www.postbox-inc.com/",
"ua_company": "Postbox, Inc.",
"ua_company_url": "http://www.postbox-inc.com/",
"ua_icon": "http://cdn.mandrill.com/img/email-client-icons/postbox.png",
"os_family": "OS X",
"os_name": "OS X 10.6 Snow Leopard",
"os_url": "http://www.apple.com/osx/",
"os_company": "Apple Computer, Inc.",
"os_company_url": "http://www.apple.com/",
"os_icon": "http://cdn.mandrill.com/img/email-client-icons/macosx.png",
"mobile": false
},
"url": "http://mandrill.com",
"ts": 1530365793
}]
)
Это может быть достигнуто путем установки заголовков перед отправкой.
Заголовок, который вы ищете, будет: X-MC-Track
Читать документацию Вот
И вы сможете установить их с помощью
$message = Yii::$app->mailer->compose(...);
$message->getSwiftMessage()->getHeaders()->addTextHeader('X-MC-Track', 'opens,clicks');
Может быть, он нуждается в некотором тестировании и настройке, вы должны использовать SMTP-сервер для локального тестирования, например https://mailcatcher.me/ это поможет вам проверить, что эти заголовки установлены.