在电子邮件中,看起来“from”或“to”字段可以包含一个或多个地址,每个地址可以是“john@test.com”或“John D Jr< john@test.com\u0026gt;” 因此,“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>,c@c.com"
等等.
我想解析这些字段,提取每个地址的电子邮件(如果有效),以及名称是否存在.由于我不熟悉电子邮件标准,我可能会遗漏一些地址字段的情况.是否有可以执行此操作的Ruby库?
解决方法
是的,这是一个宝石;它被称为
mail.
require 'mail' addresses = [] raw_addresses = Mail::AddressList.new("Abe Allen <a@a.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