Ruby Mail宝石提取标题和清理正文

时间:2012-04-02 18:16:29

标签: ruby email html-email

我正在使用Ruby Mail gem尝试阅读和解析电子邮件。我遇到了与this post类似的问题,但提供的解决方案只解决了我的一半问题......

有些电子邮件不响应html_parttext_part,但它们仍被视为“多部分”。没关系,我会手动查看MIME类型。但是,有多部分消息没有任何部分!

我收到了message.multipart? #=> true,但message.parts.length #=> 0的消息。因此,我实际上无法提取单个部分:(。

如果我查看message.body(或message.body.decoded),则会显示文字,类型为text/html。但是,它也包含顶部的所有标题信息。

这听起来很疯狂,但是如何才能获得没有任何部分的“多部分”电子邮件的正文(或标题)呢?

修改

以下是其中一条消息:

#<Mail::Message:70280791538440, Multipart: true, Headers: ...>

使用message.body

--XX-2ba4f992ec6d5e224ebeaf78eac50df5\nContent-type: text/html; charset=\"UTF-8\" \nContent-Transfer-Encoding: 7bit \n\nThank you...

1 个答案:

答案 0 :(得分:3)

是的,这是因为真实世界的电子邮件有各种不符合协议的惊喜。

获取标题部分和正文部分:

header_part, body_part = message.body.split(/\n\s*\n/m, 2)

您可以在此文件中找到一些有用的解析模式:

lib/mail/patterns.rb