Comment puis-je éviter les pièces jointes de courrier électronique de rendu Inline à l'aide ActionMailer

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

Question

Je suis en utilisant le code suivant pour envoyer un e-mail avec une pièce jointe 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

Lorsque l'e-mail est envoyé, la pièce jointe semble rendre en ligne sous forme de code binaire plutôt que comme une pièce jointe .pdf.

Comment puis-je rendre le .pdf comme pièce jointe typique, plutôt que inline?

Était-ce utile?

La solution

attachment :content_type => "application/pdf", 
    :content_disposition => "attachment", 
    :filename => File.basename(fattach), 
    :body => File.new(fattach,'rb').read() 

Remarquez la ligne de disposition de contenu.

Autres conseils

Je crois que vous devez indiquer la nature de l'e-mail multipart, il faut donc ajouter cette ligne sous la ligne de from:

content_type    "multipart/alternative"

Votre e-mail un modèle? Si l'e-mail n'a pas de modèle, la pièce jointe apparaît en ligne, même si tout le reste est configuré correctement. Créer un modèle de courrier électronique de pièce jointe.

  

vues / notification / attachment.html.erb

<p>   Please see attachment    </p>

Ensuite, dans notificateur, indiquez à utiliser ce modèle.

  

notifier.rb

def my_email_method
    ...
    mail(:template_name => 'attachment', :from => from_address, ...)
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top