解析“来自”的电子邮件地址和“至” Ruby中的字段 [英] Parse email addresses for "from" and "to" fields in Ruby

查看:136
本文介绍了解析“来自”的电子邮件地址和“至” Ruby中的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



所以一个从字段可以看起来像以下任何一种:

 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
pre>

等等。



我想解析这些字段,提取每个地址的电子邮件,如果它有效,以及名称(如果有)。由于我不熟悉电子邮件标准,我可能会缺少一些可以看到什么地址字段的情况。有没有一个Ruby库可以做到这一点?

解决方案

是的,有一个宝石为此;它被称为 邮件

  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如果a.display_name.present?

地址<<<地址
end


In an email, it looks like a "from" or "to" field can contain one or more addresses, each address can be like "john@test.com" or "John D Jr <john@test.com>"

So a "from" field can look like any of the following:

"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"

and so on.

I want to parse these fields, extracting each address' email if it's valid, and the name if it's present. Since I'm not familiar with the email standard, I may be missing some cases of what address fields can look like. Is there a Ruby library that can do this?

解决方案

Yes, there's a gem for this; it's called mail.

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

这篇关于解析“来自”的电子邮件地址和“至” Ruby中的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