तो आपके क्लाइंट ने अभी कॉल किया...
वह चाहता है कि उसका ऐप आने वाले ईमेल . को संभाले . बेसकैंप की तरह।
कोई बात नहीं, आपको लगता है, बहुत सारी सेवाएँ आपको POST द्वारा आपके ऐप पर ईमेल भेज देंगी। आसान होना चाहिए। सही?
नहीं।
प्रत्येक सेवा एक स्वामित्व प्रारूप का उपयोग करती है। कुछ आपको पार्स किया गया ईमेल भेजते हैं, कुछ इसे कच्चा भेजते हैं। कुछ प्रमाणीकरण हस्ताक्षर भेजते हैं। कुछ नहीं।
क्या यह अच्छा नहीं होगा यदि आप इस भाग को छोड़ दें, और मानक (प्रसिद्ध) रूबी वस्तुओं के साथ काम करें?
क्या यह अच्छा नहीं होगा यदि आप अपना कोड दोबारा लिखे बिना विक्रेताओं को बदल सकें?
यदि आप इनकमिंग! का उपयोग कर रहे हैं, तो आप कर सकते हैं।
TL;DR
आवक! एक Rack::Request
लेता है और आपको एक Mail::Message
देता है
समर्थित सेवाएं
इनकमिंग इन बेहतरीन सेवाओं का समर्थन करता है:
-
सेंडग्रिड
-
मेलगन
-
पोस्टमार्क
-
क्लाउडमेलिन
-
वास्तविक मेल सर्वर जो आप स्वयं चलाते हैं (वाह)
सबसे अच्छा, इसे बढ़ाना आसान है। तो यह पहले से ही उन सेवाओं के साथ संगत है जो अभी तक मौजूद नहीं हैं! (वास्तव में नहीं, बल्कि तरह का)
तो मुझे इनबाउंड ईमेल क्यों चाहिए?
आपको ईमेल भेजकर लोगों को कुछ करने का विकल्प देने से उनके ऐसा करने की संभावना बढ़ जाती है।
हमने इनकमिंग का निर्माण किया! Honeybadger.io के लिए। हमें त्रुटियों के बारे में चर्चाओं को कारगर बनाने के लिए एक तरीके की आवश्यकता थी। उदाहरण के लिए, आप केवल सूचना का जवाब देकर किसी भी त्रुटि पर टिप्पणी कर सकते हैं। हमारे ज्यादातर कमेंट इसी तरह आते हैं, इसलिए हम इसे एक बड़ी जीत मानते हैं।
इस लेखन के समय, हनीबैगर टीम द्वारा लगभग छह महीने तक मणि का आंतरिक रूप से उपयोग किया गया है।
मुझे कोड दिखाएं!
यहां CloudMailin का उपयोग करने का एक सरल उदाहरण दिया गया है।
`# First, you define an email receiver class
class EmailReceiver < Incoming::Strategies::CloudMailin
def receive(mail)
puts %(Got message from #{mail.to.first} with subject "#{mail.subject}")
end
end
# Then you feed it a Rack::Request object. And you're done.
req = Rack::Request.new(env)
result = EmailReceiver.receive(req) # => Got message from [email protected] with subject "hello world"
`
अधिक विवरण के लिए, रीडमी देखें।
लेकिन आप इसे रेल में कैसे इस्तेमाल करते हैं?
आवक का उपयोग करना! रेल में उतना ही आसान है। आइए एक नमूना ऐप बनाएं।
आवश्यकता:मुझे टेक्स्टिंग से नफरत है। यह सिर्फ मेरा एक पेशाब है। लेकिन मुझे अपने मंगेतर को प्रेम पत्र भेजने में सक्षम होना चाहिए, जबकि वह कक्षा में है।
जाहिर है, इसका जवाब ईमेल-टू-एसएमएस ब्रिज बनाना है!
सबसे पहले, हम अपना ईमेल रिसीवर सेट करते हैं:
`# app/email_receivers/incoming.rb
class EmailToSmsReceiver < Incoming::Strategies::Postmark
def receive(mail)
send_sms([mail.subject, mail.body].join(": "))
end
private
def send_sms(message)
# Insert twilio magic here
end
end
`
दूसरा, हम अपने रिसीवर में पाइप अनुरोधों के लिए एक नियंत्रक जोड़ते हैं:
`# app/controllers/emails_controller.rb
class EmailsController < ActionController::Base
def create
if EmailToSmsReceiver.receive(request)
render :json => { :status => 'ok' }
else
render :json => { :status => 'rejected' }, :status => 403
end
end
end
`
अरे हाँ, हमें एक मार्ग चाहिए:
`# config/routes.rb
Rails.application.routes.draw do
post '/emails' => 'emails#create'
end
`
बस इतना ही।
आगमन कैसे होता है! अन्य रत्नों से तुलना करें?
इस स्थान में और भी रत्न हैं। विशेष रूप से थॉटबॉट का ग्रिडलर।
हालाँकि कुछ स्थान ऐसे भी हैं जहाँ आवक! अलग दिखना। यह:
-
एकाधिक मेल सेवाओं का समर्थन करता है
-
किसी भी रैक एप्लिकेशन के साथ काम करता है , सिर्फ रेल ही नहीं
-
आपको एक मानक
Mail::Message
. सौंपता है -
आपके उपयोग के मामले के बारे में अनुमान नहीं लगाता है
क्या आपके पास मेरे लिए कोई मीम तस्वीर है?
हाँ, हाँ हम करते हैं।