2012-02-15 43 views
6

我的電子郵件工作我的Rails應用程序看到瀏覽器的電子郵件的意見。現在唯一的辦法,我知道,查看電子郵件是發給自己。如何獲得「daily_summary.html.haml」,這是在「通知」文件夾下的「意見」的文件夾,在瀏覽器中呈現?我想我應該只是添加路線:如何使用Rails

match 'notifications' => 'notifications/daily_summary' 

但後來我不知道如何處理控制器/動作方面的東西。

+1

可能的重複[如何在Rails中預覽電子郵件?](http://stackoverflow.com/questions/7165064/how-do-i-preview-emails-in-rails) – 2015-05-30 15:47:42

回答

1

我看看actionmailer_extensions。它使ActionMailer將外發電子郵件作爲.eml文件寫入磁盤。這可能足以滿足您的需求(只需設置一個腳本來查看輸出目錄中的新文件並在您的首選電子郵件客戶端中打開它們),或者您可以將gem分叉並直接對其進行修改(它的源代碼非常簡單)來編寫.html文件,然後在瀏覽器中打開它們。

希望有幫助!

8

有一個名爲開信刀的寶石,聽起來像它會做你正在尋找的。它在瀏覽器中預覽電子郵件而不是發送它們。我自己並沒有使用它。如果它有效,我很樂意聽到它,但!

https://github.com/ryanb/letter_opener

還有另外一個叫做郵件閱讀器,但它並沒有在相當一段時間內得到了大力發展。可能是更好的明確指導:

https://github.com/37signals/mail_view

+0

開信人似乎在工作。唯一的問題是,它打開的是'plain.html'版本的電子郵件,而不是'rich.html'版本(平原似乎對應於我的電子郵件的文本版本和豐富的html版本)。任何想法如何我可以改變這一點? – John 2012-02-16 13:58:08

+0

看起來,在'deliver'塊中,您可以指定'text_part'塊和'html_part'塊。您必須在html_part塊中將'content_type'設置爲''text/html''。看看是否有效。 – 2012-02-16 16:09:54

+0

我在這裏有點無知。 。你在哪裏看到這些塊,我可以在哪裏設置content_type? – John 2012-02-16 16:41:00

10

因爲Rails的4.1,郵件預覽是本地人。 所有你需要做的是在這個目錄下創建一個類:

test/mailers/previews/ 

的類必須擴展ActionMailer::Preview

class WeeklyReportPreview < ActionMailer::Preview 
    def weekly_report 
     WeeklyReport.weekly_report(User.first) 
    end 
end 

寫入方法返回Mail::Message對象。他們在使用這個網址的開發環境進行訪問:

http://localhost:3000/rails/mailers/[preview_class_name]/[method_name] 

在我的情況:

http://localhost:3000/rails/mailers/weekly_report/weekly_report 

更多信息可以在ActionMailer API documentation

+0

對於任何在這裏結束的人 - 我有一個事實,許多參考創建預覽測試/郵寄等,但如果你有規範測試它的實際規格/郵件發送......否則工程治療! – Ben 2017-05-14 01:38:33

1

對於Rails 3中可以發現現在有一個寶石, mail_view,這是包括在Rails的4.1。下面是set-up的鏈接。這很容易。

1)添加到Gemfile中:

gem 'mail_view', :git => https://github.com/basecamp/mail_view.git' 
# or 
gem "mail_view", "~> 2.0.4" 

2)在routes.rb中:

# config/routes.rb 
if Rails.env.development? 
    mount MailPreview => 'mail_view' 
end 

3)創建MailPreview模型:

# app/mailers/mail_preview.rb or lib/mail_preview.rb 
class MailPreview < MailView 
... 
def forgot_password 
    user = Struct.new(:email, :name).new('[email protected]', 'Jill Smith') 
    mail = UserMailer.forgot_password(user) 
end 
end 

在這模型,你可以爲任何你想要的方法命名,但它們對應於UserMailer方法是有道理的。

4.)要查看有關MailPreview中所有方法的列表,請轉至/mail_view。點擊其中一個即可在瀏覽器中查看HTML預覽。