我正在处理我的rails应用程序的电子邮件。现在,我知道查看电子邮件的唯一方法就是将其发送给自己。如何在“views”文件夹下的“notifications”文件夹中获取“daily_summary.html.haml”,以便在浏览器中呈现?我在想我应该添加路线:
match 'notifications' => 'notifications/daily_summary'
但后来我不知道如何处理控制器/动作方面的问题。
答案 0 :(得分: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
个对象的方法。可以使用以下URL在开发环境中访问它们:
http://localhost:3000/rails/mailers/[preview_class_name]/[method_name]
就我而言:
http://localhost:3000/rails/mailers/weekly_report/weekly_report
中找到更多信息
答案 1 :(得分:8)
有一个名为Letter Opener的宝石,听起来就像你正在寻找的那样。它会在浏览器中预览电子邮件,而不是发送它们。我自己没有用过它。如果它有效,我很乐意听到它!
https://github.com/ryanb/letter_opener
还有一个名为Mail Viewer但在相当长一段时间内尚未积极开发。可能更好地指出明确:
答案 2 :(得分:1)
我会看一下actionmailer_extensions。它使ActionMailer将外发电子邮件作为.eml文件写入磁盘。这可能足以满足您的需要(只需设置一个脚本来查看新文件的输出目录并在您首选的电子邮件客户端中打开它们),或者您可以分叉gem并直接修改它(它的源代码很简单)来编写.html文件,然后在浏览器中打开它们。
希望有所帮助!
答案 3 :(得分:1)
对于Rails 3,现在有一个gem 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('name@example.com', 'Jill Smith')
mail = UserMailer.forgot_password(user)
end
end
在这个模型中,您可以根据需要命名方法,但它们与UserMailer方法相对应是有道理的。
4.。)要查看转到/mail_view
以获取MailPreview中所有方法的列表。单击其中一个以在浏览器中查看HTML预览。