2012-03-06 8 views
6

Questo è il mio primo quesiton, ma quello che sto cercando di fare è inviare posta con un allegato nella console di rails, usando una o due linee. Non voglio creare un'istanza di una classe come ..Invia posta con allegato in Rails 3.0 utilizzando ActionMailer :: Base in una o due righe

classe Mailer < ActionMailer :: Base ... fine

voglio provare in questo modo:

m=ActionMailer::Base.mail(:to => "[email protected]", :from => "[email protected]", :subject=>"test from zip", :content_type=>"multipart/mixed") 
m.attachments['file.zip']={:mime_type => "application/zip", :data=>File.read("#{Rails.root}/tmp/test.zip")} 
m.deliver 

Questo invierà un email, ma l'allegato ha chiamato noname, che non può essere decompresso. Sembra che non analizzi correttamente i dati per l'allegato. Se guardo l'e-mail grezzo il contenuto di attacco simile a questa:

-- 
Date: Tue, 06 Mar 2012 06:59:42 -0800 
Mime-Version: 1.0 
Content-Type: application/zip; 
charset=UTF-8 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename=file.zip 
Content-ID: <[email protected]> 

UEsDBBQAAAAIAE9iZUBSMYOwkKgZANRakgAQABUAbG9hbl9kZXRhaWxzLmNz 
dlVUCQADlh9VT0QfVU9VeAQA6APoA8xdW3PiuLZ+37+Ch6ldZ1dZGUvyNW/c 
EwKBQLiENze4gytgZ9tmMplff5YMlgQWmV1tk5qufiAkwV8trcu3bko/8sLa 
m/+p9dmLJPXSfaI1oyR4Df21Non28crPvt+MfS/117Uo5C+9VKu/v8fRH4e3 
O0HobWte9g68gHdaQfJjHyeHb4/9/+79JPu9XbQPU22y2kTRVuv74dqPa7G/ 
... 

1) E 'anche possibile inviare una e-mail con un allegato di questo tipo, senza l'uso di qualcosa come il pony gemma

+0

Hai risolto il tuo problema? Ho lo stesso ... – Lichtamberg

+0

Mi dispiace di aver visto questo commento, no, non ho mai avuto modo di funzionare, ho finito con la creazione di una classe (classe MyMailer harrya

risposta

2

Una stima del motivo per cui non funziona

Secondo SO post Invalid filename in email (ActionMailer) sembra essere ActionMailer che desidera acquisire automaticamente le informazioni dai file, qualcosa che non è disponibile dalla console.

ho rilevato che la segue, seppur disordinato, lavora (sufficientemente per i miei scopi) dalla console:

File.open("magical_elephant_potato.txt", 'w') {|f| f.write("Heyyyy youuu!") } 
m=ActionMailer::Base.mail(:to => "[email protected]", :from => "[email protected]", :subject=>"Behold my MEP attache", :content_type=>"multipart/mixed") 
m.attachments['magical_elephant_potato.txt']=File.read("magical_elephant_potato.txt") 
m.deliver 
FileUtils.rm('magical_elephant_potato.txt') 

dato che la scrittura e rimozione di file tramite opere di console, forse i file richiesti dal ActionMailer può essere scritta , utilizzato e poi cancellato? Ma qui ci stiamo dirigendo verso un territorio laborioso. Un problema è che ActionMailer cercherà la vista del mailer appropriata, ma come e possiamo dire ad ActionMailer dove cercare i file del mailer? (Come in, il nome del file)

Per quanto riguarda l'informazione che non viene codificata correttamente, penso che il problema sia che è racchiuso nel file 'noname' con alcune informazioni di intestazione. I dati sono probabilmente intatti, come con il mio esempio ottengo:

-- 
Date: Tue, 08 Jan 2013 11:08:57 +0000 
Mime-Version: 1.0 
Content-Type: text/plain; 
charset=UTF-8; 
filename=magical_elephant_potato.txt 
Content-Transfer-Encoding: 7bit 
Content-Disposition: attachment; 
filename=magical_elephant_potato.txt 
Content-ID: <[email protected]> 

Heyyyy youuu! 

---- 

: quando apro 'noname' con un editor di testo.

Problemi correlati