Как проверить, существует ли адрес электронной почты, не посылая электронное письмо?

sys.getsizeof сообщает только о стоимости самого list, а не о его содержании. Итак, вы видите стоимость хранения заголовка объекта list, плюс (чуть более) 50M указателей; Вы, вероятно, используете 64-битную (восьмибайтовую) систему указателей, поэтому хранилище для 50M-указателей составляет ~ 400 МБ. Получение истинного размера потребовало бы вызова sys.getsizeof для каждого объекта, рекурсивно, для каждого объекта __dict__ (если применимо) и т. Д., И он не будет на 100% точным, поскольку некоторые объекты (например, маленькие int ] s), вероятно, являются общими; это не кроличья нора, которую ты хочешь спустить .

114
задан SagarPPanchal 30 January 2014 в 09:57
поделиться

8 ответов

Существует два метода, которые Вы можете иногда использование, чтобы определить, существует ли получатель на самом деле:

  1. можно соединиться с сервером и дать команду VRFY. Очень немного серверов поддерживают эту команду, но она предназначается для точно этого. Если сервер отвечает 2.0.0 DSN, пользователь существует.

    пользователь VRFY

  2. можно выпустить ПРИЕМ и видеть, отклоняется ли почта.

    ПОЧТОВЫЙ FROM:< >

    ПРИЕМ TO:< user@domain>

, Если пользователь не существует, Вы получите 5.1.1 DSN. Однако просто, потому что электронная почта не отклоняется, не означает, что пользователь существует. Некоторый сервер тихо отбросит запросы как это для предотвращения перечисления их пользователей. Другие серверы не могут проверить пользователя и иметь для принятия сообщения независимо.

существует также техника против спама, названная greylisting, который заставит сервер отклонять адрес первоначально, ожидая, что реальный сервер SMTP делал бы попытку возвращения некоторое время спустя. Это испортит попытки проверить адрес.

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

90
ответ дан Joseph Tary 24 November 2019 в 02:36
поделиться

Я думаю, что Вы не можете, существует столько сценариев, даже отправление электронного письма может перестать работать. Например, почтовый сервер на стороне пользователя временно снижается, почтовый ящик существует, но полон, таким образом, сообщение не может быть передано, и т.д.

Это, вероятно, почему столько сайтов проверяет регистрацию после того, как пользователь подтвердил, что они получили электронное письмо подтверждения.

1
ответ дан PhiLho 24 November 2019 в 02:36
поделиться

Принятие, которое это пользователь адрес, некоторые почтовые серверы, действительно позволяет команде SMTP VRFY на самом деле проверять адрес электронной почты против своих почтовых ящиков. Большая часть крупнейшего сайта не даст Вам много информации; ответ Gmail, "при попытке отправить его по почте, то мы попытаемся поставить его" или что-то умное как этот.

1
ответ дан Austin Salonen 24 November 2019 в 02:36
поделиться

"Можете Вы говорить, входит ли почтовый клиент / пользователь, корректный & существует?"

На самом деле это две отдельных вещи. Это могло бы существовать , но не могло бы быть корректно.

Иногда необходимо взять вводы данных пользователем в номинальной стоимости. Существует много способов победить систему иначе.

2
ответ дан Learning 24 November 2019 в 02:36
поделиться

Обо всем можно сделать, искать DNS и гарантировать домен, который находится в адресе электронной почты, имеет запись MX, кроме которой нет никакого надежного способа иметь дело с этим.

Некоторые серверы могут работать с приемом - к методу, где Вы говорите с сервером SMTP, но он зависит полностью от конфигурации сервера. Другой проблемой может быть перегруженный сервер, может возвратить 550 кодов, говоря, что пользователь неизвестен, но это - нерегулярная ошибка, существует систематическая ошибка (451, я думаю?), который может быть возвращен. Это зависит полностью на конфигурации сервера.

я лично проверил бы на запись MX DNS, затем отправить подтверждение адреса электронной почты, если запись MX существует.

2
ответ дан Bryan Rehbein 24 November 2019 в 02:36
поделиться

Некоторые проблемы:

  1. я уверен, что некоторые серверы SMTP сразу сообщат, если адрес, который Вы даете им, не будет существовать, но некоторые не будут как мера по конфиденциальности. Они просто примут любые адреса, которые Вы даете им и тихо игнорируете тех, которые не существуют.
  2. , Поскольку в статье говорится, если Вы будете делать это слишком часто с некоторыми серверами, то они поместят в черный список Вас.
  3. Для некоторых серверов SMTP (как Gmail), необходимо использовать SSL, чтобы сделать что-либо. Это только верно, когда использование сервера SMTP Gmail к отправляет электронная почта.
4
ответ дан Graeme Perrow 24 November 2019 в 02:36
поделиться

Едва ли..... Некоторый сервер не может проверить "прием к":

http://www.freesoft.org/CIE/RFC/1123/92.htm

Выполнение так является угрозой безопасности.....

, Если сервер делает, можно записать бота в исследование каждый адрес на сервере....

6
ответ дан l_39217_l 24 November 2019 в 02:36
поделиться

Общий ответ - то, что Вы можете не проверка, если адрес электронной почты существует событие при отправке электронного письма ему: это могло просто войти в черную дыру.

, Что, будучи сказанным метод описал, там является довольно эффективным. Это используется в производственном коде в ZoneCheck за исключением того, что это использует RSET вместо ВЫХОДА.

, Где взаимодействие с пользователем с его почтовым ящиком не является сверхдорогостоящим, много сайтов на самом деле тестируют это, почта прибывает куда-нибудь путем отправки секретного числа, которое нужно передать обратно эмиттеру (или путем движения в секретный URL или передачи этого секретного числа обратно по электронной почте). Большинство списков рассылки работает как этот.

8
ответ дан kmkaplan 24 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

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