Como posso evitar anexos de email de renderização em linha usando ActionMailer
-
19-09-2019 - |
Pergunta
Eu estou usando o seguinte código para enviar um e-mail com um anexo 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
Quando o e-mail é enviado, o anexo parece tornar em linha como código binário, em vez de como um anexo .pdf.
Como faço para tornar o .pdf como um anexo normal, em vez de em linha?
Solução
attachment :content_type => "application/pdf",
:content_disposition => "attachment",
:filename => File.basename(fattach),
:body => File.new(fattach,'rb').read()
Observe a linha de disposição do conteúdo.
Outras dicas
Eu acredito que você tem que indicar a natureza de várias partes do e-mail, então adicionar esta linha sob a linha from
:
content_type "multipart/alternative"
O seu e-mail tem um modelo? Se o e-mail não tem um modelo, os shows de fixação-se em linha, mesmo se tudo o resto está configurado corretamente. Criar um modelo de anexo de email.
views / notificador / attachment.html.erb
<p> Please see attachment </p>
Então, em Notifier, especifique a usar este modelo.
notifier.rb
def my_email_method
...
mail(:template_name => 'attachment', :from => from_address, ...)
end