Сообщение не было отправлено вернитесь на списочную форму для отправки

Обновлено: 16.05.2024


Я в php почти ноль, и мне нужно срочно
настроить отправку формы на почту.
Прошу, скажите что не так в коде?

2 ответа 2

В части вызова функции mail() в коде ошибки нет. Но есть ошибка выше по стеку, то есть на уровне почтовых серверов.

Обычно это может быть как проблема настройки сервера откуда идёт отправка, так и проблема на стороне сервера получателя писем - как в этом случае.

Сервер получателя может отказаться принимать письма из-за поддельного адреса отправителя, и правильно сделает. Попробуйте без него - для этого достаточно убрать последний аргумент в вызове функции.

Если письмо отправляется с локальной машины и никакого сайта еще нет - отправляйте через SMTP. Можете взять для этого библиотеку - например, PHPMailer

Сразу оговорюсь, что в большинстве случаев, список поможет тем, кто берет формы с моего блога, так как я могу ручаться, что они точно работают, ведь я сам их проверил и периодически использую в качестве заготовок для того или иного проекта.

1. Забывают поменять адреса в демке

Хорошо, если человек не забыл указать хотя бы отправителя. В таком случае есть возможность написать ему лично и указать на ошибку, но в большинстве случаев обе почты указаны неверно. В последнее время я не поленился и поменял в некоторых демках адреса на выдуманные, но все равно проблема все еще актуальна. А люди же тестируют не по разу, а 5 - 10, а то и того больше. Вот буквально сегодня - 11 писем с 11 до 12 дня пришло.

Не отправляются данные из формы обратной связи

Вывод: пожалуйста, будьте внимательны и прежде чем писать, что что-то не работает, убедитесь, что правильно задали параметр всех возможных настроек.

2. Используется слишком старая версия PHP

Друзья, все формы, которые я делаю, тестируются на последних версиях PHP, то есть выше 7.0. Раньше это была 5.6 и, некоторые исходники могут работать на этой версии, но я рекомендую именно 7 и выше. На старой версии что-то может не поддерживаться и из-за этого, иногда, возникают проблемы.

Вывод: убедиться, что работаете с современным стандартом PHP и, в случае если у вас старая версия, то переключиться на 7. Сделать это можно у вашего хостера. Обычно, достаточно просто выбрать более актуальную и все. Никаких проблем с переходом возникнуть не должно. У меня, на Beget это выглядит так:

Используйте современный стандарт php

Многие, по неопытности, думают, что можно скачать демку на компьютер, открыть с рабочего стола ее в браузере и данные придут на почту. Друзья, так не бывает. Мы для отправки формы используем PHP, а это серверный язык программирования. То есть для работы нужен сервер локальный, например, Openserver, или реальный (любой хостинг или выделенный сервер).

Вывод: тестировать форму на сервере (хостинге).

4. Не настроен локальный сервер

Но, есть возможность настроить отправку через SMTP. Подробнее о том, как это сделать написано в официальной документации.

5. Тестовый период хостинга или бесплатный вариант

При использовании бесплатного хостинга или при тестовом бесплатном периоде (как правило месячным или 14 дневным), которыми нас заманивают компании, нужно убедиться, что не отключена возможность отправлять письма. В 99% - она отключена и каждая уважающая себя компания, предоставляющая услуги хостинга, будет это делать, чтоб сократить распространения спама. Думаю, вы понимаете, о чем я. Поэтому, тестируйте на платном домене и хостинге, тогда все должно быть в порядке.

Вывод: тестировать форму на оплаченном домене и хостинге.

6. Хостер не позволяет отправлять письма с сайта на бесплатные почтовые ящики

Кроме того, загляните в справку от Reg.ru, даже если вы не пользуетесь этим сервисом. Особенно в раздел "Возможные проблемы". Советы приведенные там могут помочь вам, натолкнув на мысль, что еще стоит проверить или уточнить у своего хостера.

Вывод: поинтересуйтесь у хостера нет ли ограничений на отправку писем на/с не привязанных к домену адресов.

7. Ошибка в путях при подключении

Одна из банальных, но очень частых проблем у тех, кто пишет с претензией, что формы на блоге нерабочие - это ошибки в путях при подключении файлов. Откройте консоль (f12), изучите ошибки, которые там выводятся и попробуйте устранить.

Вывод: изучите консоль на предмет ошибок, прежде чем говорить, что форма не работает.

8. Блокировка входящей почты самим почтовым сервисом

Недавно общался с девочкой в комментариях по поводу того, что не доходят письма. Она проверила все, что только возможно, перечитала все комментарии, а проблема оказалась в самом почтовом сервисе, который она использовала. Точнее не проблема, а система безопасности.

Предлагаю ознакомиться с ее комментарием, в котором она описала ситуацию, с которой пришлось столкнуться. Огромное ей спасибо за то, что не осталась равнодушной и описала процедуру решения. Я с такой ситуацией не сталкивался, но для многих пользователей Gmail она достаточно типичная и ее комментарий может помочь многим из вас.

Проблемы с отправкой формы

9. Не работает PHP на сервере

