Mail Gem:在浏览器中渲染收到的电子邮件/完整解析html部分

我正在使用Mail Gem在我的Rails 4应用程序中接收电子邮件。 通过Gem,每10分钟左右通过POP从邮箱中抓取邮件。

我需要渲染这些电子邮件 – 主要是HTML格式 – 并且无法在HTML中保存正文,更不用说处理嵌入式图像等内容了。 我可能在这里遗漏了一些东西 – 看着StackOverflow,但还没有找到相关问题的答案。

我一直在和你一起工作

message.body.decoded 

并且还查看了html_part v.text_part – 但是我没有看到一个方法来获取所附的HTML。 看起来我需要剥离邮件gem似乎留在身体中的标题 – 然后还处理任何内联附件。 肯定有一个gem必须存在..? 还是一种方法……? 你的建议很有价值。

我确实找到了Mailcatcher Gem – 但这确实是它自己的Sinatra应用程序。 我可能只是尝试调整这个gem,但这似乎是很多工作。 当然其他人已经处理过这个问题..?

我还重视关于如何在MySQL中最好地存储消息体的建议 – 我正在考虑大文本或blob类型。

谢谢!

我使用开信刀它工作得很好……如果你使用vagrant作为主要的开发机器你可以使用这个开信刀网

我在最后几天工作,我认为我找到了解决方案。

首先,你必须找出邮件是多部分的,

 mail.multipart? 

如果邮件不是多部分,你可以得到这样的身体,

 mail.body.decoded 

如果邮件是多部分,则必须选择是否要存储html或文本部分。 但是当然你可以存储这两个部分,它就在你身上。

 #for html part html_decoded_body = nil mail.parts.each do |part| if part.content_type.include?('html') html_decoded_body = part.body.decoded end end #for text part text_decoded_body = nil mail.parts.each do |part| if part.content_type.include?('text') text_decoded_body = part.body.decoded end end 

然后,您需要在将此主体保存到数据库之前强制进行编码。

 (html_decoded_body || text_decoded_body).force_encoding('UTF-8') 

在这一点上,您已准备好在您的数据库中保存电子邮件正文,但稍后,当您尝试呈现此HTML时,您会发现仍然可以看到一些奇怪的东西,您的链接和图像将无法正常工作。 原因很简单。 电子邮件正在使用一些奇怪的编码(请阅读本文以获取更多信息https://en.wikipedia.org/wiki/Quoted-printable )并且您已经再次对其身体进行解码。 我正在使用这个JS库: https : //github.com/mathiasbynens/quoted-printable 。

所以最后的代码是在javascript中。

 quotedPrintable.decode(email_body) 

和wuaala。

Interesting Posts