Разрешить user @ example или user @ localhost при проверке электронной почты? - PullRequest
2 голосов
/ 17 сентября 2008

Я работаю над проверкой электронной почты, и нам нужно решить, следует ли разрешить проверку user @ localhost и user @ example (no noanything) в качестве действительного адреса электронной почты. Это для проекта с открытым исходным кодом, который имеет несколько вариантов использования как в Интернете, так и в интрасетях.

RFC 2822 (стандарт формата интернет-сообщений) разрешает это, но RFC 2821 (стандарт SMTP) говорит, что это должно произойти.

Мысли

Ответы [ 6 ]

1 голос
/ 16 ноября 2009

Я бы отключил это. Очень немногие организации используют внутренние домены, и те, которые обычно используют "acme.localhost" или "intranet.com" или что-то подобное. В DNS происходит какая-то конфигурация, которую они используют, чтобы она работала.

Несмотря на это, внутренняя электронная почта в любом случае практически мертва: с появлением мгновенных сообщений, Twitter и SMS, а также с увеличением доступности внешней электронной почты для каждого члена компании почти вполне вероятно, что вы никогда не получите TLD домен без электронной почты.

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

1 голос
/ 17 сентября 2008

Сделайте это настраиваемым параметром, чтобы люди могли решать сами. Лично я бы по умолчанию отказал, так как лично мне еще не приходилось сталкиваться с делом - интранетом или общедоступным интернетом, - где кто-то использовал действительный адрес типа user @ localhost.

1 голос
/ 17 сентября 2008

Это зависит от вашего приложения. Если вы думаете, что у нескольких ваших пользователей будет электронная почта @localhost, и вы не против. Тогда иди на это.

0 голосов
/ 17 сентября 2008

Глядя на это, похоже, что вам нужны две быстрые проверки как подробно:

<?php 
function valid_email($email) { 
    // First, we check that there's one @ symbol, and that the lengths are right 
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) { 
     // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
     return false; 
    }

    // take a given email address and split it into the username and domain. 
    list($userName, $mailDomain) = split("@", $email); 
    if (checkdnsrr($mailDomain, "MX")) { 
        // this is a valid email domain! 
        return true;
    } 
    else { 
        // this email domain doesn't exist!
        return false;
    }
} 
?>

( источник 1 , источник 2 )

0 голосов
/ 17 сентября 2008

Я видел адреса электронной почты вида user @ localhost, обычно при просмотре архивов списка рассылки и администратора, размещенного и размещенного на одном компьютере. Так что это определенно может произойти - и я признаю, что это нарушило мою процедуру разбора! Так что теперь я немного более гибок в адресах электронной почты.

0 голосов
/ 17 сентября 2008

Что ж, если у вас есть DNS, работающий внутри, вы всегда можете просто выполнить поиск DNS.

Но если с SMTP это не получится, я бы посоветовал вам не включать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...