Ruby - 从文本或HTML解析电子邮件

Mr.*_*ael 10 ruby

据我所知,在给定文档中扫描电子邮件时,正则表达不是最好的选择.我想知道这有什么替代方案吗?或者一些我不知道的最佳实践方式?

Kon*_*che 16

对于解析作业,依赖库是一个好主意.你说得对,图书馆总是比正则表达式更详细地处理问题,考虑不同的情况等.

一个用于解析电子邮件的Ruby库是Mail:

Mail是Ruby的互联网库,旨在以简单的rubyesque方式处理电子邮件生成,解析和发送.

[...] Mail设计有一个非常简单的面向对象系统,可以真正打开您正在解析的电子邮件,如果您知道自己在做什么,就可以直接调整电子邮件的最后一点.

以下是访问电子邮件内容的示例:

mail = Mail.read('/path/to/message.eml')

mail.envelope.from   #=> 'mikel@test.lindsaar.net'
mail.from.addresses  #=> ['mikel@test.lindsaar.net', 'ada@test.lindsaar.net']
mail.sender.address  #=> 'mikel@test.lindsaar.net'
mail.to              #=> 'bob@test.lindsaar.net'
mail.cc              #=> 'sam@test.lindsaar.net'
mail.subject         #=> "This is the subject"
mail.date.to_s       #=> '21 Nov 1997 09:55:06 -0600'
mail.message_id      #=> '<4D6AA7EB.6490534@xxx.xxx>'
mail.body.decoded    #=> 'This is the body of the email...
Run Code Online (Sandbox Code Playgroud)

它还使您能够解析多部分电子邮件,以及测试和提取附件.