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

Форум PHP

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

 

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

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

тема: функция mail
 
 автор: Vasilij   (08.08.2007 в 17:47)   письмо автору
 
 

Не могу разобраться с функцией mail
подскажите пожалуйста, что я недосмотрел, где ошибка?


if(empty($_POST['mail_to'])) exit("Ви забули вказати адресу");
if(empty($_POST['imia'])) exit("Ви забули написати своє ім'я");
if(empty($_POST['message'])) exit("Ви забули написати повідомлення");
$_POST['mail_to']=htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['imia']=htmlspecialchars(stripslashes($_POST['imia']));
$_POST['message']=htmlspecialchars(stripslashes($_POST['message']));
$imia=$_POST['imia'];
$message=$_POST['message'];
$mail_to=$_POST['mail_to'];

mail($mail_to, $imia, $message);



соответственно есть форма, куда посетитель заносит данные, а письмо не отправляется

   
 
 автор: mihdan   (08.08.2007 в 17:49)   письмо автору
 
   для: Vasilij   (08.08.2007 в 17:47)
 

Вначале скрипта напиши

<?php
error_reporting
(E_ALL);
?>


И сообщи какие ошибки пишутся

http://www.php.net/manual/ru/ref.mail.php

   
 
 автор: Vasilij   (08.08.2007 в 18:01)   письмо автору
 
   для: mihdan   (08.08.2007 в 17:49)
 

Даю весь код, скрипт почему-то не реагирует на if(!empty($_POST))
пришлось закоментировать временно 3 строки с проверкой, может надо по-другому написать?
никаких ошибок не дает (правда у меня FreeBSD a не Windows) в логах тоже ничего нету

<?php
error_reporting(E_ALL);

if(!empty($_POST))
{
#if(empty($_POST['mail_to'])) exit("Ви забули вказати адресу");
#if(empty($_POST['imia'])) exit("Ви забули написати своє ім'я");
#if(empty($_POST['message'])) exit("Ви забули написати повідомлення");
$_POST['mail_to']=htmlspecialchars(stripslashes($_POST['mail_to']));
$_POST['imia']=htmlspecialchars(stripslashes($_POST['imia']));
$_POST['message']=htmlspecialchars(stripslashes($_POST['message']));
$imia=$_POST['imia']; $message=$_POST['message'];
$mail_to=$_POST['mail_to'];

mail($mail_to, $imia, $message);
}
?>

   
 
 автор: Faraon   (08.08.2007 в 17:53)   письмо автору
 
   для: Vasilij   (08.08.2007 в 17:47)
 

Держите готовую функу отправки мыла

<?php
sendmail
($from,$to,$tema,$message);
function 
sendmail($from,$to,$subj,$text) {
  
$headers  "Reply-To: $from\r\n";
  
$headers .= "From: $from\r\n";
  
$headers .= "Return-Path: $from\r\n";
  
$headers .= "Content-Type: text/html; charset=windows-1251\r\n";
  
$headers .= "Content-Transfer-Encoding: 8bit\r\n";
  
$headers .= "MIME-Version: 1.0\r\n";
  @
mail($to,$subj,$text,$headers);
}

?>

   
 
 автор: mihdan   (08.08.2007 в 17:56)   письмо автору
 
   для: Vasilij   (08.08.2007 в 17:47)
 

Вполне возможно(если у вас хостинг бесплатный) функция просто отключена. Гляньте в phpinfo() раздел disabled function

   
 
 автор: Vasilij   (08.08.2007 в 18:10)   письмо автору
 
   для: mihdan   (08.08.2007 в 17:56)
 

хостинг не бесплатный а "свой" то есть сервер достался мне в наследство и приходится разбираться

если не секрет, то где вкл. отправка писем с сайта (функция mail)?

   
 
 автор: mihdan   (08.08.2007 в 18:13)   письмо автору
 
   для: Vasilij   (08.08.2007 в 18:10)
 

Настройте php.ini для работы mail(); там в самом файле комменты - по-моему понятные

   
 
 автор: mihdan   (08.08.2007 в 18:14)   письмо автору
 
   для: Vasilij   (08.08.2007 в 18:10)
 


<?php
echo '<pre>';
print_r($_POST);
?>


Что кажет???

   
 
 автор: Vasilij   (08.08.2007 в 18:20)   письмо автору
 
   для: mihdan   (08.08.2007 в 18:14)
 

Результат

Array
(
[mail_to] => name@meta.ua
[imia] => test
[message] => proba
)

   
 
 автор: Vasilij   (08.08.2007 в 18:33)   письмо автору
 
   для: Vasilij   (08.08.2007 в 18:20)
 

в 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 =

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

какие 5 параметров написать? у меня сервер работает на FreeBSD

   
 
 автор: Trianon   (08.08.2007 в 19:26)   письмо автору
 
   для: Vasilij   (08.08.2007 в 18:33)
 

пятым параметром может быть передана строка с дополнительными аргументами к программе sendmail .

   
 
 автор: Vasilij   (09.08.2007 в 10:37)   письмо автору
 
   для: Trianon   (08.08.2007 в 19:26)
 

Просьба к тем, у кого сервер работает на FreeBSD:
покажите пример кода из php.ini, где разрешается функция mail
у меня в логах ошибок не пишет, но и письмо с помощью функции mail не отправляет

Может надо что-то настроить в Apache?

   
 
 автор: mihdan   (09.08.2007 в 10:48)   письмо автору
 
   для: Vasilij   (09.08.2007 в 10:37)
 

Таблица 1. Mail configuration options

Name Default Changeable Changelog
SMTP "localhost"
smtp_port "25"
sendmail_from mihdan@yandex.ru
sendmail_path путь к sendmail

У меня вот так настроено и работает ;) mail() в php.ini не отключена (disabled_function = mail)

   
 
 автор: Vasilij   (09.08.2007 в 13:05)   письмо автору
 
   для: mihdan   (09.08.2007 в 10:48)
 

решил проблему, теперь отправляю письмо с помощью сокета, это оказалась быстрей чем настроить сервер

спасибо всем кто давал советы, общими усилиями я вышел на путь истинный:)

   
Rambler's Top100
вверх

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