Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

रेल एक्शन मेलबॉक्स के साथ इनबाउंड ईमेल एकीकरण और समस्या निवारण में महारत हासिल करना

<पी> यदि आपने कभी ईमेल भेजने और प्राप्त करने के संबंध में टिप्पणियों के लिए अनुरोध (आरएफसी) पर ध्यान दिया है, तो आप अपने ईमेल इनबॉक्स में भेजें दबाते समय शामिल तकनीकी जटिलताओं को देखेंगे।

<पी> शुक्र है, कई मौजूदा उपकरण हमारे डेवलपर्स के लिए सरल मेल ट्रांसफर प्रोटोकॉल (एसएमटीपी) सेवा प्रदान करते हैं - एक पोस्टफ़िक्स सर्वर से जिसे आप प्रबंधित करते हैं, सेंडग्रिड, अमेज़ॅन एसईएस, या पोस्टमार्क जैसी पूरी तरह से स्केलेबल भेजने वाली सेवा तक। हालाँकि, वितरण योग्यता या मूल्य निर्धारण कारणों से प्रदाताओं के बीच जाने का अर्थ है प्रत्येक सेवा की विशिष्टताओं को पूरा करने के लिए हमारे ऐप्स को फिर से लिखना या फिर से तैयार करना।

<पी> एक्शन मेलबॉक्स प्रदान करके रेल्स यहां हमारी मदद करती है। इस पोस्ट में, हम जानेंगे कि आप इनबाउंड ईमेल को एकीकृत करने और समस्या निवारण के लिए एक्शन मेलबॉक्स का उपयोग कैसे कर सकते हैं।

<पी> लेकिन पहले, आइए जल्दी से परिभाषित करें कि एक्शन मेलबॉक्स क्या है।

रेल के लिए एक्शन मेलबॉक्स क्या है?

<पी> रूबी ऑन रेल्स में ईमेल प्राप्त करने के लिए एक्शन मेलबॉक्स वैचारिक संपीड़न का उपयोग करता है। वैचारिक संपीड़न का मतलब है कि यह प्रत्येक एसएमटीपी सेवा के बीच सभी छोटे अंतरों को समाहित करता है और आपके इनबाउंड प्रोसेसिंग कोड को सिर्फ एक बार लिखता है। आप किसी नई सेवा के लिए प्रदाता भी लिख सकते हैं।

<पी> ActionMailbox की मुख्य अवधारणा ईमेल प्राप्तकर्ताओं पर आधारित रूटिंग है। इनबाउंड ईमेल प्रदाता स्थापित करने से, किसी डोमेन पर जाने वाले मेल को आपके ऐप में भेज दिया जाएगा। प्रत्येक मेल संदेश को कैसे संसाधित किया जाना चाहिए यह निर्धारित करने के लिए आप प्राप्तकर्ता का पता देख सकते हैं।

<पी> यदि आप परीक्षण ईमेल भेजने के लिए रेल कंडक्टर कार्रवाई से गुजरते हैं, जैसा कि मैंने यहां बताया है:

<पी> रेल एक्शन मेलबॉक्स के साथ इनबाउंड ईमेल एकीकरण और समस्या निवारण में महारत हासिल करना

<पी> फिर आपके इनबाउंड ईमेल में To से प्राप्तकर्ता होंगे , CC , BCC , और X-Original-To फ़ील्ड.

 <पी> प्रत्येक पते का परीक्षण यह निर्धारित करने के लिए किया जाता है कि इसे कहां रूट किया जाएगा, लेकिन मेल संदेश केवल एक बार रूट किया जाता है।

<पी> विकास का एक प्रमुख पहलू वास्तव में आपके सिस्टम से ईमेल का परीक्षण करना है। रेल्स के पास /rails/conductor/ मार्गों के अंतर्गत विकास पृष्ठों का एक सेट है जो आपको अपने विकास सेटअप में स्थानीय रूप से ईमेल इनपुट करने की अनुमति देता है।

<पी> आप ईमेल को मैन्युअल रूप से दर्ज कर सकते हैं, जैसे मैंने उपरोक्त उदाहरण में किया था, या आप सभी हेडर के साथ पूरा ईमेल अपलोड कर सकते हैं।

