[QUOTE]asy2 пишет:
[QUOTE]Алексей Гребнев пишет:
asy2 , формы-то я делаю, но для отправки собщений использую класс CEvent Битрикса, а как работает именно mail() я не разбирался.[/QUOTE]Посмотреть, что ли, на этот класс... Только кажется мне, что я найду всё ту же проблему... Сейчас за речку, отдыхать, а в понедельник глянуть попробую. ;)[/QUOTE]
Немного посмотрел. Сама отправка там, видимо, где-то совсем глубоко, так что не докопался за приемлемое время, так что проблему опишу, а смотрите уже сами, что и как. Нашёл, кстати, функцию bxmail, если я правильно понял,
что return @mail(), фактически, mail и вызывает, с возвратом кода завершения, то там ничего особенного не сделано и о проблеме надо как-то заботиться.
В общем, суть в том, что mail() [B]никак не формирует mail from[/B]. Соответственно, хотя там и передаётся шаблон, и там может быть заполнено поле From, значение mail from остаётся на усмотрение сервера. В итоге, сообщение формируется с каким-нибудь mail from:<apache@my.dom>, а то ещё и apache@localhost (ну или root@ и т.п.). И хорошо ещё, если этот E-Mail существует. Почта с такими mail from запросто может резаться всякими спамоловками, при этом, владелец сайта даже ошибок не увидит, если он не администратор сервера и не может посмотреть почтовые логи. Единственный вариант задать mail from, это использовать пятый параметр в mail(), который, как есть, передаётся почтовой программе. Но тут надо знать, кто почтовый агент в системе. В случае Sendmail, пятым параметром надо задать "-f <E-Mail>". Postfix и Exim имеют в своём составе соответствующие враперы для обеспечения совместимости с sendmail, так что с ними это тоже должно сработать. Ну и, естественно, ни о каком Safe Mode в PHP тут и речи быть не может, так как пятый параметр недоступен в этом режиме.
Сколько вижу, практически никого из современных PHP-кодеров эта проблема, правильной отправки E-Mail, не то, что не волнует, а они просто не подозревают о ней.