2012-10-12 99 views
2

因此,我正在嘗試發送包含.zip文件的電子郵件。 .zip文件位於另一臺服務器上的另一個URL上。我能夠檢索文件,附加併發送它。但是,當我從電子郵件中獲得附件時。它不會打開,因爲它說不能打開* .zip.zip我已經嘗試刪除名稱中的.zip,但然後歸檔管理器無法打開它。將.zip文件作爲電子郵件附件發送至Rails

任何想法?

代碼如下。

http = Net::HTTP.new('www.somedomaim.org') 
    http.start() { |http| 
    req = Net::HTTP::Get.new("/path/to/file.zip") 
    response = http.request(req) 
    tempfile = Tempfile.new('files') 
    File.open(tempfile.path, 'w') do |f| 
     f.write response.body 
    end 
    attachments["files.zip"] = File.read(tempfile.path) 
    mail to: [email protected], subject: "Sending zip file" 
    } 

[解決]

該解決方案是相當簡單的。

attachments['files.zip'] = open('http://somedomain.com/path/to/file.zip').read 

附件需要接收文件的內容。 .read返回文件的內容。我的問題是,我把整個zip文件放在一個新文件的內容中。上述解決方案將僅將zip的內容放入新文件中。

希望這可以幫助別人有一天。感謝所有的建議。

+0

如果你把附件[「files」] = File.read(tempfile.path) – Abram

+0

會發生什麼我得到一個文件作爲沒有擴展名的附件。檢查屬性時,它的大小爲0字節,類型爲文本文檔。一些我如何懷疑我將一個文件的http響應保存到一個文件中(這不算什麼),而不是zip文件。 – robinjohnobrien

+0

http://rubyzip.sourceforge.net/classes/Zip/ZipFile.html – Abram

回答

1

該解決方案相當簡單。

attachments['files.zip'] = open('http://somedomain.com/path/to/file.zip').read 

附件需要接收文件的內容。 .read返回文件的內容。我的問題是,我把整個zip文件放在一個新文件的內容中。上述解決方案將僅將zip的內容放入新文件中。

相關問題