我正在尝试设置一些rake任务。它要求我连接到gmail并下载一个Zip文件,该文件作为附件发送。
我编写了以下代码(适用于下载csv) -
gmail = Gmail.connect(ENV["USERNAME"], ENV["PASSWORD"])
msg = gmail.inbox.find(from: ENV["REC_USER"],
subject: args[:subject])
dir_path = "lib/mfu_payment_data/"
Dir.mkdir dir_path unless File.exists?(dir_path)
if msg.first
msg.first.attachments.each do |attachment|
File.write(File.join(dir_path,attachment.filename),attachment.body.decoded)
end
end
它会抛出以下错误 -
rake aborted!
Encoding::UndefinedConversionError: "\xED" from ASCII-8BIT to UTF-8
我认为这与attachment.body.decoded有关,但我不知道如何做到这一点。
答案 0 :(得分:1)
您可以尝试以二进制模式编写文件:
File.open('/path/to/file;, 'wb') { |file| file.write(attachment.body.decoded) }
"b"
二进制文件模式
抑制EOL< - > Windows上的CRLF转换。和
除非明确指出,否则将外部编码设置为ASCII-8BIT
指定。
这些模式在IO类中描述,File
继承自。{/ p>
答案 1 :(得分:0)
我认为你有很多选择来生成zip文件