답변:
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
spec/mailers/previews
Daniel의 대답 은 좋은 시작이지만 이메일 템플릿에 동적 데이터가 포함되어 있으면 작동하지 않습니다. 예를 들어 이메일이 주문 영수증이고 그 안에 인쇄한다고 가정합니다 @order.total_price. 이전 방법을 사용하면 @order변수가 nil이됩니다.
내가 사용하는 작은 레시피는 다음과 같습니다.
첫째,이 이메일 미리보기 기능은 확실히 내부 전용이므로 관리 네임 스페이스에 몇 가지 일반 경로를 설정했습니다.
#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 을 방문 하여 환영 이메일 템플릿의 변경 사항을 미리 볼 수 있습니다 .
get 'mailer...이제 대신 이어야합니다 match.
37Signals에는 mail_view 라는 자체 메일 테스트 젬도 있습니다 . 꽤 환상적입니다.
내가 본 가장 쉬운 설정은 MailCatcher 입니다. 설치는 2 분이 걸렸으며 새 메일러에서 즉시 사용할 수 있습니다.
email_preview를 사용 합니다 . 시도 해봐.
Rails 이메일 미리보기를 사용할 수 있습니다.

REP는 A가 국제화 지원, 쉽게 premailer 통합, 함께 편집 옵션 CMS와, 미리보기 및 테스트 보내기 이메일에 엔진 레일입니다 comfortable_mexican_sofa .
rails을 사용하는 경우 메일 미리보기를 생성합니다 rails g mailer CustomMailer. 폴더 CustomMailerPreview안에 파일 이 spec/mailers/previews생깁니다.
여기서 메일러를 호출하고 미리보기를 생성하는 메소드를 작성할 수 있습니다.
예를 들어-
class CustomMailerPreview < ActionMailer::Preview
def contact_us_mail_preview
CustomMailer.my_mail(user: User.first)
end
end
http : // localhost : 3000 / rails / mailers / custom_mailer 에서 모든 이메일을 미리 봅니다.
config.action_mailer.preview_path = "#{Rails.root}/spec/mailers/previews"
Rails 이메일 미리보기를 사용하면 개발 모드에서 웹 브라우저에서 이메일을 빠르게 볼 수 있습니다.
1) “gem ‘rails_email_preview’, ‘~> 0.2.29’ “gem 파일에 추가 하고 번들을 설치합니다.
2) 실행 “rails g rails_email_preview:install” 하면 config 폴더에 이니셜 라이저가 생성되고 경로가 추가됩니다.
3) “rails g rails_email_preview:update_previews”앱 디렉토리에서이 상자 mailer_previews 폴더를 실행하십시오 .
Generator는 각 이메일에 스텁을 추가 한 다음 스텁을 모의 데이터로 채 웁니다.
전의:
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) 검색어의 매개 변수는 클래스 미리보기를위한 인스턴스 변수로 사용할 수 있습니다. 예 : “/emails/user_mailer_preview-welcome?user_id=1” @user_id환영 방법에 정의 된 것과 같은 URL이 있으면
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 블로그 : Mail_View Gem을 사용하여 Rails 애플리케이션에서 이메일 미리보기
누구도 letter_opener를 언급하지 않았다는 것에 놀랐습니다 . 이메일이 dev에 전달 될 때마다 브라우저 페이지로 이메일을 렌더링하고 여는 gem입니다.
메일러에서 직접 미리 볼 수있는 방법은 없습니다. 그러나 당신이 쓴 것처럼, 당신은 다음과 같은 컨트롤러를 작성할 수 있습니다.
class EmailPreviewsControllers < ActionController::Base
def show
render "#{params[:mailer]}_mailer/#{params[:method]}"
end
end
하지만 이메일이 올바르게 보이면 테스트하는 가장 좋은 방법은 아니라고 생각합니다.
render "#{params[:mailer]}_mailer/#{params[:method]}", :layout => 'mailer'앱용으로 만든 HTML 이메일 레이아웃에 이메일 본문을 포함합니다.
나는 mails_viewer gem을 선호합니다 . 이 gem은 HTML 템플릿을 tmp 폴더에 저장하므로 매우 유용합니다.