2015-02-24 3 views
2

Я использую CakePHP 2.6 и используя CakeEmail для отправки электронной почты для проверки.Извлечение Идентификатора сообщения с использованием CakeEmail на SAS через Amazon через SMTP

$Email = new CakeEmail('smtp'); 
       $Email->to($this->request->data['Account']['account_email']); 
       $Email->subject('Verify your account before you continue'); 
       $Email->send('http://localhost/Accounts/verify/'.$this->request->data['Account']['account_verificationhash']); 

Как Amazon SES переписывает Message-ID, я не могу отнести жалобы и подпрыгивает на конкретное сообщение электронной почты. Согласно их документам, ASA Amazon возвращает идентификатор сообщения в окончательном ответе SMTP. То есть (250 Ok <Message ID>)

Как я могу получить этот код ответа?

+0

Что вы имеете в виду: _I не может приписывать жалоб и возвраты к конкретной электронной message_? В частности, какие «жалобы»? Вы пытаетесь использовать коды ответов, чтобы определить, успешно ли было отправлено письмо? – AgRizzo

+0

Я не могу приписывать жалобы и отскоки конкретному сообщению электронной почты? В частности, какие «жалобы»? Жалобы с обратной связью по электронной почте, в частности жалобы на спам. Вы пытаетесь использовать коды ответов, чтобы определить, успешно ли было отправлено письмо? Нет, я пытаюсь вытащить идентификатор сообщения из сообщения ответа. Amazon принимает идентификатор сообщения, который генерирует CakeEmail и перезаписывает его. Это делается для их внутреннего отслеживания. Они возвращают этот идентификатор вам в ответном сообщении «250 Ok **** ID сообщения ****». Затем SES использует этот идентификатор сообщения, чтобы сообщать о любых жалобах или отскоках. – billybobmac

+0

Имеет ли возвращаемое значение метода отправки код ответа 250, т. Е. '$ Result = $ Email-> send();'? – AgRizzo

ответ

1

В строке 316 из ./vendor/cakephp/cakephp/lib/Cake/Network/Email/SmtpTransport.php, если вы добавили третий элемент в массив, возвращенный после отправки почты со стандартным транспортом CakePHP Smtp, вы можете принудительно вернуть последний ответ от SES, тем самым предоставив вам идентификационную ссылку для атрибуции уведомлений AWS SNS, отказов или жалоб.

$this->_content = array('headers' => $headers, 'message' => $message, 'response' => $this->_lastResponse); 

'ответ' затем предоставляет ...

Array(
    [code] => 250 
    [message] => Ok 00000151379549a4-6e36766f-849e-4e3c-9ac9-6ac1c6ad5434-000000 
) 

Предложите дублировании/имитировать транспорт Smtp, чтобы избежать этого хака перезаписи в обновлении CakePHP (http://book.cakephp.org/2.0/en/core-utility-libraries/email.html#creating-custom-transports).

С самого электронной почты:

Message-ID: < [email protected]west-1.amazonses.com>

захватить фактическое сообщение ID с этим:

$message['Email']['message_id'] = preg_replace('/Ok /', '', $response['response'][0]['message']);