2011-03-27 41 views
5

Làm thế nào tôi có thể làm cho nó để ActionMailer luôn luôn hiển thị file đính kèm ở dưới cùng của thông điệp: HTML, TXT, đính kèm ....Rails - ActionMailer đôi khi hiển thị các tệp đính kèm trước nội dung email?

Vấn đề là các tập tin đính kèm ở đây là một file văn bản:

----==_mimepart_4d8f976d6359a_4f0d15a519e35138763f4 
Date: Sun, 27 Mar 2011 13:00:45 -0700 
Mime-Version: 1.0 
Content-Type: text/plain; 
charset=UTF-8 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename=x00_129999.olk14message 
Content-ID: <[email protected]> 

Cảm ơn

+0

Bạn có thể đăng mã từ bên trong bưu phẩm của mình không? Tôi nghi ngờ tôi biết vấn đề có thể là gì. – Tass

+0

@AnApprentice Tôi có cùng một vấn đề. Bạn có thể giải quyết nó không? – Wukerplank

Trả lời

4

Tôi đã gặp vấn đề tương tự và trong trường hợp của tôi giải pháp là trao đổi tệp đính kèm và dòng thư. Đầu tiên đính kèm, sau đó gọi mail.

Rails 3

WRONG

def pdf_email(email, subject, pdfname, pdfpath) 
    mail(:to => email, :subject => subject) 
    attachments[pdfname] = File.read(pdfpath) 
end 

TỐT

def pdf_email(email, subject, pdfname, pdfpath) 
    attachments[pdfname] = File.read(pdfpath) 
    mail(:to => email, :subject => subject) 
end 
+0

không. không giải quyết được vấn đề "đặt hàng" – choonkeat

0

đây là đường sắt 2,3 mã (có thể hơi khác trong rails3)

chỉ di chuyển bạn một phần văn bản trước khi tập tin đính kèm

recipients [email protected] 
from  [email protected] 
subject "some subject" 
content_type "multipart/mixed" 

part "text/plain" do |p| 
    p.body = render_message 'my_message' #this is template file 
end 

attachment "application/octet-stream" do |a| 
    a.body = File.read("some_file.jpg") 
    a.filename = 'name.jpg' 
end 
5

Tôi biết có đã là một câu trả lời được chấp nhận, nhưng chuyển đổi thứ tự của attachments[]mail() không giải quyết nó cho tôi. Điều khác biệt về tình huống của tôi là tôi đang cố đính kèm tệp đính kèm tệp văn bản (.txt)

Điều gì làm việc cho tôi là đặt mặc định content_typeparts_order cho bưu phẩm.

MyMailer < ActionMailer::Base 

    default :from => "Awesome App <[email protected]>", 
      :content_type => 'multipart/alternative', 
      :parts_order => [ "text/html", "text/enriched", "text/plain", "application/pdf" ] 

    def pdf_email(email, subject, pdfname, pdfpath) 
     attachments[pdfname] = File.read(pdfpath) 
     mail(:to => email, :subject => subject) 
    end 

    def txt_email(email, subject, filename, filebody) 
     attachments[filename] = filebody 
     mail(:to => email, :subject => subject) 
    end 
end 

Nếu bạn đang cố gắng để gửi một email trong Rails 3 với một tập tin văn bản đơn giản (.txt), cố gắng thêm :content_typeparts_order giá trị mặc định của bạn để các tập tin văn bản không xuất hiện trên các thông điệp trong email của bạn .

+1

'parts_order' đã hoạt động. mặc dù không nhất thiết phải đưa vào phần 'mặc định'. nó có thể là đối số cho từng thư 'mail (...)' – choonkeat

Các vấn đề liên quan