Как я могу просмотреть электронную почту в Rails? - PullRequest
111 голосов
/ 23 августа 2011

Это может быть глупый вопрос, но когда я собираю HTML-письмо в Rails, есть ли особенно простой встроенный способ предварительного просмотра шаблона в браузере, или мне нужно написать какой-то пользовательский контроллер что тянет его как свой взгляд?

Ответы [ 12 ]

120 голосов
/ 18 декабря 2013

Action Mailer теперь имеет встроенный способ предварительного просмотра писем в Rails 4.1 .Например, проверьте это:

# located in test/mailers/previews/notifier_mailer_preview.rb

class NotifierPreview < ActionMailer::Preview
  # Accessible from http://localhost:3000/rails/mailers/notifier/welcome
  def welcome
    Notifier.welcome(User.first)
  end
end
73 голосов
/ 23 августа 2011

Ответ Даниэля - хорошее начало, но если ваши почтовые шаблоны содержат какие-либо динамические данные, это не сработает.Например, предположим, что ваша электронная почта является квитанцией о заказе, и в ней вы распечатываете @order.total_price - используя предыдущий метод, переменная @order будет равна нулю.

Вот небольшой рецепт, который я использую:

Во-первых, поскольку эта функция предварительного просмотра электронной почты определенно предназначена только для внутреннего использования, я настроил несколько общих маршрутов в пространстве имен администратора:

#routes.rb

MySite::Application.routes.draw do
  namespace :admin do
    match 'mailer(/:action(/:id(.:format)))' => 'mailer#:action'
  end
end

Далее я создаю контроллер.В этом контроллере я создаю один метод для каждого шаблона электронной почты.Поскольку большинство электронных писем содержат динамические данные, нам нужно заполнить любые переменные-члены, ожидаемые шаблоном.

Это можно сделать с помощью фиксаторов, но я обычно предпочитаю просто получить некоторые псевдослучайные реальные данные.Помните - это НЕ модульное тестирование - это просто помощь в целях развития.Ему не нужно выдавать один и тот же результат каждый раз - на самом деле - вероятно, лучше, если это не так!

#app/controllers/admin/mailer_controller.rb
class Admin::MailerController < Admin::ApplicationController

  def preview_welcome()
    @user = User.last
    render :file => 'mailer/welcome.html.erb', :layout => 'mailer'
  end

end

Обратите внимание, что когда мы визуализируем шаблон, мы используем layout=>:mailer.Это встраивает тело вашей электронной почты в созданный вами макет электронной почты в формате HTML, а не в типичный макет веб-приложения (например, application.html.erb).

И это во многом.Теперь я могу посетить http://example.com/admin/mailer/preview_welcome, чтобы просмотреть изменения в своем приветственном шаблоне электронной почты.

18 голосов
/ 28 апреля 2012

37Signals также имеет собственный гем тестирования почты под названием mail_view . Это довольно фантастично.

16 голосов
/ 09 ноября 2012

Самая простая настройка, которую я видел, это MailCatcher . Установка заняла 2 минуты, и она работает для новых почтовых программ из коробки.

11 голосов
/ 02 марта 2012

Я использую email_preview . Попробуйте.

5 голосов
/ 09 февраля 2014

Я недавно написал гем с именем Maily для предварительного просмотра, редактирования (файл шаблона) и доставки электронных писем приложения через браузер.Он также предоставляет удобный способ перехвата данных, гибкую систему авторизации и минималистский интерфейс.

Я планировал добавить новые функции в ближайшем будущем, например:

  • Несколько хуков на одно электронное письмо
  • Параметризация писем через пользовательский интерфейс (аргументы метода почтовой программы)
  • Воспроизведение с помощью клавиш перевода (список, выделение, ...)

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

4 голосов
/ 19 марта 2013

Вы можете использовать Предварительный просмотр электронной почты Rails

rails-email-preview screenshot

REP - это механизм рельсов для предварительного просмотра и проверки отправки электронных писем с I18nподдержка, простая интеграция с premailer и дополнительное редактирование CMS с comfort_mexican_sofa .

3 голосов
/ 27 февраля 2017

rails создает предварительный просмотр почты, если вы используете rails g mailer CustomMailer.Вы получите файл CustomMailerPreview в папке spec/mailers/previews.

Здесь вы можете написать свой метод, который вызовет почтовую программу и сгенерирует предварительный просмотр.

Для ex -

class CustomMailerPreview < ActionMailer::Preview
  def contact_us_mail_preview
    CustomMailer.my_mail(user: User.first)
  end
end

Предварительный просмотр всех писем на http://localhost:3000/rails/mailers/custom_mailer

3 голосов
/ 03 января 2017

Я удивлен, что никто не упомянул letter_opener .Это жемчужина, которая будет отображать и открывать электронные письма в виде страницы браузера, когда электронная почта доставляется в dev.

3 голосов
/ 23 февраля 2016

Rails Email Preview помогает нам быстро просматривать электронную почту в веб-браузере в режиме разработки.

1) Добавьте “gem ‘rails_email_preview’, ‘~> 0.2.29’ “ в файл gem и установите пакет.

2) Запустите “rails g rails_email_preview:install”, это создаст инициализатор в папке конфигурации и добавит маршруты.

3) Запустите “rails g rails_email_preview:update_previews” эту папку mailer_previews в каталоге приложения.

Генератор добавит заглушку в каждое письмо, а затем заполнит заглушку фиктивными данными.

Ex:

class UserMailerPreview
def invitation
UserMailer.invitation mock_user(‘Alice’), mock_user(‘Bob’)
end
def welcome
UserMailer.welcome mock_user
end
private
def mock_user(name = ‘Bill Gates’)
fake_id User.new(name: name, email: “user#{rand 100}@test.com”)
end
def fake_id(obj)
obj.define_singleton_method(:id) { 123 + rand(100) }
obj
end
end

4) Параметры в поисковом запросе будут доступны в качестве переменной экземпляра для предварительного просмотра класса. Пример: если у нас есть URL, как “/emails/user_mailer_preview-welcome?user_id=1” @user_id определяется в приветственном методе UserMailerPreview, это помогает нам отправлять почту определенному пользователю.

class UserMailerPreview
def welcome
user = @user_id ? User.find(@user_id) : mock_user
UserMailer.welcome(user)
end
end

5) Чтобы получить доступ к REP URL-адресам, как это

rails_email_preview.rep_root_url
rails_email_preview.rep_emails_url
rails_email_preview.rep_email_url(‘user_mailer-welcome’)

6) Мы можем отправлять электронные письма через REP, это будет использовать настройки почтовой среды. Раскомментируйте эту строку в инициализаторе, чтобы отключить отправку почты в тестовой среде.

config.enable_send_email = false

Источник: Блог RailsCarma: Предварительный просмотр электронной почты в приложениях Rails с помощью Mail_View Gem

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...