Проблемы с mail в php. Что я делаю не так?

Ссылка скопирована
1 ответ

Здравствуйте! Есть проблема. Написал код обратной связи, но письмо не отправляется, подскажите где проблема
HTML:

<form action="mail.php" method="post"> 			Ваше полное имя: <input type="text" name="name" required><br><br> 			Введите E-mail:<input type="email" name="email" placeholder="E-mail" required><br><br> 			Выберете тип вашего приложения:<select name="type" required>                 <option disabled selected>Выберете тип вашего приложения</option>                 <option valvue="1">Вэб</option>                 <option valvue="2">Exe</option>                 <option valvue="3">Test</option>                 <option valvue="4">Test</option>                 <option valvue="5">Test</option>             </select><br><br>             Введите комментарий (до 200 символов):<textarea name="comment" maxlength="200"></textarea><br><br>             <button type="submit">Отправить на модерацию</button> 		</form>

<form action="mail.php" method="post"> Ваше полное имя: <input type="text" name="name" required><br><br> Введите E-mail:<input type="email" name="email" placeholder="E-mail" required><br><br> Выберете тип вашего приложения:<select name="type" required> <option disabled selected>Выберете тип вашего приложения</option> <option valvue="1">Вэб</option> <option valvue="2">Exe</option> <option valvue="3">Test</option> <option valvue="4">Test</option> <option valvue="5">Test</option> </select><br><br> Введите комментарий (до 200 символов):<textarea name="comment" maxlength="200"></textarea><br><br> <button type="submit">Отправить на модерацию</button> </form>

mail.php:

<?php if($_POST['type'] == 1) {     $subject = 'Вэб'; } elseif($_POST['type'] == 2) {     $subject = 'Exe'; } elseif($_POST['type'] == 3) {     $subject = '3'; } elseif($_POST['type'] == 4) {     $subject = '4'; } elseif($_POST['type'] == 5) {     $subject = '5'; } else {     $subject = 'НЕ ВЫБРАНО'; }  $to = "******"; $from = $_POST['email'];  $message = $_POST['comment'];  if(mail($to, $subject, $message)) {     echo "Ваша разработка отправлена на модерацию"; } else {     echo "Не отпр"; } ?>

<?php if($_POST['type'] == 1) { $subject = 'Вэб'; } elseif($_POST['type'] == 2) { $subject = 'Exe'; } elseif($_POST['type'] == 3) { $subject = '3'; } elseif($_POST['type'] == 4) { $subject = '4'; } elseif($_POST['type'] == 5) { $subject = '5'; } else { $subject = 'НЕ ВЫБРАНО'; } $to = "******"; $from = $_POST['email']; $message = $_POST['comment']; if(mail($to, $subject, $message)) { echo "Ваша разработка отправлена на модерацию"; } else { echo "Не отпр"; } ?>

P.S. Если что про case я знаю)

Дополнительно:

