Как мне предотвратить встроенное отображение вложений электронной почты с помощью ActionMailer
-
19-09-2019 - |
Вопрос
Я использую следующий код для отправки электронного письма с вложением в формате PDF:
class StudyMailer < ActionMailer::Base
def notify_office(study, sent_at = Time.now)
subject "Email Subject Goes Here"
recipients 'user@domain.come'
from "#{study.sender.full_name} <#{study.sender.email}>"
sent_on sent_at
body :study => study
for document in study.documents
attachment :content_type => "application/pdf", :body => File.read(document.document.path) #absolute path to .pdf document
end
end
end
Когда электронное письмо отправляется, вложение, похоже, отображается встроенным в виде двоичного кода, а не в виде вложения в формате .pdf.
Как мне отобразить файл .pdf в виде обычного вложения, а не встроенного?
Решение
attachment :content_type => "application/pdf",
:content_disposition => "attachment",
:filename => File.basename(fattach),
:body => File.new(fattach,'rb').read()
Обратите внимание на строку "содержимое-расположение".
Другие советы
Я считаю, что вы должны указать, что электронное письмо состоит из нескольких частей, поэтому добавьте эту строку под from
линия:
content_type "multipart/alternative"
Есть ли шаблон в вашем электронном письме?Если в электронном письме нет шаблона, вложение отображается встроенным, даже если все остальное настроено правильно.Создайте шаблон электронного письма с вложением.
просмотры/уведомитель/вложение.html.erb
<p> Please see attachment </p>
Затем в уведомителе укажите, следует ли использовать этот шаблон.
уведомитель.rb
def my_email_method
...
mail(:template_name => 'attachment', :from => from_address, ...)
end