Доступ к внешнему smtp серверу из php4

dio4

Guest
у меня нет диалога....я делаю перенаправление в лог, те
/usr/local/bin/php /home/myfile.php >> /home/mylog_php
файл то создается, но он пустой....
RSET -это обрыв диалога с возвращением в исходное состояние клиента и сервера ....
 

whirlwind

TDD infected, paranoid
Я же говорю, выведи ответы сервера. Иначе мы никогда не выясним в чем проблема. И не нужен там никакой RSET.

-~{}~ 23.11.05 17:16:

Вот отличная статья, в которой все разжевано http://www.codenet.ru/webmast/smtp.php
 

dio4

Guest
За статью спасибо, я разобрался. Я не знаю как выложить ответы сервера, в процессе диалога, ИЗ PHP скрипта.
Руками (набирая последовательно команды smtp в консоли) я могу отослать почту, не могу посредством скрипта php - именно в этом проблема.
 

SiMM

Новичок
> как выложить ответы сервера, в процессе диалога, ИЗ PHP скрипта
[m]echo[/m]
 

whirlwind

TDD infected, paranoid
Проблема в абсолютном нежелании смотреть в мануал и делать выводы

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;
}
 

dio4

Guest
Автор оригинала: SiMM
> как выложить ответы сервера, в процессе диалога, ИЗ PHP скрипта
[m]echo[/m]
Спасибо - я знаю где находится мануал по PHP и про команду echo тоже слышал :)
Если не трудно вам - ведь речь идет о КОНКРЕТНОМ скрипте (я его привел выше) - то и покажите куда и что именно вставить в приведенный скрипт, чтобы увидеть ответы сервера. Спасибо заранее за конструктивную помощь новичку

-~{}~ 24.11.05 10:26:

Автор оригинала: whirlwind
Проблема в абсолютном нежелании смотреть в мануал и делать выводы

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;
}


Огромное спасибо за знания и терпение ко мне...я пробую этот код и сразу же отвечу , спасибо большое вам.
 

whirlwind

TDD infected, paranoid
Тогда совет на будущее: если что-либо можно куда-либо записать, то наверняка существует механизм, позволяющий из этого "куда-либа" читать. Обратное то же верно, но не всегда.
 

dio4

Guest
ОК - я запомню :)

-~{}~ 24.11.05 11:06:

Автор оригинала: whirlwind
Тогда совет на будущее: если что-либо можно куда-либо записать, то наверняка существует механизм, позволяющий из этого "куда-либа" читать. Обратное то же верно, но не всегда.
БОЖЕ!! Мнеб такого учителя в свое время!!! :))) Появился лог таки!!
Вот...
220 server2 ESMTP Sendmail 8.12.8/8.12.8; Thu, 24 Nov 2005 10:53:07 +0300
250 server2 Hello server1 [1.1.1.1], pleased to meet you
250 2.1.0 alexander@server1... Sender ok
250 2.1.5 alexander@server3... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.0.0 jAO7r73i026814 Message accepted for delivery
Я изменил ip адреса и имена юзеров, а так здорово!!!
А каково однако!!! whirlwind - ГЕНИЙ просто! Ни слова ругани в мой адрес и все советы по делу!! ОДНАКО!!! Чувствуется рука мастера, что не говори! :)

-~{}~ 24.11.05 11:08:

не...ну я не успокоюсь прямо....ну каково а?? Легким блин движением руки whirlwind заставил таки делать то что надо мои серваки...ай да молодца!!! Ай да мастак!!

-~{}~ 24.11.05 11:18:

не ...ну Питер он конечно...завсегда....я в Поповке был на стажировке в свое время....Питер - это класс!! :)

-~{}~ 24.11.05 11:20:

И в ВИФКе на соревнованиях бился по рукопашке... :)
 

Sparrow

Новичок
Этого требует RFC. Если в письме случайно окажется точка в пустой строке, то вся остальная часть письма будет проигнорирована.
 

Sparrow

Новичок
RFC 822, номер строки не подскажу. Но любой smtp-клиент это обязан делать. Сервер делает обратное преобразование автоматически. Повторюсь: если этого не сделать, то сервер проигнорирует все то, что идет после последовательности "\n.\n", которая является признаком конца письма.
 

dio4

Guest
Я спросил - где вы увидели то, о чем пишите тут, в примере кода, написанном whirlwind ?

Автор оригинала: Sparrow
А еще не забудьте заменить в $message "\n.\n" на "\n..\n"

Те - конкретно, где он в своем коде вместо вашего \n..\n написал неправильно \n.\n в $message??
В какой именно строке своего кода он ошибся по вашему мнению?
 

Sparrow

Новичок
Вы меня неправильно поняли
Я имел в виду то, что в код нужно добавить строку, осуществляющую такую замену перед отправкой методом str_replace или preg_replace
 

dio4

Guest
Господа, я понимаю, что вы все тут не новички, а корифеи PHP - я всего лишь новичек и прошу, для желающих мне помочь, добавления и исправления (прошу!) превносить ТОЛЬКО применительно к конкретно написанному выше коду; те конкретно - есть написанный код и если есть что - то сказать или исправить - я с удовольствием приму помощь, но КОНКРЕТНУЮ, по факту уже существующего, написанного и уже работающего кода. Спасибо заранее.
Вопросы общей философии, лирические отступления, соображения наиболее общего характера прошу не публиковать - они только сбивают меня и без того тупого и портят настроение не только мне, но, думаю, и окружающим.
Спасибо еще раз :)
 
Сверху