Как увидеть электронную почту в браузере с помощью рельсов - PullRequest
6 голосов
/ 16 февраля 2012

Я работаю над электронной почтой для моего приложения rails. Прямо сейчас единственный способ, которым я знаю, чтобы просмотреть электронную почту - это отправить ее себе. Как получить «daily_summary.html.haml», который находится в папке «notifications» в папке «views», для рендеринга в браузере? Я думал, что я должен просто добавить маршрут:

match 'notifications' => 'notifications/daily_summary'

Но тогда я не знаю, как справляться с контроллером / действием.

Ответы [ 4 ]

10 голосов
/ 25 июля 2014

Начиная с 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

Дополнительную информацию можно найти в документации ActionMailer API

9 голосов
/ 16 февраля 2012

Существует драгоценный камень под названием Letter Opener, который звучит так, как будто он сделает именно то, что вы ищете. Он просматривает сообщения электронной почты в браузере, а не отправляет их. Я не использовал это сам. Если это сработает, я бы хотел услышать об этом!

https://github.com/ryanb/letter_opener

Есть еще один, который называется Mail Viewer, но он не был активно разработан в течение долгого времени. Вероятно, лучше держаться подальше:

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

1 голос
/ 13 марта 2015

Для 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.) В маршрутах .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 прямо в браузере.

1 голос
/ 16 февраля 2012

Я бы посмотрел на actionmailer_extensions . Это заставляет ActionMailer записывать исходящие электронные письма на диск в виде файлов .eml. Этого может быть достаточно для ваших целей (просто установите скрипт для просмотра выходного каталога на наличие новых файлов и откройте их в предпочитаемом почтовом клиенте), или вы можете разветвлять гем и изменять его напрямую (его исходный код очень прост), чтобы написать Файлы .html и откройте их в своем браузере.

Надеюсь, это поможет!

...