Я пользуюсь сервисом Amazon SES. Но я не мог понять, как я буду отслеживать сообщения электронной почты bounce с помощью PHP и хранить эти журналы электронной почты в базе данных. У меня есть ссылка ссылки на блог Amazon, но решение, данное там, находится на С# (http://sesblog.amazon.com/post/TxJE1JNZ6T9JXK/Handling-Bounces-and-Complaints). Нужна помощь и помощь. Спасибо.
Я использую SAS Амазонки. Как я буду отслеживать сообщения электронной почты bounce с помощью PHP?
Ответ 1
Я получил решение здесь, оно работает для меня: https://github.com/npflood/AWS-SNS-HTTP-PHP-ENDPOINT
Также вы можете воспользоваться ссылкой здесь: http://phpmf.org/amazon-sns-http-endpoint-in-php.html
Ответ 2
Создайте тему SNS для отказов и жалоб и соедините ее со своей SES (перейдите на вкладку сведений о подробностях - отредактируйте конфигурацию - привяжите соответствующие запросы SNS и отскакивайте темы).
Обязательно подпишитесь на тему SNS, которую вы создали, либо на свой идентификатор почты, либо на http/s на основе вашего требования. Всякий раз, когда в сообщении SES есть отскок или жалоба, вы получаете данные JSON, которые впоследствии могут обрабатываться в соответствии с вашими потребностями.
Очень полезный веб-семинар AWS следует здесь: https://www.youtube.com/watch?v=n3Fr0bCsIvo
Ответ 3
ШАГИ, ЧТОБЫ СЛЕДОВАТЬ
- Создать тему SNS 
- Создать подписку 
- Подтвердите подписку 
Код
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']);
 }
}
Ответ 4
Посмотрите на это решение AWS-SES-Dashboard
