2017-05-18 8 views
0

私はC#アプリケーションを持っています。これはAmazon SESを使って電子メールを送信しています。私がやりたいことは、電子メールにバウンスや返信をしたときに、ラムダ関数を使ってアプリケーションのエンドポイントを呼び出すことです。私は次のC#ラムダ関数を持っていますが、2つの問題があります。 1.私は失敗を特定する方法を理解できません。 2.ユーザーからのメッセージのテキストが見つかりません。C#ラムダでSESがバウンスして苦情を処理する

 public async Task FunctionHandler(Amazon.Lambda.SimpleEmailEvents.SimpleEmailEvent emailEvent, ILambdaContext context) 
    { 
     foreach (Amazon.Lambda.SimpleEmailEvents.SimpleEmailEvent.SimpleEmailRecord record in emailEvent.Records) 
     { 
      Amazon.Lambda.SimpleEmailEvents.SimpleEmailEvent.SimpleEmailService sesRecord = record.Ses; 
      LambdaLogger.Log($"Processing message {sesRecord.Mail.MessageId}."); 
      using (HttpClient client = new HttpClient()) 
      { 
       try 
       { 
        string messageId = sesRecord.Mail.MessageId; 
        string to = string.Empty; 
        if (sesRecord.Mail.Destination != null && sesRecord.Mail.Destination.Count > 0) 
        { 
         to = sesRecord.Mail.Destination.First(); 
        } 

        StringContent requestContent = new StringContent(JsonConvert.SerializeObject(new { MessageId = messageId, To = to }), Encoding.UTF8, "application/json"); 
        HttpResponseMessage response = await client.PostAsync("http://xxxx", requestContent); 
        response.EnsureSuccessStatusCode(); 

        string stringResponse = await response.Content.ReadAsStringAsync(); 
       } 
       catch (HttpRequestException e) 
       { 
        Console.WriteLine($"Request exception: {e.Message}"); 
       } 
      } 
     } 
    } 

これは正しいアプローチではありませんか?私はこれを達成するためにSESとSNSを使用することについても読んでいますが、可能であれば別のレイヤーを追加することは避けたいと思います。

答えて

0

これは実際に自動化されたプロセスとしてセットアップする必要があります。これはAWSが概説したもので、サンプルコード(C#)が含まれています。 http://sesblog.amazon.com/post/TxJE1JNZ6T9JXK/-Handling-span-class-matches-Bounces-span-and-Complaints.pdf

+0

私はその文書を見て、それを何度も読んだ。私は別のシステム(SQS)の複雑さを避けようとしています。それが私が取らなければならないルートなら、私はラムダが何のために誤解していない限り、ラムダは良い選択肢のように見えた。 – Nick

関連する問題