首页 文章

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

提问于
浏览
12

我正在尝试使用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,不带任何 Headers ?

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

4 回答

  • 0

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

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

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

  • 0

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

    github的宝石文档相当不错

  • 8

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

  • 8

    使用 mail gem,您可以:

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

相关问题