2011-05-09 104 views
2

如何使用新的rails 3邮件从电子邮件的前面字段获取名称部分?使用rails 3邮件

在实际的电子邮件有一个从外地这样的:

<From: rogger rabbit <[email protected]>> 

如果我做mail.from.first我得到[email protected]一部分但它是如何获取名称位IE。野兔子?

非常感谢 里克

回答

2

看着邮件2.2.17/lib目录/邮件/内容/ address.rb我发现这一点:

a = Address.new('Mikel Lindsaar (My email address) <[email protected]>') 
a.format  #=> 'Mikel Lindsaar <[email protected]> (My email address)' 
a.address  #=> '[email protected]' 
a.display_name #=> 'Mikel Lindsaar' 
a.local  #=> 'mikel' 
a.domain  #=> 'test.lindsaar.net' 
a.comments  #=> ['My email address'] 
a.to_s   #=> 'Mikel Lindsaar <[email protected]> (My email address)' 

尝试使用类似mail [:from] .addrs.collect {| a | a.display_name}

+0

非常感谢这解决了它 – rick 2011-05-10 12:01:55

0

你可能想尝试decoded方法:

mail.from.first.decoded 
+0

tadman我得到未定义的方法'解码'为“[email protected]”:字符串,当我做email.from.first.decoded? – rick 2011-05-09 21:16:02

+0

我只是希望看到[Mail的API文档](http://rdoc.info/github/mikel/mail)。 – tadman 2011-05-09 21:58:26

0

整个上午都撕裂了我的头发后,我终于得到这个一起工作:

message[:from].display_names.first 

当“消息”是,你可能会遍历通过邮件对象。

注意:如果发件人没有显示名称,则这将为零。