Просмотр полной версии : Функция РНР 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).
Если ты под Windows, то укажи SMTP=твой хост:порт (на котором живет твой mail сервер). Причем этот самый mail сервер должен быть правильно настроен для этого с точки зрения безопасности!
А если Unix/Linux то в sendmail_path пропиши путь к программе sendmail на твоем серваке.
хорошо подходит СМТП провайдера.... они по ип твоему определят
поясняю.. нужен почтовый 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).
x3.... попробуй на хостере.. может что-то не так с пхп под винду 9х
Может такое решение подойдет:
Запиши код отправки сообщения отдельным файлом, потом в основном коде после твоего код1 напиши
require_once("твой файл с кодом отправки сообщения");
а потом твой код2
Пока почта будет отправляться, должен выполнится твой код2
а после всего этого проверь переменную отправки сообщения на предмет удачного выполнения.
Bespalov Roman
11.07.2002, 10:15
Вот как - оказывается Server Error в этой строке с mail().
А в следующей строке такое:
Maximum execution time of 30 seconds exceeded in /имя файла и строки/,
какая бы она не была.
И почта соответственно никуда не уходит, хотя адреса и явки все заданы верно.
А последний вариант я еще не пробовал, посмотрим...
Если пишет Server Error, значит сервак, к которому ты обращаешься не принимает твое письмо, а это скорее всего потому, что ему нужен логин и пароль, вот это и есть настройки безопасности о которых я писал! Либо просто ты не можешь связаться с сервером (не тот порт или еще что-то)
SMTP не требует логина и пароля
Точно, че это я, блин, с POP3 перепутал.
Bespalov Roman
12.07.2002, 17:28
Большоое спасибо за ответы, особенно mdg и stasiku!
Все работает.
Даю ответ сам себе:
В php.ini я прописал
SMTP =mail.tula.net ,
а скрипт выполнялся не до конца потому, что не было соединения. Т.е. после срабатывания функции mail() предлагалось установить соединение, а после его разрыва возникала fatal error, которую я уже описывал. Если же сначала установить соединение, а затем отправить почту, то все работает нормально.
У меня есть еще вопросы, так что с форумом я не прощаюсь.
Всегда пожалуйста!:smile:
vBulletin® v3.8.5, Copyright ©2000-2024, Jelsoft Enterprises Ltd.