Я использую Amazon SES. Как я буду отслеживать сообщения электронной почты о возврате с помощью PHP?

Я использую сервис Amazon SES. Но я не мог понять, как я буду отслеживать сообщения электронной почты о возврате с помощью PHP и хранить эти журналы электронной почты в базе данных. У меня есть ссылка на блог Amazon, но приведенное там решение находится на C#(http://sesblog.amazon.com/post/TxJE1JNZ6T9JXK/Handling-Bounces-and-Complaints). Нужна помощь и содействие. Спасибо.


person Ranajit B    schedule 18.10.2013    source источник
comment
Вы документы смотрели? docs.aws.amazon.com/ses/latest/ DeveloperGuide/ вы можете настроить SES для отправки этих сообщений в указанную тему SNS, а затем вы просто получите сообщения оттуда, там написано, как вы можете настроить его, и я почти уверен, что где-то есть пример php SNS слишком.   -  person joschua011    schedule 18.10.2013
comment
Я не нашел там(docs.aws.amazon .com/ses/latest/DeveloperGuide/) любой для php, но следующая ссылка полезна...   -  person Ranajit B    schedule 23.10.2013


Ответы (2)


Создайте тему SNS для отказов и жалоб и свяжите ее с вашим SES (перейдите на вкладку просмотра сведений - Изменить конфигурацию - свяжите соответствующие темы жалоб и отказов SNS).

Не забудьте подписаться на тему SNS, которую вы создали, либо на свой почтовый идентификатор, либо на http/s в зависимости от ваших требований. Всякий раз, когда есть отказ или жалоба помечены для сообщения SES, вы получите данные JSON, которые позже могут быть обработаны в соответствии с вашими потребностями.

Очень полезный вебинар AWS приведен здесь: https://www.youtube.com/watch?v=n3Fr0bCsIvo

person Uday Kumar Reddy    schedule 04.08.2015

ШАГИ

  1. Создать тему в социальных сетях

  2. Создать подписку

  3. Подтвердить подписку

Код

class AmazonController extends Controller
{
 public function handleBounceOrComplaint(Request $request)
 {
   Log::info($request->json()->all());
   $data = $request->json()->all();
   if($request->json('Type') == 'SubscriptionConfirmation')
   Log::info("SubscriptionConfirmation came at: ".$data['Timestamp']);
   if($request->json('Type') == 'Notification'){
   $message = $request->json('Message');
   switch($message['notificationType']){
    case 'Bounce':
      $bounce = $message['bounce'];
      foreach ($bounce['bouncedRecipients'] as $bouncedRecipient){
        $emailAddress = $bouncedRecipient['emailAddress'];
        $emailRecord = WrongEmail::firstOrCreate(['email' => $emailAddress, 'problem_type' => 'Bounce']);
        if($emailRecord){
          $emailRecord->increment('repeated_attempts',1);
        }
      }
      break;
      case 'Complaint':
      $complaint = $message['complaint'];
      foreach($complaint['complainedRecipients'] as $complainedRecipient){
        $emailAddress = $complainedRecipient['emailAddress'];
        $emailRecord = WrongEmail::firstOrCreate(['email' => $emailAddress, 'problem_type' => 'Complaint']);
        if($emailRecord){
          $emailRecord->increment('repeated_attempts',1);
        }
      }
      break;
      default:
      // Do Nothing
      break;
    }
  }
  return Response::json(['status' => 200, "message" => 'success']);
 }
}
person Merwin Poulose    schedule 07.08.2018