Наверное многим приходилось сталкиваться с такой ситуацией, когда нужно отправить почту через почтовый сервер, но доступа к нему у вас нет. Эту ситуацию можно разрешить несколькими способами. Первый - узнать у вашего провайдера адрес их почтового сервера, к которому она дадут вам доступ. Второй - использовать бесплатные почтовые сервера, которых в Интернете достаточно много. Третий - авторизироваться на почтовом сервере. Такой способ самый правильный, если ваш провайдер не предоставляет возможность отправки почты через их сервер. Второй способ хорош тем, что вы можете анонимно рассылать сообщение (фактически заниматься спамом). Но если вы не спамер, то зачем вам бесплатный сыр, который бывает только в мышеловке. Тем более, что такие сервера обычно или не работают, или достаточно ненадежны. Поэтому трясите своего провайдера. Я сам испробовал все варианты - мне пришлось искать варианты для надежной отправки почтовых сообщений. Мой провайдер (не буду уточнять, кто) предоставил мне такой классный сервер, что через него проходило только порядка 30 % моих писем. Остальные безвозвратно терялись в его недрах. После многократных попыток мне это надоело, и начал искать альтернативные пути. Нашел в Интернете список бесплатных серверов - но почти все они не отвечали, или жутко тормозили.
Такие публичные сервера обычно используют спамеры, поэтому периодически их отслеживают и отключают. Остался один вариант - отправлять почту с известных бесплатных почтовых сайтов - например www.rambler.ru, mail.ru, www.yahoo.com, www.yandex.ru и другие. Но тут есть проблема - если вы когда-нибудь отправляли почту с использование почтового клиента, то наверняка помните, что там есть опция - использовать авторизацию SMTP как на сервер входящей почты - то есть POP. Выход один - авторизироваться перед отправкой сообщения. Но проблема в том, что сервер идентифицирует вас по вашему IP-адресу не требуя от вас логина и пароля. Но если вы вошли на сервер по протоколу POP, и успешно авторизировались, то сервер открывает для вашего IP адреса доступ на определенное время (у разных служб время разное - от 15 до 30 минут). Если вы при этом поменяли свой IP адрес (например, если после обрыва соединения вы снова захотите отправить сообщение), сервер вас не пустит. Авторизация займет всего несколько строк. В протоколе POP есть стандартные команды авторизации: USER - задает имя пользователя PASS - задает пароль. Для соединения с сервером можно воспользоваться стандартными процедурами открытия сокета. Вы должны указать номер порта POP сервера - обычно 110, открыть соединение, авторизироваться и закрыть соединение. После этого смело открываете соединение с SMTP сервером в порт 25 и отправляете сообщение. (Отправка описана в моей предыдущей статье - "Отправка почтовых сообщений с использование РНР - сокеты, SMTP"). Привожу пример скрипта отправки почты с предварительной авторизацией.
$server = "mail.rambler.ru"; $user = "avanes"; $pass = "vah"; // авторизация POP $fp = fsockopen($server, 110, &$errno, &$errstr, 30); fputs($fp,"USER $user\n"); $s = fgets($fp); fputs($fp,"PASS $pass\n"); $s = fgets($fp); fputs($fp,"QUIT\n"); // отправка SMTP $fp = fsockopen($server, 25, &$errno, &$errstr, 30); $s = fgets($fp); fputs($fp,"HELO www.test.com.ua\n"); $s = fgets($fp); $s = explode(" ",$s); fputs($fp,"MAIL FROM:\n"); $s = fgets($fp); fputs($fp,"RCPT TO:<$to>\n"); $s = fgets($fp); fputs($fp,"DATA\n"); $s = fgets($fp); fputs($fp,"$mess"); fputs($fp,"\n.\n"); $s = fgets($fp); fputs($fp,"QUIT\n"); fclose($fp);
Вот и все. Естественно, перед тем как авторизироваться, вам нужно открыть свой почтовый ящик на этом сервере. И потом отсылайте на здоровье. Можно даже сравнить быстродействие и надежность отправки писем, методом точного научного тыка. Источник: http://www.wmast.com.ua php
Views: 483
 Be first to comment this article | | |