그래서 귀하의 클라이언트가 방금 전화를 걸었습니다...
그는 자신의 앱이 수신 이메일을 처리하기를 원합니다. . 베이스캠프처럼.
문제 없습니다. 많은 서비스에서 POST를 통해 앱으로 이메일을 보낼 것입니다. 쉬워야 합니다. 그렇지?
아닙니다.
각 서비스는 독점 형식을 사용합니다. 일부는 구문 분석된 이메일을 보내고 일부는 원시 상태로 보냅니다. 일부는 인증 서명을 보냅니다. 일부는 그렇지 않습니다.
이 부분을 건너뛰고 표준(잘 알려진) 루비 개체로 작업할 수 있다면 좋지 않을까요?
코드를 다시 작성하지 않고 공급업체를 변경할 수 있다면 좋지 않을까요?
Incoming!을 사용하는 경우 가능합니다.
TL;DR
들어오는! Rack::Request
사용 Mail::Message
를 제공합니다.
지원되는 서비스
Incoming은 다음과 같은 훌륭한 서비스를 지원합니다.
-
센드그리드
-
메일건
-
소인
-
클라우드메일인
-
직접 운영하는 실제 메일 서버(워)
무엇보다 확장하기 쉽습니다. 따라서 아직 존재하지도 않는 서비스와 이미 호환됩니다! (실제로는 아니지만 일종의)
그래서 수신 이메일이 필요한 이유는 무엇입니까?
사람들에게 이메일을 보내 어떤 일을 할 수 있는 선택권을 주면 그 일을 할 가능성이 높아집니다.
우리는 Incoming을 구축했습니다! Honeybadge.io용. 오류에 대한 논의를 간소화할 방법이 필요했습니다. 예를 들어 알림에 답장하기만 하면 오류에 대해 댓글을 달 수 있습니다. 대부분의 댓글이 이런 식으로 오기 때문에 큰 승리라고 생각합니다.
이 글을 쓰는 시점에서 이 보석은 약 6개월 동안 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
`
그게 다야.
Incoming! 다른 보석과 비교하시겠습니까?
이 공간에는 다른 보석이 있습니다. 가장 주목할만한 것은 Thoughtbot의 Griddler입니다.
그러나 Incoming! 눈에 띄는. 그것은:
-
여러 메일 서비스 지원
-
모든 랙 애플리케이션과 함께 작동 , 레일뿐만 아니라
-
표준
Mail::Message
를 건네줍니다. -
사용 사례에 대해 가정하지 않음
나를 위한 밈 사진이 있습니까?
예, 그렇습니다.