11

据我了解,在给定文档中扫描电子邮件时,Regex 并不是最好的选择。我想知道是否有任何替代方案?或者一些我不知道的最佳实践方式?

4

1 回答 1

16

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

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

Mail 是一个用于 Ruby 的 Internet 库,旨在以简单的 ruby​​esque 方式处理电子邮件的生成、解析和发送。

[...] 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...

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

于 2013-01-12T02:25:55.677 回答