2009-12-15 90 views
1

我使用下面的代碼與PDF附件發送電子郵件渲染內聯:如何防止電子郵件附件使用的ActionMailer

class StudyMailer < ActionMailer::Base 
    def notify_office(study, sent_at = Time.now) 
    subject "Email Subject Goes Here" 
    recipients '[email protected]' 
    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作爲典型附件渲染而不是內聯?

回答

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

注意內容處置線。

+0

添加一個塊中attachement似乎並沒有影響到附件的呈現方式 – rswolff 2009-12-15 14:09:01

+0

原來這個問題更多的是與電子郵件視圖模板的名稱比其他任何東西都好,但我將其標記爲答案,因爲content_disposition部分也是需要的。 – rswolff 2009-12-16 04:34:28

0

我相信你有指示電子郵件的多性質,所以下from行加入這一行:

content_type "multipart/alternative" 
+0

添加content_type看起來不會影響附件呈現的方式。 – rswolff 2009-12-15 14:08:31

0

請問您的電子郵件有一個模板?如果電子郵件沒有模板,則即使其他設置正確,附件也會以內聯方式顯示。創建一個附件郵件模板。

的意見/通知/ attachment.html.erb

<p> Please see attachment </p> 

然後在通知程序,指定要使用該模板。

notifier.rb

def my_email_method 
    ... 
    mail(:template_name => 'attachment', :from => from_address, ...) 
end