如何检查电子邮件是否为有效格式

以下电子邮件无效格式

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