邮件gem – 如何清理身体字符串

我正在尝试使用ruby mail gem阅读电子邮件。 但是mail.body.decoded返回了正文消息。 如何清理此正文消息并删除不需要的文本,如:

-20cf30433c9a437cc304939017ef\nContent-Type: text/plain; charset=ISO-8859-1\nContent-

 message = $stdin.read mail = Mail.read_from_string(message) puts mail.body.decoded 

--20cf30433c9a437cc304939017ef\nContent-Type: text/plain; charset=ISO-8859-1\nContent-Transfer-Encoding: quoted-printable\n\n REAL BODY TEXT \\n\n--20cf30433c9a437cc304939017ef\nContent-Type: text/html; charset=ISO-8859-1\nContent-Transfer-Encoding: quoted-printable\n\n
--20cf30433c9a437cc304939017ef--

如何清除此电子邮件正文邮件,仅提取REAL BODY TEXT,不带任何标题?

我正在创建一个基于Ruby on Rails的简单票务系统,并在ticket@mydomain.com收到电子邮件时创建票证。 但是当消息是HTML格式时,BODY TEXT被HEADER文本包围。

如果您的格式正确,则可以使用Mail帮助程序方法:

 mail = Mail.new(email_string) mail.text_part # finds the first text/plain part mail.html_part # finds the first text/html part 

如果你有例如单个部分消息(仅文本)或从互联网接收电子邮件,这并不总是有效,因为你不能依赖每个客户的格式。 相信我,我已经学会了艰难的道路。

看起来你有一个多部分电子邮件,所以你可以使用mail.parts [0] .body.decoded这些也可能会派上用场:mail.multipart?
mail.parts.length

github上的gem文档相当不错

添加邮件gem并使用mail.parts [1] .body.decoded使用电子邮件正文格式。

使用mail gem,您可以:

 text = mail.multipart? ? mail.text_part.decoded : mail.body.decoded`