2016-01-11 21 views
5

मैं एडब्ल्यूएस एसईएस के आधार पर ईमेल सिस्टम द्वारा प्रकाशित पर काम कर रहा हूं। सभी आने वाले ईमेल के लिए मैंने एस 3 बाल्टी में संदेशों को सहेजने के लिए रूटिंग सेट की है, इसलिए मैं उन्हें असीमित रूप से संसाधित कर सकता हूं। मेरी समस्या यह है कि संदेशों को एस 3 बाल्टी में कच्चे प्रारूप में सहेजा जाता है: हेडर, ईमेल बॉडी, आदि + एन्क्रिप्टेड अटैचमेंट (एक विशाल स्ट्रिंग) - सभी एक ही फाइल में।एडब्ल्यूएस एसईएस एस 3 प्रक्रिया इनबाउंड ईमेल

क्या ईमेल संदेश को तोड़ने के अलावा अलग-अलग फाइलों को तोड़ने और एडब्ल्यूएस एसईएस स्तर पर अलग-अलग फाइलों में सहेजने का कोई तरीका है? मैं सीधे प्रारूप में डेटा प्राप्त करने की कोशिश कर रहा हूं जिसे मुझे सीधे एडब्ल्यूएस से चाहिए और प्रक्रिया में एक और प्रसंस्करण चरण जोड़ने से बचें।

यदि एडब्ल्यूएस एसईएस ऐसी सुविधा प्रदान नहीं करता है, तो ऊपर वर्णित परिणाम प्राप्त करने के लिए इन संदेशों को संसाधित करने का उचित तरीका क्या होगा?

+0

अपने कार्यप्रवाह क्या है खोज कर ले गया कच्चे ईमेल? मैं सिर्फ एडब्ल्यूएस एसईएस के साथ शुरू कर रहा हूँ। – johnborges

उत्तर

7

एसईएस स्वचालित रूप से आपके लिए ईमेल को विभाजित करना संभव नहीं है। के रूप में प्रलेखन here प्रति:

अमेज़न एसईएस आप कच्चे, असंशोधित ईमेल, जो आम तौर मल्टीपर्पस इंटरनेट मेल एक्सटेंशन्स (MIME) प्रारूप में है प्रदान करता है।

जब भी एसईएस एस 3 पर एक नई ईमेल फ़ाइल डालता है तो मैं एक लैम्ब्डा फ़ंक्शन ट्रिगर करने के लिए एस 3 या एसएनएस का उपयोग करता हूं। हालांकि, आप चाहते हैं कि लैम्ब्डा फ़ंक्शन फ़ाइल को विभाजित कर सके, फिर उन नई फ़ाइलों को किसी अन्य S3 बाल्टी में लिखें।

+4

क्या कोई दस्तावेज है जिसे आप जानते हैं कि लैम्ब्डा फ़ंक्शन कैसे बनाएं? मेरे पास एसईएस में आने वाले ईमेल हैं जहां मुझे बस एस 3 पर अनुलग्नकों की प्रतिलिपि बनाने की आवश्यकता है। – greener

+0

मार्क हेडर और सामग्री को एस 3 में संग्रहीत एसईएस ऑब्जेक्ट से किसी की जरूरतों को पार्स करने के लिए और अधिक समझ में आता है और फिर स्थानीय रूप से फ़ाइल या डीबी रिकॉर्ड द्वारा उन्हें स्टोर करता है ताकि एस 3 के लिए कोई और पुल अनुरोध की आवश्यकता न हो? एक उपयोग मामला यह है कि बैकएंड में, हम उदाहरण के लिए/व्यवस्थापक/ईमेल देख सकते हैं और जानकारी को दिखाने के लिए प्रत्येक ईमेल को लूप किया गया है (एक वेबमेल क्लाइंट की तरह) और प्रत्येक पृष्ठ लोड को एस 3 अनुरोध को एक पॉज़ के रूप में बनाना होगा स्थानीय निर्देशिका या स्थानीय डीबी अनुरोध, आप उस पर क्या सलाह देंगे? एस 3 के साथ रहें या स्थानीय पर्यावरण का उपयोग करें? – 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

किसी भी व्यक्ति को इस प्रश्न पर बाद में वापस आने के लिए, यह जेएसओएन संरचना का लिंक है जिसे आप एसईएस से लैम्ब्डा फ़ंक्शन का आह्वान करते समय प्राप्त करते हैं।

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" 
    } 
} 
} 
संबंधित मुद्दे