Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почта не отправляется
 
 автор: Blizard   (18.04.2008 в 22:55)   письмо автору
 
 

скажите, где включить разрешение отправки почты ф-ей mail() ?

   
 
 автор: mechanic   (18.04.2008 в 22:58)   письмо автору
 
   для: Blizard   (18.04.2008 в 22:55)
 

а что, оно где то запрещено?

   
 
 автор: Blizard   (18.04.2008 в 23:03)   письмо автору
 
   для: mechanic   (18.04.2008 в 22:58)
 

ну раз не отправляет возможно да

   
 
 автор: cheops   (19.04.2008 в 14:59)   письмо автору
 
   для: Blizard   (18.04.2008 в 22:55)
 

Это локальная машина или сервер в Интернет?

   
 
 автор: Atheist   (19.04.2008 в 17:00)   письмо автору
 
   для: Blizard   (18.04.2008 в 22:55)
 

Сама функция mail() не отправляет письмо, а передает это задание почтовому серверу, который наверняка у тебя не установлен.

   
 
 автор: Blizard   (19.04.2008 в 20:57)   письмо автору
 
   для: Atheist   (19.04.2008 в 17:00)
 

cheops, сервер в инете

а почта стоит webmail и прекрасно работает, тока вот mail() не работает, может быть код скинуть?

   
 
 автор: Blizard   (19.04.2008 в 21:02)   письмо автору
 
   для: Blizard   (19.04.2008 в 20:57)
 

Сам обработчик у меня вот такой:


<?php
session_start
();
$name $_POST["name"];
$email $_POST["email"];
$tema $_POST["tema"];
$message $_POST["message"];
$code1 $_POST["mycode"];
$code2 $_POST["code"];
$name strip_tags($name);
$lemail strip_tags($email);
$tema strip_tags($tema);
$message strip_tags($message);
$code2 strip_tags($code2);

if (
$code1 != $code2){
$r "Вы ввели неверный кoд";
$_SESSION["r"] = $r;
 
header("location:contact.php");
 exit();
}

if (
$name ==""){
$r "Вы не указали ваше имя";
$_SESSION["r"] = $r;
 
header("location:contact.php");
 exit();
}

if (
$tema ==""){
$r "Вы не указали тему";
$_SESSION["r"] = $r;
 
header("location:contact.php");
 exit();
}

if (
$email ==""){
$r "Вы не указали почту";
$_SESSION["r"] = $r;
 
header("location:contact.php");
 exit();
}

if (
$message ==""){
$r "Вы не написали текст сообщения";
$_SESSION["r"] = $r;
 
header("location:contact.php");
 exit();
}

$email_arr explode("@" $email);  
$host $email_arr[1];  
if (!
getmxrr($host$mxhostsarr))  
{  
$r "На адрес ".$mail." отправка почты невозможна";  
$_SESSION["r"] = $r;
 
header("location:contact.php");
exit();  



        
$mm mail("тут_моя_почта"$_POST['tema'].' '.$_POST['email'], $_POST['message']); 
if (!
$mm){
$r "Ошибка отправки";
       }
else
{
$r "Спасибо, ваше письмо отправлено!";
}

                                       
header("location:contact.php");
                                       
 
?>

   
 
 автор: Emm   (20.04.2008 в 18:57)   письмо автору
 
   для: Blizard   (19.04.2008 в 21:02)
 

А вы тестировали этот скрипт, он работает на локалке или еще где-то..?

   
 
 автор: cheops   (20.04.2008 в 11:01)   письмо автору
 
   для: Blizard   (19.04.2008 в 20:57)
 

А сервер ваш собственный или у хост-провайдера арендуете? В последнем случае вы сами вряд ли на что повлиять сможете и необходимо трясти службу технической поддержки.

   
 
 автор: Blizard   (20.04.2008 в 15:29)   письмо автору
 
   для: cheops   (20.04.2008 в 11:01)
 

выделенный сервер арендую у друга, он говорит что все должно работать...

   
 
 автор: Blizard   (20.04.2008 в 17:36)   письмо автору
 
   для: Blizard   (20.04.2008 в 15:29)
 

и всетаки что делать?

   
 
 автор: Atheist   (20.04.2008 в 20:07)   письмо автору
 
   для: Blizard   (20.04.2008 в 17:36)
 

<?php
echo ini_get('sendmail_path');
?>


По выведенному пути реально находится sendmail?

   
 
 автор: Director_Of_Zoo   (20.04.2008 в 21:37)   письмо автору
 
   для: Blizard   (20.04.2008 в 15:29)
 

в логах апача что написано? есть ли ошибки? Думаю это направление поиска путей решения будет верным, т.к. если у тебя сервак ну или ВПС - ты к ним доступ должен иметь точно.

   
 
 автор: Blizard   (20.04.2008 в 22:17)   письмо автору
 
   для: Director_Of_Zoo   (20.04.2008 в 21:37)
 

iniget показал:

/usr/sbin/sendmail -t -i

   
 
 автор: Blizard   (20.04.2008 в 22:21)   письмо автору
 
   для: Blizard   (20.04.2008 в 22:17)
 

захожу в /usr/sbin/ там нет senmail откуда его туда взять? )

   
 
 автор: Blizard   (20.04.2008 в 22:22)   письмо автору
 
   для: Blizard   (20.04.2008 в 22:21)
 

