Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.104.238] |
|
Сообщ.
#1
,
|
|
|
Блин, мужики помогите плз.
Воспользовавшись поиском набрел на скрипт отправки почты с помощью "сокетного" подключения к SMTP серверу. <?php function send_my_mail($host, $from, $to, $subj, $message, $type) { if($type=="") $type="text/plain"; $fp = fsockopen($host, 25); $log.=fgets($fp)."<br>"; fputs($fp, "HELO $host\n"); $log.=fgets($fp)."<br>"; fputs($fp, "MAIL FROM:<$from>"); $log.=fgets($fp)."<br>"; fputs($fp, "RCPT TO:<$to>"); $log.=fgets($fp)."<br>"; fputs($fp,"DATA"); $log.=fgets($fp)."<br>"; fputs($fp, "From: G@uSS"); fputs($fp, "Subject: $subj"); fputs($fp, "MIME-Version: 1.0"); fputs($fp, "Content-Type: $type"); fputs($fp,""); fputs($fp,$message); fputs($fp,"."); $log.=fgets($fp)."<br>"; fputs($fp,"QUIT"); $log.=fgets($fp)."<br>"; fclose($fp); return $log; } echo "-=start=-<br>"; $server_answers = send_my_mail("smtp.mydomain.com","gauss@mydomain.com","gauss@mydomain.com","Тема","Текст письма",""); echo $server_answers."<br>"; echo "-=end=-"; ?> Запускаю скрипт на своем web-сервере(Apache 2.0.55/PHP 5.1.1), долго жду... В итоге получаю ответ в окне броузера: -=start=- 220 mydomain.com Courier ESMTP server ready -=end=- Т.е. приветствие сервера, потом 7 <br>`ок и все... Как я понял скрипт закончил свое деяние по тайм-ауту. И еще такое впечатление что после того как скрипт получил приветствие, он(скрипт) серверу больше ничего не отправлял... Пробовал подключится к етому серверу с помощью TELNET на 25 порт. Проделал всю оперцию вручную - письмо отправилось, только с кодировкой проблема. Кто-нибудь может мне помочь разобраться в чем дело? |
Сообщ.
#2
,
|
|
|
Добавь в конец каждой строки, отсылаемой серверу, переаод каретки, а еще лучше - пару \r\n.
З.Ы. А какая-нибудь логика есть в том, что HELO отсылается через fwrite, а всё остальное - через fputs? |
Сообщ.
#3
,
|
|
|
Нет логики. Ето я сначала пробовал добиться результата изменением функции fputs на fwrite. А когда менял обратно видать не все изменил... Сейчас по-пробую то что вы мне по-советовали.
|
Сообщ.
#4
,
|
|
|
Adil, вы были правы. Вся проблема заключалась в нехватке пары "\r\n" в каждой строке, отправляемой серверу.
Спасибо за отзывчивость и помощь. + К модераторам форума есть предложение добавить данный нюанс в FAQ к сообщению про отправку почты. |