Гарантии срабатывания mail() ?

sko

Guest
Гарантии срабатывания mail() ?

Я вчитывался и понял что проконтролировать отправку письма на php невозможно. Вопрос несколько иной: как быть уверенным что функция mail() вообще сработала?

я бы сделал так:
if (mail(...)) echo "сработало!";
else echo "не сработало...";

НО в справочнике написано bool mail(), и эта функция не возвращает чего-либо типа true/false, и поэтому не является условием для if.

Так каковы гарантии что функция mail() сработала? Или просто если сервер не выдал никаких ошибок, то функция сработала? Например я указываю для отправки несуществующий ящик - сервер не ругается, ну и ладно, ну и пусть - я хотя бы буду уверен что письмо отправлено на указанный мной ящик при обработке формы, и поэтому точно дойдет.

А?
 

SiMM

Новичок
> НО в справочнике написано bool mail(), и эта функция не возвращает чего-либо типа true/false, и поэтому не является условием для if.
А что по твоему обозначает bool перед названием функции [m]mail[/m]?

> Так каковы гарантии что функция mail() сработала?
Если под этим подразумевается, что письмо дойдёт до почтового ящика адресата и будет им прочитано - то никаких.
 

betik

Новичок
Проверить существование ящика на чужом сервере, ИМХО невозможно.. и это правильно.
 

Popoff

popoff.donetsk.ua
Ну почему же не возможно :) На некоторых серверах - возможно :)
 

DimbIch

Новичок
Popoff
в принципе на ЛЮБОМ можно - отправляется мыло - если пришло назад - ящика нет - но это так просто...
не относиться к функции mail() и ее контролирования :)
 

Popoff

popoff.donetsk.ua
говоря
я имел в виду, что сервер может не принять адрес получателя, а, значит, и само письмо, если получатель - локальный и такого пользователя нет.
 

sko

Guest
ВНИМАНИЕ: вопрос в другом. Я отправляю html-форму на СВОЙ, заранее 100% работающий ящик. Пользователь жмет кнопку - срабатывает функция mail() - какие гарантии что она сработала??? по-моему, ни в каком случае сервер не выдаст ошибок, хотя я не рассматриваю ошибки синтаксиса/орфографии.

Я хотел бы сделать, чтобы при отправки письма пользователю нажавшему кнопку вывелось 1 из ДВУХ сообщений: "успешно отправлено" или "у сервака проблемы, не отправлено" - как контролировать такое событие?

