И снова здравствуйте. По совету человека с этого форума принялся за изучение метода отправки почты через PHPMailer и столкнулся со следующей проблемой. При запуске feedback.php в браузере пишет: Warning: Cannot modify header information - headers already sent by ... Изучил мануал по адресу http://cannot-modify-header-information.ru, но так и не нашёл корня проблемы. Может кто подскажет? Используемое ПО - комплекс Denwer, PHPMailer. Локальный сервер. Код (Text): <?php Header("Content-Type: text/html; charset=windows-1251"); ?> <html> <head> <title>Отправка писем через PHPMailer</title> </head> <body> <?php date_default_timezone_set('Europe/Moscow'); require_once "lib/PHPMailerAutoload.php "; $mail = new PHPMailer; $mail->IsSMTP(); $mail->Host = "smtp.gmail.com"; $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Port = 465; $mail->CharSet = 'UTF-8'; $body = file_get_contents('feedback.html'); $mail->Username = " "; $mail->Password = " "; $mail->SetFrom(' ', 'Дмитрий'); $mail->Subject = "Отправка письма с GMAIL"; $mail->MsgHTML($body); $address = " "; $mail->AddAddress ($address, "Дмитрию"); $mail->AddAttachment("files/maket.jpg"); if($mail->Send() ) { echo 'Ваше письмо успешно отправлено'; }else{ echo "Что-то пошло не так, письмо не отправлено"; } ?> </body> </html>
в сообщении явно указывается место - файл и линия - в котором закончился поток заголовков и начался поток тела. для начала изучить это место.
Пардон, тупанул. Вот сообщение целиком: Код (Text): Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\feedback.php:1) in Z:\home\test1.ru\www\feedback.php on line 2 Что-то пошло не так, письмо не отправлено
@ДмитрийНск возможно кодировка UTF-8 с BOM, можно в hex редакторе посмотреть на файл feedback.php нет ли до <?php данных. output started at Z:\home\test1.ru\www\feedback.php:1 Это значит что в файле feedback.php на первой строке произошёл вывод, а после него нельзя отправлять заголовки. Denwer старый, бери хостинг с PHP7 и SSH, можно Denwer заменить на open-server.ru, но лучше virtualbox + turnkeylinux.
Денвер скачан недавно самая последняя версия с сайта производителя. PHP в нём 5.3.13. И хостинга пока никакого нет - всё делаю внутри локального сервера на собственном компе. Да видел такой вариант про пробел или лишнюю строку перед началом команды, но в блокноте проверял, точно нет там никаких пробелов и строк. Причём это лишь один из возможных вариантов проблемы, описанный, как уже писал выше, по ссылке: http://cannot-modify-header-information.ru
HEX редактор - это не блокнот Очень старая версия с возможными глюками, только мучат себя. open-server.ru там есть PHP 5.6 и 7. Они сейчас актуальные.
Действительно хекс-редактор обнаружил там лишние символы. Я их затёр и сохранил в файл feedback2.php. После этого вместо той ошибки началась проблема с кодировкой, как показано на скрине. Пересохраняя данный файл через блокнот в кодировку UTF-8 эффекта не последовало. А с этого open-server'а можно сдёрнуть лишь PHP - перекинуть её вместо Денверовского или всё-таки придётся целиком менять Денвер на Open-Server?
Ну поставь двигатель от лады в трактор. Так что можно. Но стоит ли это столько сил? Легче установить всё по отдельности. Но эти сборки и хостиги специально сделаны для экономии времени. Хотя если ты хочешь научится делать сайты, то ты должен разбираться как всё взаимодействует. Обычно это рассказывают в книгах для начинающих по PHP. Нужно конвертировать. Возможно там был UTF-8 с BOM, ты с помощью header сообщаешь что у тебя кодировка windows-1251, значит нужно конвертировать из UTF-8 BOM в Windows-1251.
В блокноте Windows 10 есть доп. опция BOM, я её не ставил. Нашёл причину - в файле feedback.php с каких-то бананов оказалась прописана кодировка Windows-1251, хотя я точно помню, что изначально писал UTF-8. В общем сменил и проблема решена. Теперь просто при открытии http://test1.ru/feedback2.php получаю сообщение "Что-то пошло не так, письмо не отправлено". Причём даже практически случайно наткнулся, как в учётке GMAIL активировать функцию IMAP, активировал. Теперь возникает вопрос - как быть дальше - есть где-то логи, почему письмо не отправляется или ждать 2 часа, пока скачается Open-server? (где тут хохочущий во всё горло смайлик?) )))