2011-03-27 10 views
5

Come posso fare in modo ActionMailer mostra sempre gli allegati nella parte inferiore del messaggio: HTML, TXT aeree ....Rails - ActionMailer a volte mostra allegati prima del contenuto dell'email?

problema è l'attaccamento ecco un file di testo:

----==_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]> 

grazie

+0

Puoi postare il codice dall'interno del tuo mailer? Sospetto di sapere quale potrebbe essere il problema. – Tass

+0

@AnApprentice Ho lo stesso problema. Sei riuscito a risolverlo? – Wukerplank

risposta

4

Ho avuto lo stesso problema e nel mio caso la soluzione era di scambiare l'allegato e le linee di posta. Prima allegare, quindi chiamare la posta.

Rails 3

SBAGLIATO

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

BUONA

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

no. non risolve il problema di "ordinamento" – choonkeat

0

questo è il codice binario 2.3 (potrebbe essere leggermente diverso in Rails3)

basta spostare si parte il testo prima di attacco

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

So che c'è già una risposta accettata, ma il passaggio l'ordine di attachments[] e mail() no risolverlo per me. Ciò che è diverso della mia situazione è che stavo cercando di allegare un allegato di file di testo (.txt)

Ciò che funziona per me è impostare i valori di default content_type e parts_order per il mailer.

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 

Se si sta tentando di inviare una e-mail in Rails 3 con un file di testo (.txt), cercando di aggiungere :content_type e parts_order per le impostazioni predefinite in modo che il file di testo non viene visualizzato sopra il messaggio e-mail .

+1

'parts_order' ha funzionato. sebbene non necessariamente inserito nella sezione 'default'. può essere argomento per singoli 'mail (...)' – choonkeat

Problemi correlati