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

किसी भी Rack एप्लिकेशन में इनकमिंग ईमेल को निर्बाध रूप से प्रोसेस करें

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

वह चाहता है कि उसका ऐप इनकमिंग ईमेल को संभाले। बिल्कुल Basecamp की तरह।

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

नहीं।

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

क्या यह अच्छा नहीं होगा यदि आप इस भाग को छोड़ सकें, और मानक (प्रसिद्ध) Ruby ऑब्जेक्ट्स के साथ काम कर सकें?

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

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

TL;DR

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

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

Incoming इन शानदार सेवाओं का समर्थन करता है:

  1. SendGrid

  2. Mailgun

  3. Postmark

  4. CloudMailin

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

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

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

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

हमने Incoming! को honeybadger.io के लिए बनाया। हमें त्रुटियों के बारे में चर्चा को सुव्यवस्थित करने का एक तरीका चाहिए था। उदाहरण के लिए, आप केवल अधिसूचना का जवाब देकर किसी भी त्रुटि पर टिप्पणी कर सकते हैं। हमारी अधिकांश टिप्पणियां इस तरह से आती हैं, इसलिए हम इसे एक बड़ी जीत मानते हैं।

इस लेखन के अनुसार, जेम का उपयोग आंतरिक रूप से Honeybadger टीम द्वारा लगभग छह महीने से किया जा रहा है।

मुझे कोड दिखाओ!

यहां CloudMailin का उपयोग करके एक सरल उदाहरण है।

`# पहले, आप एक ईमेल रिसीवर क्लास परिभाषित करते हैं
class EmailReceiver < Incoming::Strategies::CloudMailin
  def receive(mail)
    puts %(Got message from #{mail.to.first} with subject "#{mail.subject}")
  end
end

# फिर आप इसे एक Rack::Request ऑब्जेक्ट खिलाते हैं। और आपका काम हो गया।
req = Rack::Request.new(env)
result = EmailReceiver.receive(req)
# => Got message from whoever@wherever.com with subject "hello world" `

अधिक विवरण के लिए, Readme देखें।

लेकिन आप इसे Rails में कैसे उपयोग करते हैं?

Rails में Incoming! का उपयोग करना उतना ही आसान है। आइए एक नमूना ऐप बनाएं।

आवश्यकता: मुझे टेक्स्टिंग से नफरत है। यह मेरा एक पालतू झुंझलाहट है। लेकिन मुझे अपनी मंगेतर को क्लास में रहते हुए लव नोट्स भेजने में सक्षम होने की आवश्यकता है।

जाहिर है, जवाब एक ईमेल-टू-SMS ब्रिज बनाना है!

सबसे पहले, हम अपना ईमेल रिसीवर सेटअप करते हैं:

`# 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)
    # यहां ट्विलियो मैजिक डालें
  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 `

बस इतना ही।

Incoming! अन्य जेम्स के साथ कैसे तुलना करता है?

इस क्षेत्र में अन्य जेम्स हैं। विशेष रूप से Thoughtbot का Griddler।

हालांकि कुछ स्थान हैं जहां Incoming! खड़ा होता है। यह:

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

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

  3. आपको एक मानक Mail::Message देता है

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

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

हां, हां हमारे पास है।

किसी भी Rack एप्लिकेशन में इनकमिंग ईमेल को निर्बाध रूप से प्रोसेस करें

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

    Yahoo! और इसकी संबद्ध सेवाएं लंबे समय से लोकप्रियता खो रही हैं, फिर भी कई लोग विभिन्न कारणों से अपने Yahoo Mail अकाउंट को बनाए रखते हैं। इसलिए यह जानना उपयोगी है कि आप Yahoo Mail को अन्य इनबॉक्स या ईमेल क्लाइंट में पढ़ सकते हैं। इस तरह, आप अपना Yahoo पत्राचार बनाए रखते हुए Gmail, Outlook और Mozilla

  1. Vue.js में EmailJS का उपयोग करके संपर्क फ़ॉर्म ईमेल भेजें – चरण-दर-चरण मार्गदर्शिका Vue.js में EmailJS का उपयोग करके संपर्क फ़ॉर्म ईमेल भेजें – चरण-दर-चरण मार्गदर्शिका

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

  1. किसी भी iPhone या Android फोटो पर डेप्थ-ऑफ-फील्ड इफेक्ट कैसे प्राप्त करें किसी भी iPhone या Android फोटो पर डेप्थ-ऑफ-फील्ड इफेक्ट कैसे प्राप्त करें

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