2012-03-06 12 views
6

To jest mój pierwszy quesiton, ale staram się wysłać pocztę z załącznikiem w konsoli railsowej, używając jednej lub dwóch linii. Nie chcę do wystąpienia klasy jak ..Wyślij wiadomość e-mail z załącznikiem w Rails 3.0 za pomocą ActionMailera :: Baza w jednym lub dwóch wierszach

klasy Mailer < ActionMailer :: Base ... koniec

chcę spróbować to w ten sposób:

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 

Ten wyśle e-mail, ale załącznik o nazwie noname, którego nie można rozpakować. Wygląda na to, że nie przetwarza poprawnie danych dla załącznika. Jeśli patrzę na surowego email treść załączników wygląda mniej więcej tak:

-- 
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) jest to w ogóle możliwe, aby wysłać e-mail z załącznikiem jak ta, z obecnie przy użyciu coś jak pony gem

+0

Czy rozwiązałeś swój problem? Mam ten sam ... – Lichtamberg

+0

Przepraszam, że widzę ten komentarz, nie, nigdy nie udało mi się go uruchomić, po prostu zacząłem tworzyć klasę (klasa MyMailer harrya

Odpowiedz

2

Oszacowanie, dlaczego nie działa

Według SO post Invalid filename in email (ActionMailer) wydaje się, że ActionMailer chce automagicznie zbierać informacje z plików, co jest niedostępne z konsoli.

Zauważyłam, że dodaje się, choć brudny, pracuje (wystarczający do moich celów) z konsoli:

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') 

Biorąc pod uwagę, że pisanie i usuwanie plików poprzez prace konsoli, może pliki wymagane przez ActionMailer można zapisać , wykorzystane, a następnie usunięte? Idziemy tu jednak na lepkie tereny do pracy. Problem polega na tym, że ActionMailer będzie szukał odpowiedniego widoku mailera, ale jak i czy możemy powiedzieć ActionMailer gdzie szukać plików mailer? (W nazwie pliku)

Jeśli chodzi o informacje, które nie są poprawnie zakodowane, myślę, że problem polega na tym, że jest on zawijany w pliku "noname" z niektórymi informacjami nagłówka. Dane prawdopodobnie pozostaną nienaruszone, tak jak w moim przykładzie:

-- 
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! 

---- 

: kiedy otwieram "noname" za pomocą edytora tekstu.

Powiązane problemy