Как мне предотвратить встроенное отображение вложений электронной почты с помощью ActionMailer

StackOverflow https://stackoverflow.com/questions/1905305

Вопрос

Я использую следующий код для отправки электронного письма с вложением в формате 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top