Smtp

  • Автор темы Автор темы Fish
  • Дата начала Дата начала

Fish

Guest
Smtp

Народ, столкнулся с такой проблемой:
нужно отправлять письма через свой SMTP сервер, но mail() не подходит для этого, т.к. мне нужно ручками прописать SMTP сервер, через который эта почта будет ходить.. подскажите, как можно найти выход из этой проблемы?
Заранее спасибо.
 
smtp

забыл добавить:
править .ini файлик, где прописываеться smtp сервер по умолчанию, не могу...
imap не стоит..
вот такие дела..
 
Re: smtp

можно через сокеты:
PHP:
<?php

$sd = fsockopen ('mail.server.com', 25, $errno, $errstr, 30);
if (!$sd)
{
   echo "$errstr ($errno)<br>\n";
}
else
{
   echo (fgets ($sd, 1024));
}
// ...
// дальше по smtp потоколу
// ...

fclose ($sd);
?>
 
Re: Re: Re: smtp

попробуй класс phpmailer. оч. удобно и голову не ломает. там есть доп. класс smtp который и делает отсылку через smtp. попробуй.
 
Re: Re: Re: smtp

Автор оригинала: Unregistered
...
команды SMTP я знаю, но в какое место их вставлять..
покажи на примере плиз..
как я понял должно вставляться примерно следующее:
HELO domain.com
MAIL FROM: <[email protected]>
RCPT TO: <[email protected]>
DATA
message--test
.
quit
вроде так..
дык в каком виде и куда это вставить?
заранее сенькс
Эти самые команды посылаешь с помощью fputs ($sd, $strCommand);
и читаешь ответы (fgets), если все ok (ответ начинается на 2) то продолжаешь дальше

каждая команда должна заканчиваться символом завершения строки
 
Re: Re: Re: Re: smtp

Эти самые команды посылаешь с помощью fputs ($sd, $strCommand);
и читаешь ответы (fgets), если все ok (ответ начинается на 2) то продолжаешь дальше
каждая команда должна заканчиваться символом завершения строки

-------------------------------------------------------------
PHP:
		$sd = fsockopen ('$server', 25, $errno, $errstr, 30);
		if (!$sd)
		{
		echo "ERROR: $errstr ($errno)\n";
		}
		else
		{
   		fgets ($sd, 1024);
   		fputs ($sd, strlen("helo $server\n"));
   		fputs ($sd, strlen("mail from: $from\n"));
   		fputs ($sd, strlen("rcpt to: $to\n"));
   		fputs ($sd, strlen("DATA\n"));
   		fputs ($sd, strlen("testTESTtest\n"));
   		fputs ($sd, strlen(".\n"));
   		fputs ($sd, strlen("quit\n"));
		}

fclose ($sd);


ну что тут не правильно?!
выдает ответы 2221111, т.е. не проходит строка
PHP:
fputs ($sd, strlen("DATA\n"));
ну и ессно, что все после нее тоже не проходит..

народ, можете показать нормально работающий скритп на эту тему?

заранее спасибо..
 
Re: Re: Re: Re: Re: smtp

Автор оригинала: Fish
PHP:
fputs ($sd, strlen("helo $server\n"));
fputs ($sd, strlen("mail from: $from\n"));
fputs ($sd, strlen("rcpt to: $to\n"));
fputs ($sd, strlen("DATA\n"));
fputs ($sd, strlen("testTESTtest\n"));
fputs ($sd, strlen(".\n"));
fputs ($sd, strlen("quit\n"));
...
...
ну что тут не правильно?!
...
Неправильно то, что ты посылаешь не сами команды а их длину...
 
Сверху