Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Возникла проблема.


Автор: nurv_ad 15.10.2006, 11:17
как настроить smtp в php.ini
если есть вот такое воплощение
обработка письма идет с помощью

$headers.="MIME-Version: 1.0\r\n";

при этом в php.ini установлено так

extension=php_mime_magic.dll
[mail function]
; For Win32 only.
SMTP = 213.141.158.25 (мой внешник)

; For Win32 only.
sendmail_from = [email protected] (мыло по дефолту так как не нужно мне.)

но все равно не хочет отсылать письмо. в чем может быть проблема.

ps вот такая ошибка случается
Warning: mail(): SMTP server response: 550 5.7.1 <[email protected]>;... we do not relay <[email protected]>; in maili\ndex.php on line 72

на линии находится 
line 72 mail($email,$tema,$body,$headers); (я думаю ругается на headers а именно на mime

немного увел вас от мысли...

он все таки отправляет письмо но с большой задержкой на мыло которое мне нужно но все равно ругается Почему?

Автор: Black Rabbit 21.10.2006, 03:13
Думаю из-за того, что в хедерах письма не прописан адрес отправителя и php вместо него вставляет мейл, прописанный по умолчанию- несуществующий адрес [email protected]
Вот пример корректных хедеров

Код

 function _makeHeaders(){
   $mailHeader .="MIME-Version: 1.0\r\n";
   $mailHeader .= "From: ".$this->_sender()."\r\n"; 
   $mailHeader .= "'X-Mailer: PHP/'".phpversion()."\r\n";
   $mailHeader .=  "Content-Type: text/{$this->Format}; charset={$this->Charset}\r\n";
   $mailHeader .=  "Content-Transfer-Encoding: 8bit\r\n"; 
   return $mailHeader;
 }


$this->_sender() - email отправителя
$this->Format - html либо text
$this->Charset - кодировка письма

Хедер MIME-Version: 1.0\r\n  должен присутствовать обязательно!!!!!! и идти первым -
это стандарт почтовых протоколов

Автор: nurv_ad 29.10.2006, 13:32
Не выходит аленький цветочек.

Чет я уже замучался и голова не соображает но сдаваться не хочу..

есть скрипт
Код

<?
//отключим отображение ошибок
//Error_Reporting(E_ALL & ~E_NOTICE);

if (($HTTP_POST_VARS["action"]='ok') )
{
//записываем в переменные
$from=$HTTP_POST_VARS["from"];
$tema=$HTTP_POST_VARS["tema"];
$file_mail=$HTTP_POST_VARS["file_mail"];
$message=$HTTP_POST_VARS["message"];
//проверяем переменные
if (($from=="") && ($tema=="") && ($file_mail=="") && ($message==""))
{
exit;
}
else
{
//открываем файл с адресами
$mail_F=file($file_mail);
//проверяем открылся ли файл
if(!$mail_F){echo("Ошибка открытия файла");}
else
  {
//собираем письмо
     $from=$HTTP_POST_VARS["from"];
     $tema=$HTTP_POST_VARS["tema"];
     $message=$HTTP_POST_VARS["message"];
     $mailHeader .="MIME-Version: 1.0\r\n";
     $headers="From: ".$from."\r\nReply-To: ".$from."\r\n";
     $mailHeader .= "'X-Mailer: PHP/'".phpversion()."\r\n";
     $mailHeader .=  "Content-Type: text/{$this->Format}; charset={$this->Charset}\r\n";
     $mailHeader .=  "Content-Transfer-Encoding: 8bit\r\n";
     $body.=$message."\r\n\r\n";
    for($i=0; $i < count($mail_F); $i++)
    {
      $email=$mail_F[$i];      //выбираем мыло с номером $i
       mail($email,$tema,$body,$headers);  //отсылаем
      echo "Сообщение на ящик: <b>".$mail_F[$i]."</b>успешно отослано<br>"; //все успешно
    }
  }
  echo "Рассылка завершена."; //все отправили
}

}
?>

настройки php.ini

[mail function]
; For Win32 only.
SMTP = 213.141.158.25  //привязанное имя nurv-ad.net.ru
smtp_port = 25
sendmail_from = [email protected]
sendmail_path = -t -i

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

Автор: nerezus 1.11.2006, 08:30
nurv_ad, зачем ты смешал в кучу вендовые и никсовые настройки?

Автор: Black Rabbit 3.11.2006, 03:49
Слушай.... функция mail работает через sendmail, а не smtp
Проверь правильно ли в php.ini прописан путь до сендмайла

Пример
sendmail_path = \usr\sbin\sendmail -t -i

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)