我正在尝试使用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文本包围。
答案 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。
使用电子邮件正文格式。