AmazonSESサービスを使用しています。しかし、PHPを使用してバウンスメールメッセージを追跡し、それらのメールログをデータベースに保存し続ける方法を理解できませんでした。Amazonブログの参照リンクがありますが、そこにある解決策はC#( http://sesblog.Amazon.com/post/TxJE1JNZ6T9JXK/Handling-Bounces-and-Complaints )。ヘルプとサポートが必要です。ありがとうございます。
バウンスと苦情のSNSトピックを作成し、それをSESにリンクします([詳細の表示]タブに移動-設定を編集-それぞれのSNSの苦情とバウンスのトピックをリンクします)。
作成したSNSトピックは、要件に応じてメールIDまたはhttp/sにサブスクライブしてください。バウンスがあるか、SESメッセージに苦情がタグ付けされている場合は常に、必要に応じて後で処理できるJSONデータを受け取ります。
非常に役立つAWSウェビナーがここに続きます: https://www.youtube.com/watch?v=n3Fr0bCsIvo
従う手順
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']);
}
}