Адресат - мой ящик, работает 100%. Но пользователь - клиент, отправляющий заказ на продукцию через форму на сайте - где гарантии что функция сработала? чтобы не оказалось так что клиент заказал и ждет что ему ответят - а ему не отвечают, потому что функция mail() вообще не сработала? - потеря клиента :(

P.S.: может я что глупое говорю и функция mail() срабатывает всегда, если написана без ошибок? - я не знаю, поэтому спрашиваю.




-~{}~ 25.04.05 23:27:

Автор оригинала: SiMM
> НО в справочнике написано bool mail(), и эта функция не возвращает чего-либо типа true/false, и поэтому не является условием для if.
А что по твоему обозначает bool перед названием функции [m]mail[/m]?
По-моему, bool = true / false.

НО! следующее не работает:

if (mail(...)) echo "сработало!";
else echo "не сработало...";

Значит скорее верно: void mail(). Или надо писать if (mail(...)==true)... ???

я не смог получить какого либо результата, как мне кажется. При таком написании письмо отправлялось, но срабатывала ВТОРАЯ ветка: else echo "не сработало...";
 

sir

Guest
PHP:
$sucess = mail($mailto, $subject, $body,

"From: $mailfrom
X-Mailer: PHP/" . phpversion());
 if ($sucess)
    {
       echo "Письмо отправлено.";
           }
 

sko

Guest
Не работает! :p

письмо отправляется, а на экран echo не выводит - функция mail() ничего не возвращает - ни true, ни false

-~{}~ 26.04.05 01:29:

2 Мутник: вот и я о том же, просто для перестраховки этот вариан привел - вопрос то не решен (ты ответил на предположение, а не на вопрос)
 

betik

Новичок
Сохраняй доп. в текстовый файл и не мучай себя...
А текстовый файл по крону отсылай...
 

Hank

Guest
А не легче ли заказы хранить в бд а не на мыло отсылать?
по мне так намного проще и 100% сработает
 

Pacific

Guest
Re: Гарантии срабатывания mail() ?

mail($to, $subject, $message) or print "Не могу послать письмо";
Это работает. Но всегда выводит, что не может :(
Этой функцией лучше не пользоваться.
 

sko

Guest
Автор оригинала: Hank
А не легче ли заказы хранить в бд а не на мыло отсылать?
А какие гарантии что базу не крякнут? :D Зачем лишние уязвимости - так только ящик почтовый защищай.

-~{}~ 26.04.05 15:57:

Автор оригинала: Pacific
mail($to, $subject, $message) or print "Не могу послать письмо";
Это работает. Но всегда выводит, что не может :(
Этой функцией лучше не пользоваться.
Ага :D - "Этой функцией лучше не пользоваться"

-~{}~ 26.04.05 15:59:

Автор оригинала: betik
Сохраняй доп. в текстовый файл и не мучай себя...
А текстовый файл по крону отсылай...
Этот вариант у меня как запасной - тоже так думал.

-~{}~ 26.04.05 16:02:

Автор оригинала: hobobob
функция майл возвращает правда или ложь в булеан

$test = mail("[email protected]", "My Subject", "Line 1\nLine 2\nLine 3");
var_dump ($test);
Пойду почитаю что такое "var_dump()" - типа без нее $test нельзя использовать в логическом условии if?...


А так, СПАСИБО всем, ясность появилась, хоть какая-то... - ну типа в БД, в дополнительный файл... А пока я явно пишу пользователю типа "ваш заказ отправлен, если не отвечают - недоставлен по техническим причинам - напишите самостоятельно на почту ***" :)
 

Lews

Новичок
Re: Гарантии срабатывания mail() ?

Автор оригинала: sko
Я вчитывался и понял что проконтролировать отправку письма

НО в справочнике написано bool mail(), и эта функция не возвращает чего-либо типа true/false, и поэтому не является условием для if.
А?
А почему ты решил, что эта функция не возвращает чего-то типа true/false? =)
 

Hank

Guest
Автор оригинала: sko
А какие гарантии что базу не крякнут? :D Зачем лишние уязвимости - так только ящик почтовый защищай.
Почему ж тогда форум не ломанут? сообщения то хранятся в базе
 

sko

Guest
Re: Re: Гарантии срабатывания mail() ?

Автор оригинала: Lews
А почему ты решил, что эта функция не возвращает чего-то типа true/false? =)
НАРОД!!! кончайте парить - я все ваши предложения на практике проверяю - не работают, я об этом даже заранее знал! Вот Lews, попробуй-ка ты сам воплотить в жизнь это условие if ... then ?! я понимаю что такое bool - но говорю что не возвращает чего-то типа true/false, потому что "не срабатывает". ПРОВЕРЬ.

-~{}~ 27.04.05 12:01:

Автор оригинала: hobobob
надо не про вар дамп читать а про майл
хотя и про вар дамп тоже не помешает

$test = mail("[email protected]", "My Subject", "Line 1\nLine 2\nLine 3");
if($test === TRUE){echo"письмо отправлено по указанному вами адресу";}
else{echo"произошла ошибка, отправьте письмо стандартными стредствами";}
ОТЛИЧНО!
НО ПРОВЕРЬ СВОЙ ПРИМЕР САМ!!!!!! АААААААА, аж распирает меня!
даже если заменить === на == - результат ОДИН:
письмо отправлено, доставлено, а на экране "произошла ошибка, отправьте письмо стандартными стредствами"

ТЫ САМ ПРОВЕРЯЛ??????? нет? - ну можешь проверить, я тебе сказал о результате.
 
Сверху