2012-10-12 74 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的内容放入新文件中。

相关问题