接收有关Actionmailer的电子邮件并阅读纯文本正文

atm*_*ell 2 ruby ruby-on-rails

我正在使用IMAP从gmail接收一些电子邮件,然后使用新的Rails 3 ActionMailer接收方法解析它们.

raw_email   = imap.uid_fetch(uid, ['RFC822']).first.attr['RFC822']
email = UserMailer.receive(raw_email)
Run Code Online (Sandbox Code Playgroud)

电子邮件现在是一个Mail :: Message Class,并且:,from和:subject工作正常.但是我无法弄清楚如何从身体中获取纯文本.在Rails 3之前,我可以使用tmail_body_extractors插件来获取普通的主体.

你会如何使用Rails 3做到这一点?

Jakobinsky:email.body.raw_source离我更近了仍然给了我很多垃圾.

"--001636310325efcc88049508323d\r \nConContent-Type:text/plain; charset = ISO-8859-1\r \nContent-Transfer-Encoding:quoted-printable\r \n\r \n这是一些正文内容\ r \n\r \n - = 20\r \nVenlig Hilsen\r \nAsbj = F8rn Morell\r \n\r \n - 001636310325efcc88049508323d\r \n内容类型:text/html; charset = ISO-8859-1\r \nContent-Transfer-Encoding:quoted-printable\r \n\r \naf 邮件
-
Venlig Hilsen Asbj
= F8rn Morell
\ r \n\r \n - 001636310325efcc88049508323d--"

我应该滚动自己的帮助器来清理raw_source还是已经有方法,宝石或帮助器?

ari*_*kfr 5

看到这个问题的答案: Rails - Mail,将正文作为纯文本

简而言之,解决方案是:

plain_part = message.multipart? ? (message.text_part ? message.text_part.body.decoded : nil) : message.body.decoded

但我建议阅读完整的答案,因为它非常好而且全面.