PDA

Просмотр полной версии : Функция РНР mail()


Bespalov Roman
10.07.2002, 11:08
Хочу использовать функцию РНР mail(), но у меня выскакивает ошибка соединения.
Я прочитал, что для ее спользования надо настроить PHP. Прошу помочь мне в этом. В рнр.ini я нашел только несколько строк относительно mail:

[mail function]
SMTP =localhost ;for win32 only
sendmail_from =me@localhost.com ;for win32 only
;sendmail_path = ;for unix only, may supply arguments as well (default is 'sendmail -t -i')

Где здесь нужно указать расположение программы электронной почты?

(У меня Apache+PHP+MySQL).

mdg
10.07.2002, 11:59
Если ты под Windows, то укажи SMTP=твой хост:порт (на котором живет твой mail сервер). Причем этот самый mail сервер должен быть правильно настроен для этого с точки зрения безопасности!

А если Unix/Linux то в sendmail_path пропиши путь к программе sendmail на твоем серваке.

Stasik
10.07.2002, 15:05
хорошо подходит СМТП провайдера.... они по ип твоему определят

tot_ra
10.07.2002, 15:22
поясняю.. нужен почтовый SMTP сервак (то ли 23 то ли 25 порт)..
попробуй
http://www.sendmail.org/ <--платная
http://www.postcastserver.com/ <-- беспалатная

Bespalov Roman
10.07.2002, 18:44
Спасибо за помощь!

Теперь у меня в SMTP (php.ini) записано:
SMTP =mail.tula.net

Но теперь другая фишка:
Запускается код странички откуда уходит почта; пока запрашивается соединение, она пуста, а когда почта ушла, то "код1" появляется, а "код2" - нет. Соединение после этого автоматически не отключается.

<HTML>
<body>
"код1"
<?
...
@ $errhan=mail($toaddr, $subject, $textmail);
if (!$errhan) echo "Ошибка соединения!";
?>
"код2"
</body>
</HTML>

В чем здесь дело? На сколько я понимаю, реальный сервер будет отправлять почту сразу (?), а как быть с остальной частью моей великолепной страницы?

И еще - что значит "правильно настроен с точки зрения безопасности", ведь это не мой сервак, а сервер провайдера?

(Да, я под Win98/Me).

Stasik
10.07.2002, 18:57
x3.... попробуй на хостере.. может что-то не так с пхп под винду 9х

mdg
10.07.2002, 20:07
Может такое решение подойдет:
Запиши код отправки сообщения отдельным файлом, потом в основном коде после твоего код1 напиши
require_once("твой файл с кодом отправки сообщения");
а потом твой код2

Пока почта будет отправляться, должен выполнится твой код2
а после всего этого проверь переменную отправки сообщения на предмет удачного выполнения.

Bespalov Roman
11.07.2002, 10:15
Вот как - оказывается Server Error в этой строке с mail().

А в следующей строке такое:
Maximum execution time of 30 seconds exceeded in /имя файла и строки/,
какая бы она не была.

И почта соответственно никуда не уходит, хотя адреса и явки все заданы верно.

А последний вариант я еще не пробовал, посмотрим...

mdg
11.07.2002, 12:15
Если пишет Server Error, значит сервак, к которому ты обращаешься не принимает твое письмо, а это скорее всего потому, что ему нужен логин и пароль, вот это и есть настройки безопасности о которых я писал! Либо просто ты не можешь связаться с сервером (не тот порт или еще что-то)

Stasik
11.07.2002, 12:52
SMTP не требует логина и пароля

mdg
11.07.2002, 16:21
Точно, че это я, блин, с POP3 перепутал.

Bespalov Roman
12.07.2002, 17:28
Большоое спасибо за ответы, особенно mdg и stasiku!
Все работает.

Даю ответ сам себе:
В php.ini я прописал
SMTP =mail.tula.net ,
а скрипт выполнялся не до конца потому, что не было соединения. Т.е. после срабатывания функции mail() предлагалось установить соединение, а после его разрыва возникала fatal error, которую я уже описывал. Если же сначала установить соединение, а затем отправить почту, то все работает нормально.

У меня есть еще вопросы, так что с форумом я не прощаюсь.

mdg
14.07.2002, 10:59
Всегда пожалуйста!:smile:

Stasik
14.07.2002, 18:01
no problem