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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top