2009-05-02 1 views
2

사용자가 응용 프로그램 특정 주소로 전자 메일을 보낼 수있는 기능을 구현하고 싶습니다. 37 시그널의 배낭 (및 다른 일부 응용 프로그램)과 마찬가지로 메시지를 구문 분석하고 특정 작업을 수행합니다.레일의 앱 특정 주소로 전송 된 이메일 처리에 대한 우수 사례가 있습니까?

누구나 비슷한 것을 한 경우 어떻게했는지에 대해 저를 채울 수 있습니까? 나는 그것을 처리 할 수 ​​있도록 높은 수준에서 앱으로 이메일을 '가져 오는'방법에 대해 확신하지 못합니다.

감사합니다.

답변

1

나는 최근에 구현 한 그 레일의 정확한 기능을 제공합니다. Advanced Rails Recipes book에서 'POP 또는 IMAP을 통해 신뢰할 수있는 전자 메일 받기'를 살펴 보도록 조언합니다.

개인적으로이 문제를 해결하고 실행하는 가장 좋은 방법은 내가 할 수있는 것보다 훨씬 나은 방법을 찾아 냈습니다. 행운을 빈다. :

+0

메일 서버를 실행하거나 플러그인 (fetcher)을 사용하여 이메일을 가져 와서 가져오고 처리하는 방법을 조사한 결과 후자가 나를위한 최선의 접근법. 답변 해 주셔서 감사합니다. – 46and2

0

포트 25를 통해 메일을받을 Ruby SMTP mailserver을 실행 한 다음 원하는대로 구문 분석/해석 할 수 있습니다.

대안 솔루션 procmail (또는 유사한)를 실행하는 것입니다, 주제에 패턴 일치하고 .procmailrc 파일에 구성 스크립트를 (호출

(즉 당신이 당신의 질문에 태그를 추가 한 방법이기 때문에 나는 루비를 말한다)). 그러나 대량 메일의 경우에는 그렇게 확장되지 않을 수 있습니다.

0

ActionMailercan receive e-mails뿐 아니라 보낼 수도 있습니다. 이것이 어떻게 수행되었는지는 기억이 나지 않지만 문서를 보면 거기에서 볼 수 있습니다. 그러나 메모리에서 전자 메일은 procmail을 통해 스크립트 디렉토리의 스크립트로 파이프됩니다.

a book on the subject as well 인 것 같습니다.

행운을 빈다. :) 여기

1

내가 POP 서버에서 가져 오는 방법은 다음과 같습니다

require 'net/pop' 

pop = Net::POP3.new('mail.yourdomain.com') 
pop.start(account, password) 
pop.each_mail do |m| 
    email = TMail::Mail.parse(m.pop) 
    email.base64_decode 
    OttoMailer.process_email_in(email, m.unique_id) 
    m.delete 
end 
pop.finish 
관련 문제