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 文件

Download and unzip

您可以尝试以二进制方式写入文件:

File.open('/path/to/file;, 'wb') { |file| file.write(attachment.body.decoded) }

"b"二进制文件模式 在 Windows 上抑制 EOL <-> CRLF 转换。和 除非明确说明,否则将外部编码设置为 ASCII-8BIT 指定。

这些模式在 IO class 中描述,File 继承自。