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

किसी भी रैक एप्लिकेशन में इनबाउंड ईमेल को हैंडल करें

तो आपके क्लाइंट ने अभी कॉल किया...

वह चाहता है कि उसका ऐप आने वाले ईमेल . को संभाले . बेसकैंप की तरह।

कोई बात नहीं, आपको लगता है, बहुत सारी सेवाएँ आपको POST द्वारा आपके ऐप पर ईमेल भेज देंगी। आसान होना चाहिए। सही?

नहीं।

प्रत्येक सेवा एक स्वामित्व प्रारूप का उपयोग करती है। कुछ आपको पार्स किया गया ईमेल भेजते हैं, कुछ इसे कच्चा भेजते हैं। कुछ प्रमाणीकरण हस्ताक्षर भेजते हैं। कुछ नहीं।

क्या यह अच्छा नहीं होगा यदि आप इस भाग को छोड़ दें, और मानक (प्रसिद्ध) रूबी वस्तुओं के साथ काम करें?

क्या यह अच्छा नहीं होगा यदि आप अपना कोड दोबारा लिखे बिना विक्रेताओं को बदल सकें?

यदि आप इनकमिंग! का उपयोग कर रहे हैं, तो आप कर सकते हैं।

TL;DR

आवक! एक Rack::Request लेता है और आपको एक Mail::Message देता है

समर्थित सेवाएं

इनकमिंग इन बेहतरीन सेवाओं का समर्थन करता है:

  1. सेंडग्रिड

  2. मेलगन

  3. पोस्टमार्क

  4. क्लाउडमेलिन

  5. वास्तविक मेल सर्वर जो आप स्वयं चलाते हैं (वाह)

सबसे अच्छा, इसे बढ़ाना आसान है। तो यह पहले से ही उन सेवाओं के साथ संगत है जो अभी तक मौजूद नहीं हैं! (वास्तव में नहीं, बल्कि तरह का)

तो मुझे इनबाउंड ईमेल क्यों चाहिए?

आपको ईमेल भेजकर लोगों को कुछ करने का विकल्प देने से उनके ऐसा करने की संभावना बढ़ जाती है।

हमने इनकमिंग का निर्माण किया! 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
`

बस इतना ही।

आगमन कैसे होता है! अन्य रत्नों से तुलना करें?

इस स्थान में और भी रत्न हैं। विशेष रूप से थॉटबॉट का ग्रिडलर।

हालाँकि कुछ स्थान ऐसे भी हैं जहाँ आवक! अलग दिखना। यह:

  1. एकाधिक मेल सेवाओं का समर्थन करता है

  2. किसी भी रैक एप्लिकेशन के साथ काम करता है , सिर्फ रेल ही नहीं

  3. आपको एक मानक Mail::Message . सौंपता है

  4. आपके उपयोग के मामले के बारे में अनुमान नहीं लगाता है

क्या आपके पास मेरे लिए कोई मीम तस्वीर है?

हाँ, हाँ हम करते हैं।

किसी भी रैक एप्लिकेशन में इनबाउंड ईमेल को हैंडल करें


  1. किसी भी ईमेल ऐप में Yahoo मेल कैसे पढ़ें

    जबकि याहू! और इसकी संबद्ध सेवाएं लंबे समय से पक्ष से बाहर हो रही हैं, अभी भी कई लोग विभिन्न कारणों से अपने याहू मेल खातों को पकड़ रहे हैं, यही कारण है कि कई उपयोगकर्ताओं को यह जानना उपयोगी हो सकता है कि याहू मेल को पढ़ना संभव है अन्य इनबॉक्स या ईमेल क्लाइंट। इस तरह, आप जीमेल, आउटलुक और मोज़िला थंडरब

  1. ईमेलजेएस के साथ अपने Vue.js एप्लिकेशन से ईमेल कैसे भेजें

    कुछ दिनों पहले मैंने एक साधारण Vue प्रोजेक्ट पर काम करने का फैसला किया और मेरे द्वारा अभी बनाए गए संपर्क के माध्यम से ईमेल भेजने की आवश्यकता थी। जब भी कोई मेरा संपर्क फ़ॉर्म भरता है, तो मैं हर बार एक स्वचालित ईमेल प्राप्त करना चाहता था। तो मुझे ईमेलजे पर खोजना और ठोकर खाना पड़ा। मैंने इस लेख को लि

  1. किसी भी iPhone या Android पर फ़ोटो में 'गहराई प्रभाव' कैसे प्राप्त करें

    iPhone 7 पोर्ट्रेट मोड में भी शानदार तस्वीरें ले सकता है। यदि आप पोर्ट्रेट मोड के साथ कोई फोटो क्लिक करते हैं, तो यह उसमें डेप्थ ऑफ फील्ड इफेक्ट जोड़ देगा। बेशक, इस तरह के प्रभाव से तस्वीरें क्लिक करने के लिए आपको एक iPhone7 या एक डीएसएलआर या इसी तरह के कैमरे की आवश्यकता होती है। लेकिन अच्छी खबर यह