<पी> संपूर्ण ईमेल (हेडर, संदेश का मुख्य भाग और अनुलग्नकों के साथ) प्राप्त करने का एक शानदार तरीका थंडरबर्ड जैसे ईमेल क्लाइंट का उपयोग करना है। प्रत्येक ईमेल को .eml में सहेजें , टेक्स्ट एडिटर के साथ फ़ाइल खोलें, और पूरी सामग्री को कंडक्टर पेज में कॉपी करें।

<पी> अब आप अधिक जटिल ईमेल प्रोसेसिंग का परीक्षण कर सकते हैं।

रेल ऐप के लिए डेमो पोस्ट करना और टिप्पणी करना

<पी> आइए यह दिखाने के लिए एक छोटा सा डेमो रखें कि यह सब कैसे काम करता है। मैं 37सिग्नल्स का बहुत बड़ा प्रशंसक हूं और मुझे विशेष रूप से हे वर्ल्ड के साथ उनकी ब्लॉगिंग पसंद है। लेकिन वे टिप्पणियों की अनुमति नहीं देते हैं, तो आइए एक क्लोन बनाएं जिसमें प्रत्येक ब्लॉग पोस्ट के लिए टिप्पणियां शामिल हों।

<पी> इस पोस्ट में दिए गए कोड का पालन करें।

<पी> एक नया ऐप बनाएं (मैं टेलविंड सीएसएस का उपयोग कर रहा हूं, लेकिन आप वह चुन सकते हैं जो आपके लिए उपयुक्त हो)। मैं Post के लिए एक्शन टेक्स्ट भी जोड़ूंगा और Comment मॉडल.

 <पी> मचान हमें पोस्ट और टिप्पणियाँ देखने का त्वरित तरीका देता है। post.rb में एसोसिएशन जोड़ें , और पोस्ट संबंधित टिप्पणियाँ प्रदर्शित करेगी:

 <पी> posts/_post.html.erb में , आइए टिप्पणियाँ आंशिक रूप से जोड़ें:

 <पी> अब हमारे पास एक विरल पोस्ट और टिप्पणी दृश्य है। ब्लॉग पर पोस्ट करने के लिए एक इनबाउंड ईमेल सेट करें:

 <पी> यह ApplicationMailbox उत्पन्न करेगा . हम एक रूट स्थापित करेंगे ताकि blog@ के लिए कुछ भी हो सके हमारे पोस्ट मेलबॉक्स में जाता है और एक पोस्ट बनाता है।

 <पी> आप http://localhost:3000/rails/conductor/action_mailbox/inbound_emails पर जाकर इसका त्वरित परीक्षण कर सकते हैं और आपकी सेवा में कुछ ईमेल भेज रहा हूँ। यदि आप blog@whatever.com पर कुछ भेजते हैं , ईमेल हमारे ऐप पर एक इनबॉक्स में डिलीवर किया जाना चाहिए। यदि आप किसी अन्य पते पर ईमेल करते हैं, तो संदेश बाउंस हो जाएगा।

पोस्ट मेलबॉक्स के साथ ईमेल प्राप्त करें

<पी> आइए ईमेल प्राप्त करने और उसे ब्लॉग पर पोस्ट करने के लिए पोस्ट मेलबॉक्स सेट करें। प्रत्येक मेलबॉक्स के पास मूल inbound_email तक पहुंच है और mail वस्तुएं. इनबाउंडईमेल mail के चारों ओर एक आवरण है क्लास का उपयोग रेलों में किया जाता है।

<पी> अपने उद्देश्यों के लिए, हम इस बात में रुचि रखते हैं कि ईमेल किसका है, इसका विषय क्या है और इसकी मुख्य प्रति क्या है। हम इन्हें निकाल सकते हैं और एक Post बना सकते हैं रिकॉर्ड जो हमारे ब्लॉग के मुख पृष्ठ पर दिखाई देगा।

 <पी> अपने ब्लॉग पते पर एक और ईमेल भेजें और फिर इंडेक्स पेज को रीफ्रेश करें। आपको पोस्ट देखनी चाहिए!

<पी> अब किसी पोस्ट के लिए टिप्पणियाँ जोड़ने के लिए। सबसे पहले, किसी भी ईमेल टिप्पणीकार को ईमेल भेजते समय सही पोस्ट का संदर्भ लेना होगा। ऐसा करने का एक आसान तरीका इनबाउंड ईमेल पते में पोस्ट आईडी को एन्कोड करना है (जैसे comment+123@whatever.com , जहां ईमेल पते में 123 एक पोस्ट तत्व को संदर्भित करता है)।

