这是一种非常奇怪的行为。我已在EmployeeMailer
中为操作定义了两个模板。
employee_mailer/
salary_slips.html.erb
salary_slips.text.erb
以下是我正在使用的代码:
def salary_slips(salary_record)
mail.attachments['#{@record.employee.name}'] = { mime_type: 'application/pdf', content: @record.create_pdf_file.render }
mail to: @record.employee.official_email, subject: ['Salary Silp for', @date].join(' ')
end
问题是:在客户端,我收到一封以.text.erb
部分开头的电子邮件,最后还包含.html.erb
部分。
开发日志是研究员:
Rendered employee_mailer/salary_slips.html.erb (4.2ms)
Rendered employee_mailer/salary_slips.text.erb (0.5ms)
Rendered employee_mailer/salary_slips.text.erb (0.5ms)
我认为它应该只呈现.html.erb
部分。有什么方法可以控制,只在一封电子邮件中发送.html.erb
部分。
我已经使用format
块以下列方式明确说明格式:
mail to: @record.employee.official_email, subject: ['Salary Slip for', @date].join(' ') do |format|
format.html { render 'salary_slips' }
format.text { render 'salary_slips' }
end
答案 0 :(得分:1)
这是ActionMailer的默认行为 - 请参阅http://guides.rubyonrails.org/action_mailer_basics.html#sending-multipart-emails
如果您只想呈现HTML部分,则必须删除.text.erb模板。
答案 1 :(得分:0)
class UserMailer < ApplicationMailer
default from: 'notifications@example.com'
def welcome_email(user)
@user = user
@url = 'http://example.com/login'
mail(to: @user.email,
subject: 'Welcome to My Awesome Site') do |format|
format.html { render 'another_template' }
format.text { render text: 'Render text' }
end
end
端
您可以选择回复格式。更多细节 http://guides.rubyonrails.org/action_mailer_basics.html
答案 2 :(得分:0)
发布答案很奇怪,但是当我将mail.attachments
更改为attachments
时,它就解决了。这是我改变的行:
attachments['#{@record.employee.name}'] = { mime_type: 'application/pdf', content: @record.create_pdf_file.render }
现在,它只向一个收件人发送HTML部分,而不是纯文本部分。