| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Проверка существования пользователя почты |
| Автор: comhunt 17.9.2010, 20:23 |
| Предыстория На сервере имеется почтовый домен postdomain.com. Имеется ряд пользователей этого почтового домена - т.е. фактически почтовые ящики. Имеется форма где посетитель сайта вводит адрес своей почты. Если он указывает несуществующий адрес почты то тут возможны два случая: 1. Почтовый домен введенного емаил не принадлежит данному серверу - проблем никаких. 2. Почтовый домен введенного емаил принадлежит данному серверу (postdomain.com) - в этом случае попытка отправить письмо по этому адресу вываливает ошибку в лог и завершает выполнение сценария. Отправку осуществляю при помощи модуля MIME::Lite Постановка задачи: Надо каким-то образом выяснить есть ли введенный пользователь на сервере или нет перед отправкой письма, чтобы избежать завершения сценария. |
| Автор: KSURi 17.9.2010, 20:29 |
| Никак вы это не выясните, не отправив письмо. |
| Автор: comhunt 17.9.2010, 21:00 |
| >Никак вы это не выясните, не отправив письмо. А почему это нельзя выяснить? Ведь домен находится на том же сервере где и скрипт! Неужели нельзя как то обратиться к почтовому серверу и выяснить есть ли пользователь или нет? |
| Автор: dva300 17.9.2010, 21:09 |
| если вы все по умолчанию и используете sendmail то возможно там в полезных скриптах что-то и есть на эту тему чтобы совсем красиво в виде ключика... но первое что приходит на ум это файл access или passwd - сервер то ваш. не вижу сложностей. P.S. я правда не совсем понял что это вы такое делаете. обычно задача стоит в проверке получателя за пределами вашего почтового домена |
| Автор: comhunt 17.9.2010, 21:26 |
| Да проблема в том что пользователем заполняющим форму может оказаться владелец ящика на моем сервере и написать его при этом неправильно. (такое периодически случается...) А мой скрипт должен прислать ему на почту письмо-уведомление. Так вот умный почтовый сервер при попытке прислать письмо на несуществующий адрес в домене который ему принадлежит вываливает ошибку и скрипт киляется. В этом то проблема и есть, и ее надо как-то избежать. |
| Автор: dva300 17.9.2010, 21:37 | ||
хм... показываете скрипт. могу предположить что все может решиться заменой $msg->send || die на что-нибудь другое |
| Автор: comhunt 18.9.2010, 09:12 |
| Кусок кода для отправки: my $msg = MIME::Lite->new( From => $sender_email, To => "$recepient", Subject => "$topic", Type => "text/plain; charset=windows-1251", Data => "$text" ); $msg->send('smtp', $cfg::sender_server, Timeout=>$cfg::sender_timeout); Вот проблема как раз в $recepient |
| Автор: dva300 18.9.2010, 10:02 | ||||
попробуйте так
|
| Автор: arto 18.9.2010, 14:29 |
| все зависит от архитектуры вашей mail системы. у вас там могут быть как простые пользователи, так и алиасы и виртуальные пользователи. если нс можете разобраться -- просто пошлите письмо и попросите ответить. |
| Автор: MaxPayne 20.9.2010, 14:33 |
| У нас на линуксе существовали папки пользовтелей - соответственно созданные при заводе почты. Возможно есть смысл проверять есть ли данные данные папки на серевере. Если есть, то есть и пользователь. |