<पी> CommentMailbox जनरेट करें :

 <पी> comment+123 के साथ कोई भी ईमेल भेजने के लिए एक्शन मेलबॉक्स में एक रूट जोड़ें CommentMailbox पर :

 <पी> _post.html.erb में , ईमेल पता जनरेट करने के लिए एक लिंक जोड़ें, ताकि कोई व्यक्ति अपना ईमेल ऐप खोल सके और ईमेल भेज सके:

 <पी> आने वाली ईमेल को CommentMailbox पर भेजा जाएगा और सही ब्लॉग पोस्ट से जुड़ी एक टिप्पणी में पार्स किया गया।

 <पी> process विधि ईमेल के मुख्य भाग और प्रेषक के ईमेल से एक टिप्पणी बनाती है। यह Post का संदर्भ देता है post में पूछताछ की गई विधि. यह विधि पहले प्राप्तकर्ता का ईमेल पता प्राप्त करती है और पोस्ट आईडी निकालने के लिए एक रेगुलर एक्सप्रेशन का उपयोग करती है।

<पी> यदि Post मौजूद नहीं है या टोकन को पार्स नहीं किया जा सकता है, ईमेल बाउंस हो जाता है, जिससे प्रोसेसिंग रुक जाती है।

<पी> अब रेल्स कंडक्टर फॉर्म पर जाएं और प्रत्येक पोस्ट के पते पर एक टिप्पणी भेजें। टिप्पणी इंडेक्स पेज पर पोस्ट के नीचे दिखाई देगी!

एक्शन मेलबॉक्स का उपयोग करने वाला एक अधिक जटिल उदाहरण

<पी> ईमेल वास्तव में बहुत जटिल हैं। कल्पना करें कि आपके पास एक एप्लिकेशन मॉनिटरिंग टूल सेट अप है, आप अपने ऐप में कुछ इस तरह तैनात करते हैं, और आपको अपने एपीएम डैशबोर्ड में त्रुटियां दिखाई देने लगती हैं।

<पी> आपको पार्सिंग त्रुटि दिखाई दे सकती है, या पोस्ट/टिप्पणियों में कई अजीब फ़ॉर्मेटिंग त्रुटियाँ हैं।

<पी> आपका ऐप HTML ईमेल प्राप्त करता है, और आप मूल स्रोत लेते हैं और उसे वेबसाइट पर पोस्ट करते हैं। मेल जेम हमें यह देखने की अनुमति देता है कि आने वाले ईमेल में HTML बॉडी है या नहीं, और हम संदेश से जो भी भाग हमें चाहिए उसे खींच सकते हैं।

<पी> आइए CommentMailbox को बदलें और PostMailbox मल्टीपार्ट ईमेल की जांच करने और HTML भाग को बाहर निकालने के लिए, यदि केवल वही चीज़ बची है तो टेक्स्ट पर वापस जाएं।

<पी> प्रत्येक ईमेल में या तो कोई भाग नहीं होता या एकाधिक भाग होते हैं। पसंदीदा क्रम यह देखना है कि क्या कोई HTML भाग है और उसका उपयोग करें, और यदि नहीं, तो टेक्स्ट भाग प्राप्त करने और उसका उपयोग करने का प्रयास करें। यदि पार्स किए गए HTML या टेक्स्ट अनुभाग नहीं हैं, तो हम पहले की तरह ईमेल बॉडी का उपयोग करेंगे।

<पी> PostMailbox अब थोड़ा अधिक जटिल है:

 <पी> CommentMailbox इसकी एक अलग प्रक्रिया विधि भी है:

 <पी> अब हम किसी के फोन से आने वाले ईमेल को संभाल सकते हैं।

अपने रेल ऐप में एक्शन मेलबॉक्स जोड़ना

<पी> एक्शन मेलबॉक्स के लिए धन्यवाद, हम ईमेल को अपने रेल ऐप के लिए एक अन्य I/O एवेन्यू के रूप में मान सकते हैं। हम वैचारिक संपीड़न का उपयोग करके ईमेल सेवा प्रदाताओं से स्वतंत्र कोड लिख सकते हैं। मैं न्यूनतम कार्य के साथ ईमेल प्रदाताओं को स्थानांतरित करने में भी सक्षम हूं क्योंकि मुझे अंतर्निहित बुनियादी ढांचे के बारे में चिंता करने की ज़रूरत नहीं है।

