তাই আপনার ক্লায়েন্ট এইমাত্র কল করেছে...
তিনি চান তার অ্যাপ আগত ইমেল পরিচালনা করুক . ঠিক বেসক্যাম্পের মত।
কোন সমস্যা নেই, আপনি মনে করেন, অনেক পরিষেবা আপনাকে আপনার অ্যাপে 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"
`
আরো বিস্তারিত জানার জন্য, Readme দেখুন।
কিন্তু আপনি কীভাবে এটি রেলে ব্যবহার করবেন?
ইনকামিং ব্যবহার করে! রেল মধ্যে ঠিক হিসাবে সহজ. আসুন একটি নমুনা অ্যাপ তৈরি করি।
প্রয়োজনীয়তা:আমি টেক্সট ঘৃণা করি। এটা শুধু আমার একটি প্রস্রাব. কিন্তু আমার বাগদত্তার ক্লাসে থাকাকালীন তাকে প্রেমের নোট পাঠাতে সক্ষম হতে হবে।
স্পষ্টতই, উত্তর হল একটি ইমেল-টু-এসএমএস সেতু তৈরি করা!
প্রথম, আমরা আমাদের ইমেল রিসিভার সেট আপ করি:
`# 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
দেয় -
আপনার ব্যবহারের ক্ষেত্রে অনুমান করে না
আপনার কি আমার জন্য একটি মেমে ছবি আছে?
হ্যাঁ, হ্যাঁ আমরা করি৷
৷