Я недавно установил несколько почтовых программ и пытаюсь получить макет для всех почтовых программ. Это было сделано путем создания ApplicationMailer.rb
, который содержит следующее:
class Application < ActionMailer::Base
layout 'mailer'
end
У меня есть файл mailer.html.erb
в app/views/layouts
и mailer.text.erb
в том же месте.
mailer. html .erb:
<!DOCTYPE HTML>
<HTML lang="en">
<head>
</head>
<body>
<%= yield %>
<hr>
<footer>
Message sent from "xxx"
</footer>
</html>
Это хорошо работает с нашим PasswordMailer:
class PasswordMailer < ApplicationMailer
def password_changed(user)
@user = user
mail(:to => user.email, :subject => t('mailer.email_topic_password_changed'))
end
end
Но этот макет не работает с моим другим почтовым ящиком:
class SystemImportMailer < ApplicationMailer
def notify_email(params)
mail(to: params[:email],
subject: "#{t('admin.import_export.import_file')}"
body: params[:body])
end
end
Эта почтовая программа просто показывает тело как обычно, без включения сообщения в макет. Если я удалю строку body: params[:body])
, появится сообщение макета. Я не уверен, почему это так.
Спасибо
РЕДАКТИРОВАТЬ: У меня также есть этот почтовый клиент, использующий другую технику добавления тела.
class ScheduleMailer < ApplicationMailer
def send_start_email(params)
mail(to: params[:to], subject: I18n.t('schedule.start_subject')) do |format|
format.text do
render :text => I18n.t('schedule.start_message', type: params[:type], key: params[:key], company: params[:company]
end
end
end
end