2016-01-11 21 views
5

AWS SESに基づく電子メールシステムで公開しています。すべての着信電子メールについて、S3バケットにメッセージを保存するようにルーティングを設定しました。非同期で処理することができます。私が持っている問題は、S3バケツのメッセージは、ヘッダー、電子メール本文など+暗号化された添付ファイル(巨大な文字列)であるということです。AWS SES S3インバウンドメールを処理する

AWS SESレベルで別々のファイルに添付ファイルから電子メールメッセージを分割して保存する方法はありますか?私はAWSから直接必要な形式でデータを取得しようとしており、プロセスに別の処理ステップを追加することは避けています。

AWS SESがこのような機能を提供しない場合、上記の結果を得るためにこれらのメッセージを処理する正しい方法は何でしょうか?

+0

をリンクから、そのページで;-)

に到着するために、いくつかの検索を取った、ラムダ通知は次のようになります生のメール?私はAWS SESを使い始めました。 – johnborges

答えて

7

SESが自動的にメールを分割するようには見えません。

アマゾンSESはあなたに、通常MIME(Multipurpose Internet Mail Extensions)の形式で ある生、変更されていない電子メールを、提供:ドキュメントhereあたりとおり。

SESが新しいメールファイルをS3に送信するたびに、私はS3またはSNSを使用してラムダ機能をトリガーします。ラムダ関数は、ファイルを分割して別のS3バケットに書き込むことができます。

+4

ラムダ関数の作成方法を説明しているドキュメントがありますか?私はSESへの着信電子メールを持っています。そこでは、単に添付ファイルをS3にコピーする必要があります。 – greener

+0

Markは、s3に格納されているsesオブジェクトから必要なヘッダーとコンテンツを解析し、ファイルまたはdbレコードのいずれかでローカルに保存すると、S3にさらにプル要求は不要ですか?ユースケースは、バックエンドでは/ admin/emailsを見ることができ、各電子メールはループして情報を表示することができます(Webメールクライアントのように)。各ページの読み込みは、s3要求をローカルディレクトリまたはローカルdb要求、あなたはそれについて何をアドバイスしますか? S3にとどまったり、ローカル環境を利用したりしますか? – Birdy

0

ラムダの書き方についての質問について。ここに私たちのラムダの一部があります。それを取り除くための主なものは、parseEvent関数です。そしてdata.event.Records [0]あなたが

exports.handler = function(event, context, callback) { 

    var AWS = require('aws-sdk'); 

    // Validate characteristics of a SES event record. 
    if (!event || 
     !event.hasOwnProperty('Records') || 
     event.Records.length !== 1 || 
     event.Records[0].hasOwnProperty('eventSource') || 
     event.Records[0].eventSource !== 'aws:ses' || 
     event.Records[0].eventVersion !== '1.0') { 
     callback(null, {'disposition':'STOP_RULE_SET'});  
    } 

    email = data.event.Records[0].ses.mail; 
    subjectLine = event.Records[0].ses.mail.commonHeaders.subject; 
} 

の詳細を与えるキーはevent.Record [0] .ses.mailです。残念ながら、私はGoogleの検索を介してそれの構造を見つけることができません、私は前にそれを見たと確信しています。

5

この質問に後で戻ってくる人にとって、これはSESからラムダ関数を呼び出すときに得られるJSON構造へのリンクです。

http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-notifications-examples.html

それはダウンロードして閲覧するためのワークフロー何、

{ 
"notificationType": "Received", 
"receipt": { 
    "timestamp": "2015-09-11T20:32:33.936Z", 
    "processingTimeMillis": 406, 
    "recipients": [ 
     "[email protected]" 
    ], 
    "spamVerdict": { 
     "status": "PASS" 
    }, 
    "virusVerdict": { 
     "status": "PASS" 
    }, 
    "spfVerdict": { 
     "status": "PASS" 
    }, 
    "dkimVerdict": { 
     "status": "PASS" 
    }, 
    "action": { 
     "type": "S3", 
     "topicArn": "arn:aws:sns:us-east-1::example-topic", 
     "bucketName": "my-S3-bucket", 
     "objectKey": "\email" 
    } 
}, 
"mail": { 
    "timestamp": "2015-09-11T20:32:33.936Z", 
    "source": "[email protected]zonses.com", 
    "messageId": "d6iitobk75ur44p8kdnnp7g2n800", 
    "destination": [ 
     "[email protected]" 
    ], 
    "headersTruncated": false, 
    "headers": [ 
     { 
      "name": "Return-Path", 
      "value": "<[email protected]zonses.com>" 
     }, 
     { 
      "name": "Received", 
      "value": "from a9-183.smtp-out.amazonses.com (a9-183.smtp-out.amazonses.com [54.240.9.183]) by inbound-smtp.us-east-1.amazonaws.com with SMTP id d6iitobk75ur44p8kdnnp7g2n800 for [email protected]; Fri, 11 Sep 2015 20:32:33 +0000 (UTC)" 
     }, 
     { 
      "name": "DKIM-Signature", 
      "value": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=ug7nbtf4gccmlpwj322ax3p6ow6yfsug; d=amazonses.com; t=1442003552; h=From:To:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Date:Message-ID:Feedback-ID; bh=DWr3IOmYWoXCA9ARqGC/UaODfghffiwFNRIb2Mckyt4=; b=p4ukUDSFqhqiub+zPR0DW1kp7oJZakrzupr6LBe6sUuvqpBkig56UzUwc29rFbJF hlX3Ov7DeYVNoN38stqwsF8ivcajXpQsXRC1cW9z8x875J041rClAjV7EGbLmudVpPX 4hHst1XPyX5wmgdHIhmUuh8oZKpVqGi6bHGzzf7g=" 
     }, 
     { 
      "name": "From", 
      "value": "[email protected]" 
     }, 
     { 
      "name": "To", 
      "value": "[email protected]" 
     }, 
     { 
      "name": "Subject", 
      "value": "Example subject" 
     }, 
     { 
      "name": "MIME-Version", 
      "value": "1.0" 
     }, 
     { 
      "name": "Content-Type", 
      "value": "text/plain; charset=UTF-8" 
     }, 
     { 
      "name": "Content-Transfer-Encoding", 
      "value": "7bit" 
     }, 
     { 
      "name": "Date", 
      "value": "Fri, 11 Sep 2015 20:32:32 +0000" 
     }, 
     { 
      "name": "Message-ID", 
      "value": "<[email protected]>" 
     }, 
     { 
      "name": "X-SES-Outgoing", 
      "value": "2015.09.11-54.240.9.183" 
     }, 
     { 
      "name": "Feedback-ID", 
      "value": "1.us-east-1.Krv2FKpFdWV+KUYw3Qd6wcpPJ4Sv/pOPpEPSHn2u2o4=:AmazonSES" 
     } 
    ], 
    "commonHeaders": { 
     "returnPath": "[email protected]zonses.com", 
     "from": [ 
      "[email protected]" 
     ], 
     "date": "Fri, 11 Sep 2015 20:32:32 +0000", 
     "to": [ 
      "[email protected]" 
     ], 
     "messageId": "<[email protected]>", 
     "subject": "Example subject" 
    } 
} 
} 
関連する問題