Страницы 1
Чтобы отправить ответ, вы должны вход или регистрация
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Тема: Доступ к внешнему smtp серверу из php4 используя сокеты.
Подскажите пожалуйста новичку, как реализовать посредством php4 доступ к smpt службе физически другого сервера(там работает sendmail) для осуществления через него рассылок? Имеется законный доступ ко всем серверам. Спасибо заранее. Задача: под учеткой [email protected] с сервера myserver1.ru с помощью php4 заставить послать почту сервер myserver2 на учетку [email protected] сервера myserver3.ru На обоих серверах 1 2 3 подняты почтовые сервера. Диалоги посредством telnet 25 проходят полностью и почта уходит. Привиденный ниже скрипт, запускаемый на 1 сервере, не работает - почта с 2 на три не посылается, не уходит. Те надо с 1 сервера заставить сервер 2 посылать письма на сервер 3. Сам сервер 1 только "заставляет" - реально почту должен слать сервер 2 на сервер 3. Помогите пожалуйста разобраться. <?php $server='myserver2.ru'; $to='[email protected]'; $from='[email protected]'; $subject='proba'; $message='proba mail_php'; function socketmail($server, $to, $from, $subject, $message) { $connect = fsockopen ($server, 25, $errno, $errstr, 30); fputs($connect, "HELO localhost\r\n"); fputs($connect, "MAIL FROM: $from\n"); fputs($connect, "RCPT TO: $to\n"); fputs($connect, "DATA\r\n"); fputs($connect, "Content-Type: text/plain; charset=iso-8859-1\n"); fputs($connect, "To: $to\n"); fputs($connect, "Subject: $subject\n"); fputs($connect, "\n\n"); fputs($connect, stripslashes($message)." \r\n"); fputs($connect, ".\r\n"); fputs($connect, "RSET\r\n"); } ?>
- Откуда: Germany
- Зарегистрирован: 19-05-2005
- Сообщений: 987
- User Karma: 7
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
Тут вся инфа что да как. _http://www.cable-com.de/mailsender.php
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
так реально есть что - то по коду? Те - где я что не так написал? Где конкретно ошибся?
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
не работает и то, что дали мне с сайта http://www.rucable.net/We-send-mail-with-smtp-auth.html и даже не пишет никаких диагностических сообщений....вот беда то :-(
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
да...то что я не бычу - факт конечно...но ведь можно же подсказать точно челу, где ошибся и че дальше смотреть?? :-((
- Откуда: Germany
- Зарегистрирован: 19-05-2005
- Сообщений: 987
- User Karma: 7
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
Может поддержки сокетов нету? или ты вот изза этого не видиш сообщения которые должны быть
if ($_REQUEST['action'] == 'Send') {
Попробуй убрать эти кавычки.
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
Я сделал уже все - заработало!! Всем спасибо за участие, если нужен будет реально работающий код - я выложу. :-)
- Откуда: Germany
- Зарегистрирован: 19-05-2005
- Сообщений: 987
- User Karma: 7
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
Хм, а что тот код который выше не рабочий?
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
а то мне показалось слишком длинным и сложным :-) <?php $server='1.1.1.1'; $to='[email protected]'; $from='[email protected]'; $subject='proba'; $message='proba mail_php'; $message="Content-Type: text/plain\r\nTo: $to\r\nSubject: $subject\r\n\r\n$message"; socketmail($server,$to,$from,$subject,$message); function socketmail($server, $to, $from, $subject, $message) { $connect = fsockopen ($server, 25, $errno, $errstr, 30); $echo = true; smtp($connect,"HELO localhost",$echo); smtp($connect,"MAIL FROM: $from",$echo); smtp($connect,"RCPT TO: $to",$echo); smtp($connect,"DATA",$echo); smtp($connect,"$message\r\n.",$echo); smtp($connect,"QUIT",$echo); } function smtp($fh,$cmd,$echo=true){ fputs($fh,"$cmd\r\n"); $s = fgets($fh); if ($echo) echo "$s"; return $s; } ?> вот :-)
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
при этом весь диалог с сервером выводится и просматривается отдельно! :-)
- Откуда: Germany
- Зарегистрирован: 19-05-2005
- Сообщений: 987
- User Karma: 7
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
Понятно. В коде все понятно мне, но скажу одно, что тут плохая обработка данных. Если письмо не уйдет, по не видимым причинами, то и не узнаеш ушло оно или нет. А принцип работы тот же, кроме того что обработчик ответов SMTP парсит ответы сервера немного подругому. Удачи!
- crash
- Administrator
- Неактивен
- Зарегистрирован: 19-05-2005
- Сообщений: 1 786
- User Karma: 20
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
dio пишет:smtp($connect,"HELO localhost",$echo);
лучше писать реальное имя... по крайне мере ко мне бы не пришло письмо при таком ответе
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
В данном случае это не играет особой роли, так как передается ip адрес запрашивающей стороны, как, например, в случае пинга....можно себя пинговать по ip? Можно конечно, но можно же и так #ping localhost - результат будет один и тот же. Так же можно было написать вместо localhost - 127.0.0.1 Только что проверил свои слова - все так и работает :-)
Отредактировано dio (25-11-2005 11:42:37)
- crash
- Administrator
- Неактивен
- Зарегистрирован: 19-05-2005
- Сообщений: 1 786
- User Karma: 20
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
ну вопрос был:
dio пишет:Доступ к внешнему smtp серверу
поэтому я сказал.
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
не, ну да...конечно, просто вот тут smtp($connect,"HELO localhost",$echo); php скрипт передает через localhost ip клиента smtp, который вызывает сервер на диалог.
- Откуда: Вильнюс (Литва)
- Зарегистрирован: 19-05-2005
- Сообщений: 892
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
crash пишет:dio пишет:smtp($connect,"HELO localhost",$echo);
лучше писать реальное имя... по крайне мере ко мне бы не пришло письмо при таком ответе
и ок мне бы тоже...
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
- crash
- Administrator
- Неактивен
- Зарегистрирован: 19-05-2005
- Сообщений: 1 786
- User Karma: 20
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
dio пишет:не, ну да...конечно, просто вот тут smtp($connect,"HELO localhost",$echo); php скрипт передает через localhost ip клиента smtp, который вызывает сервер на диалог.
у меня идет проверка имени хоста на наличие ip или МХ в DNS и если нет, то до посылает не очень далеко)
- dio
- Administrator
- Неактивен
- Откуда: Кубань, Краснодар
- Зарегистрирован: 19-05-2005
- Сообщений: 384
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
ну блин...забили все насмерть...напали на одного.... :-)
- Откуда: Вильнюс (Литва)
- Зарегистрирован: 19-05-2005
- Сообщений: 892
Re: Доступ к внешнему smtp серверу из php4 используя сокеты.
Ну почему, дельные советы... Зачем принимать письма не от авторизированных клиентов с несужествующим хостом, или с хостом без почтовой записи? Зачем принимать письма для не своих адресов? Какой нормальный сервер будет в хело представляться не смоим именем (а моим к примеру)?
Сообщений [ 20 ]
Страницы 1
Чтобы отправить ответ, вы должны вход или регистрация
|
|