ruby-on-rails - 将电子邮件中的文本/纯内容转换为普通文本

标签 ruby-on-rails email imap

当我尝试从我的 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/

相关文章:

email - Elastalert使用字段值作为电子邮件警报中的地址

ruby-on-rails - 之前的 Rspec(:each) works but before(:all) does not

ios - 如何从 UITableView 数据填充电子邮件正文?

ruby-on-rails - 如何在 Rails 测试中填充查找表

android - 使用 Intent 时不显示电子邮件正文

java - IMAP:(JavaMail)UIDVALIDTY 值总是更改某些文件夹

php - 当邮箱为空时 imap_check 抛出通知

ruby - 如何解码通过 Net::IMAP 在 UTF8 中获取的主题? ( ruby )

ruby-on-rails - Rails 应用程序的初始(登陆)页面

ruby-on-rails - rails has_secure_password。是否可以更改数据库中的用户密码