当我尝试从我的 IMAP 帐户读取一些电子邮件时:
imap.search(['NOT','SEEN']).each do |message_id|
mail = imap.fetch(message_id, "BODY[1]")
end
我得到各种ascii??我的字符串中的代码,例如 =20 =93 =94 等。 已经尝试了很多转换或解码的方法,但没有成功。我怎样才能摆脱这些代码?
最佳答案
有许多不同的选项可用于对消息正文进行编码,例如quoted-printable、base-64 等。在 Ruby 中最简单的事情就是将整个消息传递到 mail gem,让它进行解析,然后输出纯文本内容。
message = Mail.new(raw_source)
puts message.body.decoded
根据经验,您可能实际上会发现您需要执行以下操作:
message.multipart? ? (message.text_part ? message.text_part.body.decoded : nil) : message.body.decoded
当我们将消息发送到 CloudMailin 中的应用程序时,我们会使用与此类似的内容,以确保找到明文部分,因为并不总是保证明文部分位于正文中且未经过 mime 编码。
关于ruby-on-rails - 将电子邮件中的文本/纯内容转换为普通文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900991/