Как я могу прикрепить несколько файлов к почтовому объекту ActionMailer? (Без него также добавляются несколько нежелательных текстовых файлов.) - PullRequest
7 голосов
/ 21 апреля 2011

Я успешно генерирую и отправляю электронное письмо со следующим кодом.

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

Однако электронное письмо содержит три текстовых документа, которые идентичны содержанию тела письма.Представление, которое я использую для почтовой программы, называется new_user.text.erb.

Я подозреваю, что для каждого присоединяемого документа PDF также создается простой текстовый документ, первым из которых является фактическое электронное письмоТело документа и остальные три прилагаются вместе с документами в формате PDF.

Как я могу прикрепить эти документы в формате PDF, не прикрепляя также эти (повторяющиеся) текстовые документы?Кто-нибудь еще сталкивался с этим?

1 Ответ

5 голосов
/ 06 мая 2011

Попробуйте использовать вложения ['..'] вместо mail.attachments ['..], здесь это работает, дубликатов не наблюдается.

Я на Rails 3.0.7, почта 2.2.19:

Единственное другое отличие, которое я вижу, заключается в том, что у меня есть хеш с mime_type и content. Но я думаю, что это сработало и по-другому, просто присваивалось пантомиме, что было недостаточно.

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

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