ลูกค้าของคุณเพิ่งโทรมา...
เขาต้องการให้แอปจัดการอีเมลขาเข้า . เช่นเดียวกับเบสแคมป์
ไม่มีปัญหา คุณคิดว่าบริการมากมายจะส่งอีเมลถึงคุณโดย POST ไปยังแอปของคุณ ควรจะง่าย ใช่ไหม
ไม่นะ
แต่ละบริการใช้รูปแบบที่เป็นกรรมสิทธิ์ บางคนส่งอีเมลที่แยกวิเคราะห์ให้คุณบางคนส่งแบบดิบ บางคนส่งลายเซ็นรับรองความถูกต้อง บางอย่างไม่ได้
คงจะดีไม่น้อยถ้าคุณสามารถข้ามส่วนนี้ไปและทำงานกับวัตถุทับทิมมาตรฐาน (ที่รู้จักกันดี) ได้
จะดีกว่าไหมถ้าคุณสามารถเปลี่ยนผู้ขาย...โดยไม่ต้องเขียนโค้ดใหม่
หากคุณกำลังใช้ Incoming! คุณก็ทำได้
TL;DR
กำลังมา! รับ Rack::Request
และให้ Mail::Message
. แก่คุณ
บริการที่รองรับ
ขาเข้ารองรับบริการที่ยอดเยี่ยมเหล่านี้:
-
SendGrid
-
Mailgun
-
ตราไปรษณียากร
-
CloudMailin
-
เซิร์ฟเวอร์อีเมลจริงที่คุณดำเนินการเอง (ว้าว)
ดีที่สุดคือขยายได้ง่าย มันเข้ากันได้กับบริการที่ยังไม่มีอยู่แล้ว! (ไม่เชิง แต่ประมาณนั้น)
เหตุใดฉันจึงต้องการอีเมลขาเข้า
การให้ตัวเลือกแก่ผู้คนในการทำบางสิ่งโดยการส่งอีเมลถึงคุณทำให้พวกเขามีแนวโน้มที่จะทำสิ่งนั้นมากขึ้น
เราสร้างขาเข้า! สำหรับ honeybadger.io เราต้องการวิธีปรับปรุงการอภิปรายเกี่ยวกับข้อผิดพลาด ตัวอย่างเช่น คุณสามารถแสดงความคิดเห็นเกี่ยวกับข้อผิดพลาดใดๆ เพียงแค่ตอบกลับการแจ้งเตือน ความคิดเห็นส่วนใหญ่ของเรามาในลักษณะนี้ ดังนั้นเราจึงถือว่านี่เป็นชัยชนะครั้งใหญ่
ในขณะที่เขียนนี้ อัญมณีถูกใช้ภายในโดยทีม Honeybadger เป็นเวลาประมาณหกเดือน
แสดงรหัสให้ฉันดู!
นี่เป็นตัวอย่างง่ายๆ โดยใช้ 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
แต่คุณจะใช้งาน Rails ได้อย่างไร
ใช้ขาเข้า! ในรางก็ง่ายเหมือนกัน มาสร้างแอปตัวอย่างกันเถอะ
ข้อกำหนด:ฉันเกลียดการส่งข้อความ มันเป็นแค่ความขุ่นเคืองของฉัน แต่ฉันต้องสามารถส่งข้อความบอกรักถึงคู่หมั้นของฉันได้ในขณะที่เธออยู่ในชั้นเรียน
แน่นอน คำตอบคือสร้างสะพานเชื่อมอีเมลถึง 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)
# 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
`
แค่นั้นแหละ.
เข้ามาได้อย่างไร! เทียบกับอัญมณีอื่น?
มีอัญมณีอื่น ๆ ในพื้นที่นี้ Griddler ของ Thoughtbot ที่โดดเด่นที่สุด
อย่างไรก็ตามมีบางสถานที่ที่เข้ามา! โดดเด่น มัน:
-
รองรับบริการอีเมลหลายรายการ
-
ทำงานร่วมกับแอปพลิเคชันแร็คใดก็ได้ ไม่ใช่แค่ราง
-
มอบ
Mail::Message
. มาตรฐานให้คุณ -
ไม่ตั้งสมมติฐานเกี่ยวกับกรณีการใช้งานของคุณ
คุณมีรูปมีมให้ฉันไหม
ใช่ ใช่ เราทำ