valvue

  • Владислав Лысков, а что именно?
  • Александер фон Крюков-Беллинсгаузен-Магеллан-Демид..., что именно что? value, а не valvue
  • Владислав Лысков, ёёё, точняк спасибо
  • Владислав Лысков, не помогло)
  • Александер фон Крюков-Беллинсгаузен-Магеллан-Демид..., Было бы странно если бы помогло. Ошибка конечно есть, но не она причина проблем с отправкой.
  • https://www.php.net/manual/ru/function.mail.php

    Отправляемое письмо должно содержать заголовок From. Его устанавливают через параметр additional_headers или задают значение по умолчанию в файле php.ini.

  • 2024 год.
    - Не стоит использовать http:// на публичных ресурсах, а только https://
    - Не стоит коммитить пароли и токены доступа в Git
    - Не стоит использовать везде один и тот же простой пароль
    - Не стоит публично критиковать начальство и волшебную спецоперацию
    - Не стоит использовать функцию mail() в PHP, а использовать вместо этого SMTP в PHPMailer
  • Виктор Кожухарь,

    - Не стоит использовать функцию mail() в PHP, а использовать вместо этого SMTP в PHPMailer

    По какой причине? Зачем использовать SMTP, когда мейлер настроен?

  • ValdikSS, Потому что все ваши письма полетят прямиком в Спам. Почти все современные почтовые сервисы типа того же Gmail и Яндекса по умолчанию крайне подозрительно относятся к новым IP адресам, с которых к ним приходит почта. Я бы сказал даже, что они скорей по умолчанию заблокируют новый источник писем. Ведь спам - это чудовищная проблема современности.
    Поэтому, рассылать письма нужно из доверенного источника (сервиса), который можно использовать как раз через SMTP.
  • Виктор Кожухарь, Если подразумевается использование mail() (т.е. sendmail и альтернатив), подразумевается, что почтовый сервер корректно настроен и работает. Нет смысла подключаться к нему же по SMTP, это только усложнит обработку.
    А если он не настроен корректно, то и подключение по SMTP не даст вам никаких преимуществ в доставке.
  • ValdikSS, Вы совершенно правы... Ровно до тех пор, пока соседний пользователь этого хостинга, который, скорей всего, судя по тому, что я здесь читал, обычный shared хостинг, не начнёт рассылать нечто похожее на спам.
  • ! РЕШЕНИЕ ОБНАРУЖЕНО(благодаря комментариям) !
    1. не valvue а valve
    2. у моего хостера (если вдруг интересно то sweb.ru) на тестовых аккаунтах отключена эта функция
    ВСЁ СЕЙЧАС РАБОТАЕТ!

    • Странно, что с valve работает, когда должно быть value

    Ответы:

    var_dump($_POST);

    PS: Ладно, ждать подробностей долго, по этому кратко по основам.
    mail() будет работать в случае если у вас, помимо прочего, настроена отправка почты через smtp сервер, который либо у вас установлен локально (в чем есть сомнения), либо вы запускаете скрипт в среде уже настроенной (например у хостера с поддержкой отправки почты). В противном случае эта функция просто бесполезна. Так же, mail() возвращает true не в случае отправки почты, а в случае успешной постановки в очередь отправки, что саму отправку совершенно не гарантирует.

    • К собственно отправке это не имеет отношения
      у него винда же
    • Ипатьев, насчет винды это же пальцем в небо? ) А так хоть отладке научится базовой, то проверит, это, глядишь и до подробностей дойдет )
    • Это логика. Элементарная. Но спорить не буду. Местные гуру настолько забронзовели, что кроме себя все равно никого не слышат.
    • Ипатьев,

      Это логика. Элементарная.

      Это предположение. Хорошее, возможно даже верное, но не относящееся к логике.

      Местные гуру настолько забронзовели, что кроме себя все равно никого не слышат.

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

    • Ипатьев,

      у него винда же

      Кстати, а как бы повлияло наличие макоси или линукса на отправку?

    • ThunderCat, если что у меня вообще хостинг))
    • Александер фон Крюков-Беллинсгаузен-Магеллан-Демид..., В ответе все написано. Либо пытайте хостера (что не гарантирует положительного ответа от него), либо используйте нормальные инструменты по типу PHPMailer/SwiftMailer...
    • ThunderCat, позвольте внести поправку:
      Please, move to Symfony Mailer at your earliest convenience. Symfony Mailer is the next evolution of Swift Mailer. It provides the same features with support for modern PHP code and support for third-party providers.
      т.е. SwiftMailer - всё! Кутья и белые тапочки.
      Источник
    • ThunderCat, хорошо, начнем с пыток хостера
    • Александер фон Крюков-Беллинсгаузен-Магеллан-Демид..., обошлись паяльником) по умолчанию у них это отключено, но ЛИЧНО ДЛЯ МЕНЯ они ее врубили)
    • Mylistryx, возникла другая проблема))) кодировка письма, он отправляет белеберду, и как ее установить я хз(мне 12 лет)
    • Кодировка. Сейчас общепринятой для web считается utf-8, возможно вы пишете в cp1251 (ну не в KOI-8). Т.е. проверяем кодировку файлов. Какая среда разработки (IDE)? OpenServer/Docker/Wamp/Lamp - в каком окружении работаете?
      То, что Вам 12 лет -я понял из других вопросов (читал, не отвечал, т.к. ответ уже был дан).
      Функция mail() - это то, что не стоит использовать сейчас. Книги (и "одаренные" преподаватели, которые учились по этим книгам) уже давно потеряли свою актуальность. Если не использовать библиотеку-обертку типа SymfonyMailer - скорее всего отправку письма (25 SMTP порт) заблокирует уже Ваш хостер, а при получении респондентом письмо с вероятностью в 99.99% попадет в спам или будет просто "отброшено".
    • Mylistryx, тут важнее даже не какую кодировку использовать, а какую указывать. SMTP - один из самых древних протоколов, которые до сих пор используются. И там могут быть очень странные умолчания. Так что в любом случае надо указывать кодировку явно, а не надеяться на то, что автоматом будет распознана современная.
      При этом использовать-то как раз можно любую - хоть KOI-8.
      И в этом смысле на этапе обучения наоборот полезно пощупать как оно там изнутри устроено, с помощью той же mail. Тем более что порт ему уже открыли. Другое дело что юноша ленив, и не хочет набрать в браузере три слова, php mail кодировка

      Ну и книги книгам рознь, не стоит огульно хаять сразу все. У Джона Дакетта вполне себе рассматривается PHPMailer, целая глава отведена, и даже про указание кодировки не забыто :)

    • Александер фон Крюков-Беллинсгаузен-Магеллан-Демид..., заголовок письма или и тело письма тоже?

    Функция mail() на шаред хостингах обычно запрещена.
    Чтобы при проникновении трояна на ваш сайт не рассылали спам.
    Дальше идут варианты. Можно самому ее разрешить и настроить или нет.
    А потом головная боль, чтобы письмо хотя бы в папку спам попадало.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Анна SEO Ответ

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

    Вот пример кода, который демонстрирует отправку письма с помощью функции mail():

    $to = "recipient@example.com";
    $subject = "Тема письма";
    $message = "Текст письма";

    $headers = "From: sender@example.com\r

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно