如何将多个文件附加到ActionMailer邮件对象?(如果没有它附加几个不需要的文本文件.)

Tas*_*ass 7 email attachment actionmailer ruby-on-rails-3

我正在成功生成并发送包含以下代码的电子邮件.

class UserMailer < ActionMailer::Base
  default :from => 'user@user.com',
          :date => Time.now

  def new_user(user)
    mail_subject = ['WELCOME TO ACME, INC', 'USER ACTIVATION']
    @user = user

    mail.attachments['File One.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_one.pdf'))
    mail.attachments['File Two.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_two.pdf'))
    mail.attachments['File Three.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_three.pdf'))
    mail.attachments['File Four.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_four'))

    mail( :to      => user.address.email,
          :subject => mail_subject.join(' ~ ').upcase )

  end
end
Run Code Online (Sandbox Code Playgroud)

但是,该电子邮件包含三个文本文档,这些文档与电子邮件正文的内容相同.我用于邮件程序的视图名为new_user.text.erb.

我怀疑对于我附加的每个pdf文档,也会生成一个纯文本文档,第一个是实际的电子邮件文档正文,其余三个与pdf文档一起附加.

如何在不附加这些(重复)文本文件的情况下附上这些pdf文件?有没有其他人遇到这个?

Rom*_*man 5

尝试使用附件['..']而不是mail.attachments ['..],它以这种方式工作,并且没有观察到重复.

我在Rails 3.0.7上,邮件2.2.19:

我看到的唯一的另一个区别是,我有一个mime_type和内容的哈希.但我认为它也是另一种方式,它只是分配一个不合适的哑剧类型.

attachments['event.ics'] = {:mime_type=>'text/calendar', :content => ics}

mail({
  :to => email,
  :subject => subject,
}) do |format|
  format.text { render :inline => mail_template }
  ...
end
Run Code Online (Sandbox Code Playgroud)