<पी> ऐपसिग्नल जैसे एपीएम टूल आपके सभी आउटगोइंग एक्शनमेलर्स की निगरानी करने और डिलिवरेबिलिटी पर नज़र रखने के लिए एक सुविधाजनक डैशबोर्ड भी प्रदान करते हैं।

<पी> यहां एक उदाहरण दिया गया है, जिसमें मेरा एक ऐप दिखाया गया है जो बहुत सारे ईमेल भेजता और प्राप्त करता है:

<पी> रेल एक्शन मेलबॉक्स के साथ इनबाउंड ईमेल एकीकरण और समस्या निवारण में महारत हासिल करना

<पी> इससे आपको अपने ऐप के अंदर क्या हो रहा है, इसकी अधिक दृश्यता मिलती है।

समापन

<पी> इस पोस्ट में, हमने सबसे पहले रेल्स के लिए एक्शन मेलर की क्षमताओं को परिभाषित किया। फिर हमने एक डेमो प्रोजेक्ट स्थापित किया जहां हमने आने वाले ईमेल को एकीकृत किया और एक ब्लॉग के लिए पोस्ट बनाने के लिए उन्हें पार्स किया।

<पी> मुझे आशा है कि आपको यह उपयोगी लगा होगा। हैप्पी कोडिंग!

<पी> पी.एस. यदि आप प्रेस से हटते ही रूबी मैजिक पोस्ट पढ़ना चाहते हैं, तो हमारे रूबी मैजिक न्यूज़लेटर की सदस्यता लें और एक भी पोस्ट न चूकें! रेल एक्शन मेलबॉक्स के साथ इनबाउंड ईमेल एकीकरण और समस्या निवारण में महारत हासिल करना

जॉन बीट्टी

<पी> हमारे अतिथि लेखक जॉन ने 2010 में iPhone ऐप्स के लिए एपीआई बनाने के लिए रेल्स सीखा, और उन्होंने पीछे मुड़कर नहीं देखा। वह वर्तमान में हाई स्कूल के छात्रों को प्रोग्रामिंग सिखाते हैं, स्कूल के लिए कस्टम सॉफ्टवेयर और ब्लॉग बनाते हैं।

<पी> जॉन बीटी

द्वारा सभी लेख
  1. एक स्ट्रिंग में समान लंबाई के शब्दों को प्रिंट करने के लिए पायथन प्रोग्राम एक स्ट्रिंग में समान लंबाई के शब्दों को प्रिंट करने के लिए पायथन प्रोग्राम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक स्ट्रिंग को देखते हुए हमें स्ट्रिंग के सभी शब्दों को सम लंबाई के साथ प्रदर्शित करने की आवश्यकता है। दृष्टिकोण स्प्लिट () फ़ंक्शन का उपयोग करके इनपुट स्ट्रिंग को विभाजित करें। के लिए . का

  1. सी++ में इनवॉल्यूटरी मैट्रिक्स की जांच करने का कार्यक्रम सी++ में इनवॉल्यूटरी मैट्रिक्स की जांच करने का कार्यक्रम

    एक मैट्रिक्स दिया गया है M[r][c], r पंक्तियों की संख्या को दर्शाता है और c कॉलम की संख्या को दर्शाता है जैसे कि r =c एक वर्ग मैट्रिक्स बनाता है। हमें यह जांचना है कि दिया गया वर्ग मैट्रिक्स एक इन्वॉल्वरी मैट्रिक्स . है या नहीं या नहीं। इनवॉल्यूटरी मैट्रिक्स एक मैट्रिक्स को इनवॉल्वरी . कहा जाता है म

  1. आईफोन/आईओएस में दो एनएसडीएटी की तुलना कैसे करें? आईफोन/आईओएस में दो एनएसडीएटी की तुलना कैसे करें?

    इस लेख में हम देखेंगे कि स्विफ्ट में दो NSDates की तुलना कैसे करें। सबसे पहले हमें दो NSDates बनाने होंगे। हम इसे इस बार सिम्युलेटर के बजाय खेल के मैदान में करेंगे। आइए पहले दो अलग-अलग तिथियां बनाएं। let dateOne = NSDateComponents() dateOne.day = 5 dateOne.month = 6 dateOne.year = 1993 let dateTwo