Да, и такое бывает. Мне периодически пишут люди, что у них не работает форма и когда я начинаю разбираться в проблеме и прошу их вывести на сайте:

То оказывается, что PHP-теги вообще не обрабатываются. Люди используют какой-нибудь самый дешевый тариф и оказывается, что на нем вообще не поддерживается PHP. Кроме того, некоторые забывают, что работать нужно в файле с расширением ".php", а не ".html".

Вывод: убедитесь в том, что PHP-теги обрабатываются должным образом.

10. Отправка писем заблокирована хостером

Случалось со мной и такое. Обратился человек помочь с настройкой формы. Я все сделал, но при тестировании оказалось, что ничего не работает. Тогда закинул к себе на сервер и решил протестировать там. Оказалось, что письма успешно доходят. Тогда проверил все то, о чем писал выше, но все оказалось в порядке. Решил писать в техподдержку. Вот ответ:

Причина блокировки писем хостером

Оказалось, что раньше под этим доменом на хостинге болтался заброшенный сайт. Вроде как его взломали и рассылали спам, поэтому хостер решил его заблокировать. Как видите, уже 2 года была заблокирована возможность отправлять письма с данного ресурса.

Вывод: не стесняйтесь обращаться в техническую поддержку. Это может сэкономить вам много времени.

Вот такая заметка получилась. Надеюсь, она поможет вам найти проблему и понять почему ваша форма обратной связи не работает, а если вы сталкивались с еще какими-нибудь типичными проблемами, то напишите пожалуйста о них в комментариях. Этим вы поможете сотням людей и они будут вам благодарны.

Compolomus

1) if(@mail) < - на этой строке у вас будет фатал еррор, если вы его не видите, значит у вас выключено отображение ошибок. Смотрите лог ошибок
2) mail() -функция, передающая письмо smtp серверу, который назначен по умолчанию в настройках пхп. Она не отправляет почту, а только передает тело письма серверу, что будет с письмом дальше ей пофиг, и это уже проблемы сервера отправки, который делает с письмом что считает нужным, но вы об этом ничего не узнаете(во всяком случае по результату работы mail()).
3) Вам абсолютно верно подсказал Дмитрий о порядке аргументов в функции, кроме того у вас еще и криво названы переменные, из-за чего код выглядит еще хуже чем работает.

Ничего плохого в переменных не увидел. Не надо пугать новичков. Вы ему еще про ООП начните задвигать, чтоб он не лез а пхп никогда больше.

ThunderCat

Devtools, во первых - нечего пугаться при первой же критике, во вторых - вы сами то порядок аргументов mail() знаете, или посмотрели? $to, $message, $headers - это должно быть емэйл, тема и тело письма. Сильно ли соответствуют названия переменных их значению и правильно ли они расставлены вообще?

Как это соотносится с пхп или другим яп? Если туп, криворук, небрежен и тебе пофиг на код - будь плотником, а если стремишься к росту - соблюдай культуру кода, себе же облегчаешь жизнь.

Не приходит письмо на почту
Написал скрип обратной связи. Написан на php, плагинов не использовал <?php .

Приходит пустое письмо на почту
Здравствуйте. Скажите пожалуйста, может ли быть причина в ajax, что приходит пустые письма на.

Пользователю не приходит письмо на почту
Почему пользователю не приходит письмо на почту , вот файлы регистрации : registration.php <?php.

Вставь просто в php файл и обнови страницу и посмотри , если не придет значит на хостинге проблемы. У меня на этом хостинге работало, раньше.

Да ошибки то и нет. Хотя код и нагромоздил. Но он работает. Я у себя на локальном проверил всё. Письмо пришло.

Решение

. Методом перебора обнаружил. C ним почему то не отправляется. В общем ошибку я нашел , вот проверьте свой код еще .

Замените свой код на мой (тут без $_POST['email']) так работает , красоту сами наведете.

Большое спасибо, заработало.

добавляю 'Имя:'.
или же, если ставлю перенос строки.
Если что-то дописываю, то перестает работать, я не понимаю от чего это зависит.

Вот вы только что отправили и оно пришло.

Я не понимаю.. у меня не отправляет. Запустите весь сайт с формой, может проблема в нем, а не в php коде.
site.rar

Я не понимаю.. у меня не отправляет. Запустите весь сайт с формой, может проблема в нем, а не в php коде.


Письмо на кириллице приходит на почту искажённым.
Суть проблемы следующая: на странице есть форма заказа, по нажатию кнопки должно отправляться.

При регистрации не приходит письмо активации на почту
Код страницы регистрации Подскажите в чем может быть проблема, вознаграждение гарантирую, заранее.

После заполнения формы, приходит пустое письмо на почту
Скачал лендинг, всё отлично работает. Кроме формы. Перепробовал всё, пожалуйста, знающие, помогие.


Протестируйте формы с другой почты.

Для этого в Центре управления перейдите в Настройки → Настройки продукта → Почтовые события → Почтовые шаблоны.





В редакторе разверните список заголовков.





В публичной части заполните соответствующую форму и проверьте почтовый ящик.







Результаты проверки модулей при корректной настройке должны выглядеть так:

Читайте также: