Проверка наличия адреса электронной почты в C#
о этот пост о проверке по электронной почте,
используя C#, как бы вы
- выполните команду VRFY
- выполните команду RCPT
6 ответов
IMO, метод RCPT является лучшим, и я все еще использую его каждый день.
вот необходимый код:http://mailsystem.codeplex.com/SourceControl/changeset/view/51422#541825
класс довольно тяжелый, вам нужно будет выбрать фрагмент кода, который вам нужен из исходного кода.
Я думаю, вы обнаружите, что во многих случаях эти функции будут намеренно лгать вам, чтобы победить спамеров. Если был способ подтвердить, что электронное письмо реально, кроме того, что пользователь нажимает на проверку (или отменяет подписку....) link тогда спамеры были бы очень счастливы.
чтобы быть ясным, лучший способ проверить адрес электронной почты-отправить пользователю электронное письмо, содержащее ссылку, и ждать, пока они нажмут на ссылку, чтобы убедиться, что они получили электронное письмо. Любой другой техника (за исключением корпоративной / интранет-среды) должна терпеть неудачу и/или лгать, чтобы победить спамеров.
есть хороший проект здесь С фрагментами кода о том, как этого достичь, но, как упоминал Спенс, они не всегда могут работать правильно.
Если вы не беспокоитесь о публичных SMTP-серверах, лгущих вам (посмотрите раздел 2.11 здесь:http://tools.ietf.org/html/rfc2505), то лучший способ на самом деле может быть открыть TcpClient для сервера и запустить протокол SMTP самостоятельно. SMTP-очень, очень простой протокол. Вы можете в значительной степени узнать все, что вам нужно знать из Википедии:http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
нормально.
-
VRFY: забудьте об этом. Серьезно ;) ни один сервер не ответит - ни один вменяемый. Спамеры использовали слишком много.
- для остальных: подключитесь к серверу с помощью TCP, " просто сделайте это "(т. е. запрограммируйте рукопожатие SMTP, затем продолжайте).
вы можете попробовать использовать что-то подобное этому:
http://www.vcskicks.com/download-file-ftp.php
вместо использования Ftp используйте SMTP.