2009-12-17 64 views
1

我嘗試創建以下功能:您註冊並收到一封電子郵件,如[email protected],並且當您向此電子郵件發送某些內容時,它會自動顯示在您的牆上。 ..所以我的問題是如何實現電子郵件的創建和郵件本身的接收。 任何想法?在Rails中玩弄郵件

+0

我的大問題是創造這些郵件帳戶...或者以某種方式使用某種通配符執行此操作 – 2009-12-17 10:09:24

回答

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 

這是純Ruby碼,不需要對這個片段的Rails。

1

可能有其他的選擇,但是這就是我們如何做到這一點:

  • 後綴
  • Rails的計劃作業

後綴允許你指定一個MySQL表/視圖,以檢查是否電子郵件地址是否存在。您也可以定義郵件轉發。

  • 創建一個數據庫視圖來匹配後綴
    • 要求此視圖應該包含所有的電子郵件地址,並將其轉發到不同的郵件帳戶,比如mailparser。現在
  • 你的Rails可以
    • 使用POP3/IMAP前端的郵件服務器(你應該安裝了Dovecot或快遞即可),以獲取郵件和處理這些
    • 還是去地方上所有郵件所在的磁盤(檢查Postfix配置)並將文件解析爲TMail對象並處理它們。

不同的選項是讓Postfix的通話script/runner與郵件數據,但軌道開機時可以採取長期和大量的內存,所以我更喜歡有一個cronjob/Backgroundjob /工作者要做到這一點。

P.S.電子郵件的創建將通過爲您的Rails應用程序創建一個Model來完成,View將使用該模型作爲基礎。

+0

例如,我擁有域app.com,並且我有一個standart託管與rails等我的託管提供給我的郵件服務器。我只是接收電子郵件的東西像通配符...我應該在這種情況下安裝postfix和其他?我希望你能理解我! – 2009-12-17 10:00:25

+0

我只想接收電子郵件和創建郵件賬戶,如[email protected]不發送電子郵件... – 2009-12-17 10:03:30

+0

我的問題是創建這些郵件賬戶... – 2009-12-17 10:08:39