Php 通过SMTP在Amazon SES上使用CakeEmail检索邮件Id

Php 通过SMTP在Amazon SES上使用CakeEmail检索邮件Id,php,cakephp,amazon-web-services,cakephp-2.3,amazon-ses,Php,Cakephp,Amazon Web Services,Cakephp 2.3,Amazon Ses,我正在使用CakePHP2.6和CakeEmail向用户发送验证电子邮件 $Email = new CakeEmail('smtp'); $Email->to($this->request->data['Account']['account_email']); $Email->subject('Verify your account before you continue');

我正在使用CakePHP2.6和CakeEmail向用户发送验证电子邮件

$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重写了邮件id,我无法将投诉和反弹归因于特定的电子邮件。根据他们的文档,AmazonSES在最后的SMTP响应中返回消息ID。即
(250 Ok)


如何检索该响应代码?

在/vendor/cakephp/cakephp/lib/Cake/Network/Email/SmtpTransport.php的第316行,如果在使用标准cakephp Smtp传输发送邮件后向返回的数组添加第三个元素,则可以强制返回来自SES的最后一个响应,从而提供指向属性AWS SNS的ID链接送货通知、退货或投诉

$this->_content = array('headers' => $headers, 'message' => $message, 'response' => $this->_lastResponse);
“响应”然后提供

Array(
    [code] => 250
    [message] => Ok 00000151379549a4-6e36766f-849e-4e3c-9ac9-6ac1c6ad5434-000000
)
建议您复制/模拟Smtp传输,以避免在更新CakePHP()时被覆盖

从电子邮件本身:

消息ID:

使用以下命令获取实际的消息ID:

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

你的意思是:我不能将投诉和反弹归因于特定的电子邮件消息?具体是什么“投诉”?您是否试图使用响应代码来确定电子邮件是否已成功发送?我无法将投诉和反弹归因于特定的电子邮件消息?具体是什么“投诉”?电子邮件反馈投诉,特别是垃圾邮件投诉。您是否试图使用响应代码来确定电子邮件是否已成功发送?不,我正在尝试从响应消息中提取消息id。Amazon获取CakeEmail生成的消息id,并重写它。这是为了他们的内部跟踪目的。他们会在响应消息“250 Ok****message ID****”中将该ID返回给您。然后SES使用该消息ID报告任何投诉或反弹。send方法的返回值是否具有250响应代码-即,
$result=$Email->send()?我试过了。它传递一个标题和消息的数组。传递的消息id标头是SES重写之前的消息id。您是否尝试使用sns通知?