邮件宝石 - 如何清理身体字符串

时间:2010-10-27 12:50:37

标签: ruby email ticket-system ticket-tracking

我正在尝试使用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<br clear=3D\"all\">--20cf30433c9a437cc304939017ef--

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

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

4 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:8)

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

github的宝石文档很不错

答案 2 :(得分:1)

使用mail gem,您可以执行以下操作:

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

答案 3 :(得分:0)

添加邮件gem并使用mail.parts [1] .body.decoded。

使用电子邮件正文格式。