【问题标题】:if the content of a textbox is an email do something如果文本框的内容是电子邮件,请执行某些操作
【发布时间】:2018-09-19 08:07:47
【问题描述】:

我的应用程序中有一个文本框,可以是电子邮件或群组名称。

我需要做的是确定这个文本框是否是电子邮件,然后做一些事情。

我现在将文本框的内容传递给一个变量

var test = new MailAddress(txtRecipents.Text)

我现在想做的不是将文本框值放入一个变量中,而是我想在 if 语句中确定它

If (txtRecipents.txt is an email)
{
   ...Do something here
}

几乎就像是或否的问题。

例如:

如果文本框值是电子邮件,请执行此操作 如果文本框值不是电子邮件,请执行其他操作

我希望这是有道理的,否则我会澄清一下

* 编辑 *

基本上我不关心垃圾邮件等,因为它是一个永远不会看到互联网的内部应用程序。

我只是想确定它是文本框中的电子邮件还是组名,因为应用程序应该同时使用两者

【问题讨论】:

  • 我不会投反对票,而是照常发布,提供您尝试过的代码、您遇到的错误等。我们不会为您编写代码,但我们很乐意协助!
  • 得到一个这样的正则表达式,stackoverflow.com/a/45177249/2055976 然后在文本框上运行检查,比如一个布尔值,并在你的 if/else 中使用它。
  • 您确定正则表达式是最佳选择吗?只是好奇
  • @Trey 抱歉,我以为很明显这是我没有处理过很多的事情
  • @Max 你怎么知道这是一封来自文本框的电子邮件?如果一些垃圾输入进入您的新邮件地址会发生什么?您必须有一种检查方法,因为基本上您通过允许在该文本框上打开输入来绕过客户端验证。

标签: c# asp.net-mvc exchangewebservices


【解决方案1】:

如果您关心电子邮件地址的格式是否有效:

var test = new MailAddress(txtRecipients.Text)

if (test.Address == txtRecipients.Text)
{
    // valid email address...
}

【讨论】:

    【解决方案2】:
    //This should fail
    string s = "ssharp@@@@@@@bogusemail.com";
    
    Regex regex = new Regex(@"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$");
    
    Match match = regex.Match(email);
    
    if (match.Success)
    {
        //do something
    }
    else
    {
      //do the other thing
    }
    

    【讨论】:

      【解决方案3】:

      使用“System.Net.Mail.MailAddress”可能是一个很好的解决方案。请记住:

      1. MailAddress 可能引发“FormatException”
      2. MailAddress 算法会考虑有效的电子邮件,例如“fdsa@fdsa”或“fdsa@fdsa”。

      在这里你也可以找到一个处理异常的 sn-p:

      try {
         var addr = new System.Net.Mail.MailAddress(txtRecipents.Text);
         if (txtRecipents.Text == addr.Address)
         {
            // valid email address
         }
      }
      catch {
         // NOT a valid email address
      }
      

      【讨论】:

      猜你喜欢
      • 2015-08-17
      • 2013-02-12
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      相关资源
      最近更新 更多