我正在使用Amazon SES。如何使用PHP跟踪退回电子邮件?

问题描述 投票:10回答:2

我正在使用Amazon SES服务。但我无法理解如何使用PHP跟踪退回电子邮件并将这些电子邮件日志存储在数据库中。我有一个亚马逊博客的参考链接,但那里给出的解决方案是C#(http://sesblog.amazon.com/post/TxJE1JNZ6T9JXK/Handling-Bounces-and-Complaints)。需要帮助和帮助。谢谢。

php amazon-ses bouncedemail
2个回答
1
投票

为退回和投诉创建一个SNS主题并将其链接到您的SES(转到查看详细信息选项卡 - 编辑配置 - 链接相应的SNS投诉和退回主题)。

确保根据您的要求将您创建的SNS主题订阅到您的邮件ID或http / s。每当有弹跳或投诉被标记为SES消息时,您将收到一个JSON数据,以后可以根据您的需要进行处理。

这里有一个非常有用的AWS网络研讨会:https://www.youtube.com/watch?v=n3Fr0bCsIvo


1
投票

要遵循的步骤

  1. 创建SNS主题
  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']);
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.