我有一种接收以下格式之一的联系人的方法:
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'