Laravel - Как добавить пользовательские данные в полезную нагрузку SES - PullRequest
0 голосов
/ 27 июня 2018

Это обычная полезная нагрузка, предоставляемая AWS, когда электронное письмо приходит в норму.

{
    "notificationType": "Bounce",
    "bounce": {
        "bounceType": "Transient",
        "bounceSubType": "General",
        "bouncedRecipients": [{
            "emailAddress": "John Doe <john.doe@blablabla.com>"
        }],
        "timestamp": "2018-06-20T00:08:33.000Z",
        "feedbackId": "010199641a7787f4-b716a44c-87fd-b4e8-aac6-9f3addafbf8e-000000"
    },
    "mail": {
        "timestamp": "2018-06-20T00:08:29.000Z",
        "source": "no.reply@mysite.com",
        "sourceArn": "arn:aws:ses:us-west-2:112348978975:identity/no.reply@mysite.com",
        "sourceIp": "72.121.95.229",
        "sendingAccountId": "156123967765",
        "messageId": "0101016c8a81e492-57779c7b-9175-4ab4-a993-c323431c98d1-000000",
        "destination": ["John Doe <john.doe@blablabla.com>"]
    }
}

Я хочу добавить пользовательские атрибуты к возвратной нагрузке. Э.Г.

{"module": "reset_password"}

И я нашел этот пост , в котором говорится, что можно использовать тег сообщения .

Как установить этот тег с Laravel 5.6?

1 Ответ

0 голосов
/ 28 июня 2018

I нашел здесь документ и добавил пользовательские атрибуты в заголовки.

\Mail::send([], [], function ($email) use ($recipient) {
    $email->getHeaders()->addTextHeader('X-SES-MESSAGE-TAGS', 'module=auth,submodule=reset_password');
    $email->from(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME'));
    $email->to($recipient);
    $email->subject('Test SES subject');
    $email->setBody('This is a test content', 'text/html');
});

и должен удостовериться, что возвращаемая информация содержит исходный заголовок.

Тогда в паутине

$message_raw = \Aws\Sns\Message::fromRawPostData();
$message = json_decode($message_raw['Message'],1);
if (isset($message['mail']['headers'])) {
    $headers = collect($message['mail']['headers']);
    $tags = $headers->where('name', 'X-SES-MESSAGE-TAGS')->first();
    if ($tags) {
        $tags_arr = explode(',', $tags['value']);
        $tags = [];
        foreach ($tags_arr as $item) {
            list($key, $value) = explode('=', $item);
            $tags[$key] = $value;
        }
    }
}

$model->module = $tags['module']; // output auth
$model->submodule = $tags['submodule']; // output reset_password
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...