Không thực sự là câu trả lời cho câu hỏi này, nhưng trong trường hợp bất cứ ai cần nó, tôi đã viết một hàm C# để xác nhận địa chỉ email bằng cách sử dụng phương pháp này.
FixEmailAddress("[email protected]")
lợi nhuận "[email protected]"
FixEmailAddress("[email protected]@xyz.com,[email protected],asdfdsf,[email protected]")
lợi nhuận "[email protected],[email protected]"
tôi xử lý danh sách địa chỉ email theo cách này vì dấu phẩy tách ra danh sách email là một tham số hợp lệ cho MailAddressCollection.Add ()
/// <summary>
/// Given a single email address, return the email address if it is valid, or empty string if invalid.
/// or given a comma delimited list of email addresses, return the a comma list of valid email addresses from the original list.
/// </summary>
/// <param name="emailAddess"></param>
/// <returns>Validated email address(es)</returns>
public static string FixEmailAddress(string emailAddress)
{
string result = "";
emailAddress = emailAddress.Replace(";",",");
if (emailAddress.Contains(","))
{
List<string> results = new List<string>();
string[] emailAddresses = emailAddress.Split(new char[] { ',' });
foreach (string e in emailAddresses)
{
string temp = FixEmailAddress(e);
if (temp != "")
{
results.Add(temp);
}
}
result = string.Join(",", results);
}
else
{
try
{
System.Net.Mail.MailAddress email = new System.Net.Mail.MailAddress(emailAddress);
result = email.Address;
}
catch (Exception)
{
result = "";
}
}
return result;
}
Nguồn
2013-06-11 15:43:14
Bạn có thử sử dụng một decompiler để xem những gì 'MailAddress' sử dụng? – Oded
@Oded: Tôi có. Nó sử dụng một lớp nội bộ lớn được gọi là 'MailBnfHelper', đã thay đổi đáng kể trong .Net 4.0. Tôi không khuyên bạn nên giải nén nó. – SLaks
Các phiên bản khác nhau của khuôn khổ .Net sử dụng các quy tắc khác nhau cho những gì nó hỗ trợ vì vậy tôi sẽ lo lắng rằng bất kỳ regex nào: bạn tạo ra có thể không phải là bằng chứng trong tương lai. 'Try Catch' sẽ là bằng chứng trong tương lai mặc dù vậy tôi đồng ý với câu trả lời của SLaks. Nếu không, nếu bạn thực sự muốn viết một regex, tài liệu cho [MailAddress] (http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx) mô tả các quy tắc mà nó sử dụng để bạn có thể sử dụng nó làm điểm khởi đầu. –