我有一种接收以下格式之一的联系人的方法:

1-“email@domain.com”

2-“名称”或“名称”(可以存在空格)

如果格式为(1),我什么也不做。在(2)的情况下,我需要解析名称和电子邮件。

我不知道我将以哪种格式收到电子邮件。但这将是两者之一。

我怎样才能做到这一点?

最佳答案

实际上,已经有一个名为MailAddress的.NET类可以很简单地为您完成此操作。
更新:它不仅可以获取显示名称,还可以获取电子邮件地址,用户名和主机。

首先包含using System.Net.Mail,然后可以使用以下内容获取信息:

MailAddress email = new MailAddress("Johnny <johnny@example.com>");
string displayName = email.DisplayName;
string address = email.Address;
string user = email.User;
string host = email.Host;

这将适用于您描述的两种情况,因此"Name <email@domain.com>""Name<email@domain.com>"都可以工作,并为您提供Name。我继续创建了一个测试,可以找到here,它将为您提供以下示例输出:
'email@domain.com' =
   DisplayName = ''
   Address = 'email@domain.com'
   User = 'email'
   Host = 'domain.com'
'Name<email@domain.com>' =
   DisplayName = 'Name'
   Address = 'email@domain.com'
   User = 'email'
   Host = 'domain.com'
'Name <email@domain.com>' =
   DisplayName = 'Name'
   Address = 'email@domain.com'
   User = 'email'
   Host = 'domain.com'

10-07 13:10
查看更多