Как я проверяю форматирование адреса электронной почты с Платформой.NET?

Если вышеупомянутое не работает, можно также попытаться получить его от среды:

var dnsName = new StringBuilder();
dnsName.Append(Environment.GetEnvironmentVariable("COMPUTERNAME")).Append(".");
dnsName.Append(Environment.GetEnvironmentVariable("USERDNSDOMAIN"));
30
задан Zack Peterson 25 August 2009 в 21:58
поделиться

4 ответа

Не беспокойтесь о собственной проверке. .NET 4.0 значительно улучшил проверку с помощью класса MailAddress . Просто используйте MailAddress address = new MailAddress (input) , и если он выдает, он недействителен. Если есть какая-либо возможная интерпретация вашего ввода как спецификации адреса электронной почты, соответствующей RFC 2822, он будет анализировать его как таковой. Вышеупомянутые регулярные выражения, даже статья MSDN, неверны, потому что они не учитывают отображаемое имя, локальную часть в кавычках, буквальное значение домена для домена, правильные спецификации точечного атома для локальной части, возможность того, что почтовый адрес может быть в угловых скобках, несколько значений в кавычках для отображаемого имени, экранированные символы, Unicode в отображаемом имени, комментарии и максимальная допустимая длина почтового адреса. Я потратил три недели на переписывание парсера почтовых адресов в .NET 4.0 для System.Net.Mail и, поверьте мне, это было намного сложнее, чем просто придумать какое-то регулярное выражение, поскольку существует множество крайних случаев. Класс MailAddress в .NET 4.0 beta 2 будет иметь эту улучшенную функциональность.

Еще одна вещь, единственное, что вы можете проверить, - это формат почтового адреса. Вы никогда не сможете проверить, действительно ли адрес электронной почты действителен для получения электронной почты, не отправив электронное письмо на этот адрес и не проверив, принимает ли сервер его для доставки. Это невозможно, и хотя есть команды SMTP, которые вы можете передать почтовому серверу, чтобы попытаться проверить его, во многих случаях они будут отключены или будут возвращать неверные результаты, поскольку это обычный способ для спамеров найти адреса электронной почты.

0 для System.Net.Mail и поверьте мне, это было намного сложнее, чем просто придумать какое-то регулярное выражение, поскольку существует множество крайних случаев. Класс MailAddress в .NET 4.0 beta 2 будет иметь эту улучшенную функциональность.

Еще одна вещь, единственное, что вы можете проверить, - это формат почтового адреса. Вы никогда не сможете проверить, действительно ли адрес электронной почты действителен для получения электронной почты, не отправив электронное письмо на этот адрес и не проверив, принимает ли сервер его для доставки. Это невозможно, и хотя есть команды SMTP, которые вы можете передать почтовому серверу, чтобы попытаться проверить его, во многих случаях они будут отключены или будут возвращать неверные результаты, поскольку это обычный способ для спамеров найти адреса электронной почты.

0 для System.Net.Mail и поверьте мне, это было намного сложнее, чем просто придумать какое-то регулярное выражение, поскольку существует множество крайних случаев. Класс MailAddress в .NET 4.0 beta 2 будет иметь эту улучшенную функциональность.

Еще одна вещь, единственное, что вы можете проверить, - это формат почтового адреса. Вы никогда не сможете проверить, действительно ли адрес электронной почты действителен для получения электронной почты, не отправив электронное письмо на этот адрес и не проверив, принимает ли сервер его для доставки. Это невозможно, и хотя есть команды SMTP, которые вы можете дать почтовому серверу, чтобы попытаться проверить его, во многих случаях они будут отключены или будут возвращать неверные результаты, поскольку это обычный способ для спамеров найти адреса электронной почты.

это было намного сложнее, чем просто придумать какое-то регулярное выражение, поскольку есть много крайних случаев. Класс MailAddress в .NET 4.0 beta 2 будет иметь эту улучшенную функциональность.

Еще одна вещь, единственное, что вы можете проверить, - это формат почтового адреса. Вы никогда не сможете проверить, действительно ли адрес электронной почты действителен для получения электронной почты, не отправив электронное письмо на этот адрес и не проверив, принимает ли сервер его для доставки. Это невозможно, и хотя есть команды SMTP, которые вы можете дать почтовому серверу, чтобы попытаться проверить его, во многих случаях они будут отключены или будут возвращать неверные результаты, поскольку это обычный способ для спамеров найти адреса электронной почты.

это было намного сложнее, чем просто придумать какое-нибудь регулярное выражение, поскольку существует множество крайних случаев. Класс MailAddress в .NET 4.0 beta 2 будет иметь эту улучшенную функциональность.

Еще одна вещь, единственное, что вы можете проверить, - это формат почтового адреса. Вы никогда не сможете проверить, действительно ли адрес электронной почты действителен для получения электронной почты, не отправив электронное письмо на этот адрес и не проверив, принимает ли сервер его для доставки. Это невозможно, и хотя есть команды SMTP, которые вы можете передать почтовому серверу, чтобы попытаться проверить его, во многих случаях они будут отключены или будут возвращать неверные результаты, поскольку это обычный способ для спамеров найти адреса электронной почты.

Еще одна вещь, единственное, что вы можете проверить, - это формат почтового адреса. Вы никогда не сможете проверить, действительно ли адрес электронной почты действителен для получения электронной почты, не отправив электронное письмо на этот адрес и не проверив, принимает ли сервер его для доставки. Это невозможно, и хотя есть команды SMTP, которые вы можете передать почтовому серверу, чтобы попытаться проверить его, во многих случаях они будут отключены или будут возвращать неверные результаты, поскольку это обычный способ для спамеров найти адреса электронной почты.

Еще одна вещь, единственное, что вы можете проверить, - это формат почтового адреса. Вы никогда не сможете проверить, действительно ли адрес электронной почты действителен для получения электронной почты, не отправив электронное письмо на этот адрес и не проверив, принимает ли сервер его для доставки. Это невозможно, и хотя есть команды SMTP, которые вы можете дать почтовому серверу, чтобы попытаться проверить его, во многих случаях они будут отключены или будут возвращать неверные результаты, поскольку это обычный способ для спамеров найти адреса электронной почты.

58
ответ дан 27 November 2019 в 23:25
поделиться

Статья MSDN: Практическое руководство. Проверка того, что строки находятся в допустимом формате электронной почты

В этом примере метода вызывается метод Regex.IsMatch (String, String) для проверки соответствия строки шаблону регулярного выражения. .

Function IsValidEmailFormat(ByVal s As String) As Boolean
    Return Regex.IsMatch(s, "^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$")
End Function
7
ответ дан 27 November 2019 в 23:25
поделиться

You should use Regular Expressions to validate email addresses.

1
ответ дан 27 November 2019 в 23:25
поделиться

You could use a Regex to do this.

There have been written a lot of articles about it; this came up when I searched google for 'regex to validate email address': Find or Validate an Email Address.

0
ответ дан 27 November 2019 в 23:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: