Я думаю, что если вы не определите тело для письма, части будут неправильно настроены, и в итоге вы получите огромный файл «noname», который включает заголовки частей для всех вложений.
Используя этот почтовый код:
class Mailer < ActionMailer::Base
def generic(args)
args.reverse_merge! to: 'e@mail.com', from: 'e@mail.com'
add_attachments! args.delete(:attachments)
mail(args)
end
protected
def add_attachments!(*files)
files.flatten.compact.each do |file|
attachments[File.basename(file)] = File.read(file)
end
end
end
Когда я делаю это, я получаю отдельный файл без имени:
Mailer.generic(attachments: [File.open('/path/to/file1.txt'), File.open('/path/to/file2.csv')]).deliver
Когда я делаю это, я получаю 2 отдельных файла с правильными именами:
Mailer.generic(body: '', attachments: [File.open('/path/to/file1.txt'), File.open('/path/to/file2.csv')]).deliver