解析Ruby中"from"和"to"字段的电子邮件地址

foo*_*bar 7 ruby email parsing

在电子邮件中,它看起来像"从"或"到"字段可以包含一个或多个地址,每个地址可以像"john@test.com""John D Jr <john@test.com>"

因此,"from"字段可能看起来像以下任何一种:

"a@a.com"

"a@a.com, Bob Blue <b@b.com>"

"Abe Allen <a@a.com>, b@b.com"

"Abe Allen <a@a.com>, Bob Blue <b@b.com>"

"Abe Allen <a@a.com>, Bob Blue <b@b.com>, c@c.com"
Run Code Online (Sandbox Code Playgroud)

等等.

我想解析这些字段,提取每个地址的电子邮件(如果它是有效的),以及名称是否存在.由于我不熟悉电子邮件标准,我可能会遗漏一些地址字段的样子.是否有可以执行此操作的Ruby库?

dee*_*our 12

是的,这是一个宝石; 它被称为邮件.

require 'mail'

addresses = []
raw_addresses = Mail::AddressList.new("Abe Allen <a@a.com>, Bob Blue <b@b.com>, c@c.com")

raw_addresses.addresses.each do |a|  
  address = {}

  address[:address] = a.address
  address[:name]    = a.display_name if a.display_name.present?

  addresses << address      
end
Run Code Online (Sandbox Code Playgroud)