如何检查电子邮件是否为有效格式
以下电子邮件无效格式
fulya_42_@hotmail.coö
但是,我发现和迄今为止与c#一起尝试的所有验证都表示这是不正确的电子邮件
我如何验证电子邮件是否有效或不与C#4.5.2? 谢谢
确定更新的问题
我想问的原因是最大的电子邮件服务mandrill api之一,当您尝试通过电子邮件发送此地址时抛出内部服务器错误
所以他们必须在尝试发送电子邮件之前使用某种验证。 我的目标是找到他们用来消除这些电子邮件之前尝试感谢你
通过使用正则表达式
string emailID = "fulya_42_@hotmail.coö";
bool isEmail = Regex.IsMatch(emailID, @"A(?:[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?.)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?)Z");
if (isEmail)
{
Response.Write("Valid");
}
从https://msdn.microsoft.com/en-us/library/01escwtf(v=vs.110).aspx查看下面的类
using System;
using System.Globalization;
using System.Text.RegularExpressions;
public class RegexUtilities
{
bool invalid = false;
public bool IsValidEmail(string strIn)
{
invalid = false;
if (String.IsNullOrEmpty(strIn))
return false;
// Use IdnMapping class to convert Unicode domain names.
try {
strIn = Regex.Replace(strIn, @"(@)(.+)$", this.DomainMapper,
RegexOptions.None, TimeSpan.FromMilliseconds(200));
}
catch (RegexMatchTimeoutException) {
return false;
}
if (invalid)
return false;
// Return true if strIn is in valid e-mail format.
try {
return Regex.IsMatch(strIn,
@"^(?("")("".+?(?<!)""@)|(([0-9a-z]((.(?!.))|[-!#$%&'*+/=?^`{}|~w])*)(?<=[0-9a-z])@))" +
@"(?([)([(d{1,3}.){3}d{1,3}])|(([0-9a-z][-w]*[0-9a-z]*.)+[a-z0-9][-a-z0-9]{0,22}[a-z0-9]))$",
RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
}
catch (RegexMatchTimeoutException) {
return false;
}
}
private string DomainMapper(Match match)
{
// IdnMapping class with default property values.
IdnMapping idn = new IdnMapping();
string domainName = match.Groups[2].Value;
try {
domainName = idn.GetAscii(domainName);
}
catch (ArgumentException) {
invalid = true;
}
return match.Groups[1].Value + domainName;
}
}
或者看看@Cogwheel在这里回答C#代码来验证电子邮件地址
电子邮件地址的正则表达式可以使用以下方式进行匹配:
return Regex.IsMatch(strIn,
@"^(?("")(""[^""]+?""@)|(([0-9a-z]((.(?!.))|[-!#$%&'*+/=?^`{}|~w])*)(?<=[0-9a-z])@))" +
@"(?([)([(d{1,3}.){3}d{1,3}])|(([0-9a-z][-w]*[0-9a-z]*.)+[a-z0-9]{2,17}))$",
RegexOptions.IgnoreCase);
参考MSDN
但在你的情况下:
fulya_42_@hotmail.coö
如果您从根据您的观察无效的“ .coo
”检查电子邮件地址的有效性,它将不会显示任何错误,因为正则表达式不验证,因此您必须手动添加一些您接受的域: gmail.com,yahoo.com等。
在SonerGonul提出的问题的评论中正确地表示
谢谢
链接地址: http://www.djcxy.com/p/92847.html上一篇: How to check if email is valid format or not
下一篇: In C# windows forms how a MaskedTextBox for email address can be implemented