2009-12-17 2 views
1

다음과 같은 기능을 만들려고합니다. [email protected]과 같은 이메일을 등록하고 받으십시오.이 이메일에 무엇인가를 보내면 자동으로 벽과 같은 모양으로 나타납니다. .. 그래서 내 문제는 전자 메일의 생성과 전자 메일 자체의 수신을 실현하는 방법입니다. 아이디어가 있으십니까?Rails에서 메일을 가지고 놀기

+0

내 큰 문제는 그 메일 계정을 만드는 ...또는 어떤 이유로 든 일종의 와일드 카드로 수행 –

답변

1

Ruby는 이메일 계정에 로그인 할 때 사용할 수있는 Net/IMAP 및 Net/POP3을 제공합니다. Here's a small tutorial.

POP3

pop = Net::POP3.new("pop.gmail.com", port) 
pop.enable_ssl 
pop.start('YourAccount', 'YourPassword') 
if pop.mails.empty? 
    puts 'No mail.' 
else 
    i = 0 
    pop.each_mail do |m| 
    File.open("inbox/#{i}", 'w') do |f| 
     f.write m.pop 
    end 
    m.delete 
    i += 1 
    end 
    puts "#{pop.mails.size} mails popped." 
end 
pop.finish 

IMAP

imap = Net::IMAP.new('imap.gmail.com') 
imap.authenticate('LOGIN', 'username', 'password') 
imap.select('INBOX') 
imap.search(['ALL']).each do |message_id| 
    msg = imap.fetch(message_id,'RFC822')[0].attr['RFC822'] 
    MailReader.receive(msg) 
    imap.store(message_id, "+FLAGS", [:Deleted]) 
end 
imap.expunge() 
1

발신 전자 메일은 파이처럼 간단합니다. ActionMailer Basics을 살펴보십시오. 이메일을 받기를 원한다면 메일 서버의 메일을 에 지속적으로 가져 오는 데몬을 작성해야합니다. 여기

POP을 통해 메일을 가져 오는 코드 조각 :

require 'net/pop' 

config = { 
    :host => "mail.example.com", 
    :user => "[email protected]", 
    :password => "…", 
    :port => 110, 
    :timeout => 10 
} 

pop = Net::POP3.new(config[:host])  
pop.start(config[:user], config[:password])  

if pop.mails.empty? 
    puts "No mails…" 
else 
    pop.mails.each do |mail| 
    # do stuff with mail 
    end 
end 

이 순수 루비 코드 레일이 조각 필요하지 않습니다이다.

1

이 다른 옵션이 될 수 있지만 우리가 그것을 할 방법은 다음과 같습니다

  • 후위
  • 레일 크론 작업을
  • 후위 당신은 MySQL의 테이블/뷰를 지정할 수 있습니다

이메일 여부를 확인하려면 주소가 존재하는지 여부. 메일 전달을 정의 할 수도 있습니다.

  • 는 후위
    • 에있는 모든 이메일 주소를 포함하고 mailparser 같은 다른 메일 계정으로 전달해야이보기를 요구 사항을 충족하기 위해 DB보기를 만듭니다.
  • 이제 레일 중 하나
    • 는 메일 서버에 POP3/IMAP 프론트 엔드를 사용할 수있는 메일을 가져 그들에게
    • 를 처리하거나상의 위치로 이동 (당신은 Dovecot과 또는 택배를 설치해야합니다) 모든 메일이있는 디스크 (Postfix config를 확인하십시오)와 파일들을 TMail 객체로 파싱하고 처리하십시오.

다른 옵션은 메일 데이터와 후위 전화 script/runner을 만드는 것입니다,하지만 부팅이 긴 메모리를 많이 걸릴 수 있습니다 레일, 그래서 나는이 일을 cronjob에/Backgroundjob/노동자를 가진 선호 .

P. 보기가 기본으로 사용하는 Rails 응용 프로그램 용 모델을 작성하여 전자 메일 작성을 완료합니다.

+0

예를 들어 도메인이 app.com이고 레일이있는 standart 호스팅 등이 있습니다. 내 호스팅에서 메일 서버를 제공합니다. 나는 와일드 카드와 같은 것을 이메일로받는 것만으로 ...이 경우 postfix와 다른 것을 설치해야합니까? 날 이해 해주길 바래! –

+0

이메일을 보내고 [email protected]과 같은 메일 계정을 만들려면 이메일을 보내지 말고 ... –

+0

내 메일 계정을 만드는 중 ... –

관련 문제