на самом деле sendmail находится тут /usr/local/sbin/sendmail

причина неотправки может быть в этом?

   
 
 автор: Director_Of_Zoo   (20.04.2008 в 22:35)   письмо автору
 
   для: Blizard   (20.04.2008 в 22:22)
 

логи посмотри.

   
 
 автор: Blizard   (20.04.2008 в 22:55)   письмо автору
 
   для: Director_Of_Zoo   (20.04.2008 в 22:35)
 

в логах ничего про это нет, вот насколько я понимаю нужно чтобы в sendmail_path путь должен быть указан /usr/local/sbin/sendmail а где найти этот sendmail_path ?

   
 
 автор: Director_Of_Zoo   (20.04.2008 в 22:58)   письмо автору
 
   для: Blizard   (20.04.2008 в 22:55)
 

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

   
 
 автор: Blizard   (20.04.2008 в 23:04)   письмо автору
 
   для: Director_Of_Zoo   (20.04.2008 в 22:58)
 

ну дык что делать та? )))

   
 
 автор: Atheist   (20.04.2008 в 23:40)   письмо автору
 
   для: Blizard   (20.04.2008 в 23:04)
 

Сменить адрес в php.ini на верный

   
 
 автор: Blizard   (22.04.2008 в 09:41)   письмо автору
 
   для: Atheist   (20.04.2008 в 23:40)
 

в php.ini поменял путь, теперь там так:


[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = /usr/local/sbin/

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =



а было


[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = 

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =



но все равно не отправляет

   
 
 автор: sim5   (22.04.2008 в 09:48)   письмо автору
 
   для: Blizard   (22.04.2008 в 09:41)
 

;sendmail_path = /usr/local/sbin/ - она как была не рабочей так и осталась, строка то ведь заремирована. ))

   
 
 автор: Blizard   (22.04.2008 в 09:49)   письмо автору
 
   для: sim5   (22.04.2008 в 09:48)
 

ну а как правильно напишите

   
 
 автор: Blizard   (22.04.2008 в 09:51)   письмо автору
 
   для: Blizard   (22.04.2008 в 09:49)
 

написал так


sendmail_path = /usr/local/sbin/


все равно

   
 
 автор: sim5   (22.04.2008 в 09:56)   письмо автору
 
   для: Blizard   (22.04.2008 в 09:49)
 

Если вы хотите, чтобы что-то заработало, то нужно убрать комментарий в строке. Не знаю как у вас, у меня на локалке работает sendmail-заглушка, потому так:

; этого мне не надо
;SMTP = localhost
;smtp_port = 25

; здесь путь к sendmail и параметры его
sendmail_path = \usr\sbin\sendmail -t -i

   
 
 автор: Blizard   (22.04.2008 в 10:10)   письмо автору
 
   для: sim5   (22.04.2008 в 09:56)
 

написал так:


sendmail_path = \usr\local\sbin\sendmail -t -i


проверяющий файл такой:


<?php 
echo ini_get('sendmail_path'); 

echo (
"<br><br>");

$g mail("kreggy@bk.ru","тема","сообщение");
if (
$g){
echo (
"сообщение отправлено<br><br>");
}
else
{
echo (
"сообщение не отправлено<br><br>");
}
?>


кстате echo ini_get('sendmail_path'); выводит все равно путь /usr/sbin/sendmail -t -i а не \usr\local\sbin\sendmail -t -i вопрос - почему? и почему вообще слэши не в ту сторону? )))))

   
 
 автор: sim5   (22.04.2008 в 10:12)   письмо автору
 
   для: Blizard   (22.04.2008 в 10:10)
 

Ну юморист, у вас об этом даже в php.ini написано - потому, что у меня Windows и слеши \, а у вас Unix и нужно так - /.

   
 
 автор: Blizard   (22.04.2008 в 10:17)   письмо автору
 
   для: sim5   (22.04.2008 в 10:12)
 

)))))) неопытный я просто )), слэши поменял на другие, все осталось также )) может дело вообще не в этом?

   
 
 автор: sim5   (22.04.2008 в 10:24)   письмо автору
 
   для: Blizard   (22.04.2008 в 10:17)
 

Мне трудно сказать в чем дело у вас на сервере. Это может неверный путь (проверить можно по логам), что-то с самим почтовым сервером (его настройками)... Я не занимаюсь сервером, это забота моего хостера. На локальном же компе, для реальной отправки почты, я пользуюсь не sendmail, а другим сервером, настраивая его, и отправляя почту по SMTP.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования