Подскажите, кто знает, сломал всю голову... Примерный текст скрипта: Код (PHP): $subject = "Форма обратной связи"; $message = "какое-то содержание"; $emailto = "name@mail.ru"; $emailfrom = "name@yandex.ru"; // пример 1 заголовка // $headers = "Content-type:text/html; Charset=utf-8\r\nFrom:".$emailfrom."\r\n" // пример 2 заголовка // $headers = 'From: name@yandex.ru' . "\r\n" . 'Reply-To: name@yandex.ru' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); // пример 3 заголовка $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'To: <name@mail.ru>' . "\r\n"; $headers .= 'From: <name@yandex.ru>' . "\r\n"; $headers .= 'Cc: name@mail.ru' . "\r\n"; $headers .= 'Bcc: name@mail.ru' . "\r\n"; $chek = mail($emailto, $subject, $message, $headers); //отправляем сообщение if($chek) echo "Ваше письмо1 успешно отправлено!"; else echo "Ваше письмо1 не отправлено!"; $chek = mail($emailto, $subject." short", $message); //отправляем сообщение if($chek) echo "Ваше письмо2 успешно отправлено!"; else echo "Ваше письмо2 не отправлено!"; так вот - оба варианта (с $headers и без) ошибок не возвращают, но до адресата письмо доходит только (!) в том случае, если $headers не был указан. Перепробовал самые разные варианты (в коде приведены 3 шт (2 из них взяты с этого сайта), но были и другие). В чём дело?
Если Вы невнимательно прочитали, то вопрос был не в том, какие ещё средства посылки почты существуют в PHP и где их найти, а как заставить mail() работать в соответствии с описанием. Но, что важнее всего, мне заранее неизвестны реквизиты smtp-сервера - mail их не требует.
akhn а может ты не внимательно читал ответ? Письма могут не проходить проверку, и почта это не гарантированный способ передачи (особенно отправлять с mail.ru на yandex.ru со своего сервера, это и к другим почтовым серверам относится, лучше у хостера получи почту и с неё отправляй). Не осилил функцию mail(), читай RFC по протоколу отправки почты. Или постарайся изучить мой ответ, если почитать документацию PHPMailer и посмотреть примеры использования, то можно обнаружить как его использовать с mail() https://github.com/PHPMailer/PHPMailer/blob/master/examples/mail.phps
Если бы ТЫ разбирался в вопросе, то знал бы, что внутри класса phpmailer всё равно инспользует mail() с параметром headers, это значит, что вся эта невдолбенная конструкция (phpmailer) не работает, от слова совсем. В итоге мы выходим на исходную: почему не работает mail() с параметром headers? - и именно в этом случае. PS научись общаться! - отсылка на сторонний пакет без слова комментария это не ответ, а профанация
тут не кто никому ничего не должен, если phpmailer не работает, значит настройки сервера неверные, проследи какое письмо уходит с сервер и какой ответ на него получает. Твой код у меня отлично работает.
Ну да! - см. строку 650 в файле class.phpmailer.php Стоит закомментировать параметр(ы) после $body в вызове, письма начинают приходить.
А все остальное там чисто для значимости? Вообще, мне конечно пофиг, но логика тут проста. Если почта не отправляется с кривыми заголовками, значит скорее всего они таки кривые. Заюзай нормальный пакет, посмотри чем сформированное ими письмо отличается от твоего, внеси правки. Вон, denis01 вообще пишет что у него все нормально уходит - это прозрачно намекает, что решение не лежит на поверхности и перестановками наугад тут не поможешь. Может проблемы в сервере или где ещё... Но если хочешь отрицать очевидные вещи, то это только лишь твои проблемы )
ну, если обращаться к логике... она - упрямая вещь. Дело в том, что все(!) заголовки формируются phpmailer-ом. Добавлено спустя 39 секунд: согласен. Пардон, если что не так. Настройки, вполне возможно, неверные, но ни повлиять на них, ни узнать путь решения сейчас нет возможности - нет связи с техподдержкой хостинга. Из всех инструментов диагностики располагаю только возможностью принимать (или не принимать) письма, направленные на свой адрес и сообщениями на веб-странице. Похоже, он работает где и у кого угодно
Спасибо всем заинтересовавшимся! Разобрался. "Дело было не в бобине", как говорится. Оказалось, работает-таки mail() с упомянутым параметром, но только в том случае, если в нём нет упоминания поля "From:". Вернее, даже так: не работает, если значение этого поля отличается от того, что присваивается автоматически, а значение это имеет абсолютно блевотный вид: xxx-su_fd36a3e0@xxx.ru (иксы - мои) Собственно, ради чего всё и было затеяно - изменить sender-а, т к половина почтовых систем эти письма сразу в спам отправляет. Короче, обложили, гады.
Даю подсказку - это автоматически созданный ящик postfix'ом, или что там у вас стоит. Почитайте про настройку почтовой службы, создайте себе тот ящик, который вы хотите, и его указывайте в from