RoR - 使用 gmail 下载 ZIP 文件 gem
RoR - Download ZIP file using gmail gem
我正在尝试设置一些佣金任务。它需要我连接到 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 有关,但我不知道该怎么做。
我认为您有很多选项可以生成 zip 文件
您可以尝试以二进制方式写入文件:
File.open('/path/to/file;, 'wb') { |file| file.write(attachment.body.decoded) }
"b"
二进制文件模式
在 Windows 上抑制 EOL <-> CRLF 转换。和
除非明确说明,否则将外部编码设置为 ASCII-8BIT
指定。
这些模式在 IO class 中描述,File
继承自。
我正在尝试设置一些佣金任务。它需要我连接到 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 有关,但我不知道该怎么做。
我认为您有很多选项可以生成 zip 文件
您可以尝试以二进制方式写入文件:
File.open('/path/to/file;, 'wb') { |file| file.write(attachment.body.decoded) }
"b"
二进制文件模式
在 Windows 上抑制 EOL <-> CRLF 转换。和
除非明确说明,否则将外部编码设置为 ASCII-8BIT
指定。
这些模式在 IO class 中描述,File
继承自。