Ошибка в переменной при попытке использовать Mail()

Я пробовал массу разных способов решить эту проблему, когда я пытаюсь отправить электронное письмо, если я заполняю значение «имя» только одним словом, через которое оно проходит, и электронное письмо отправляется. Но если значение «имя» содержит более 1 слова, появляется сообщение об ошибке.

<?php
if ( !isset($_POST['name']) || empty($_POST['name']) ||
    !isset($_POST['phone']) || empty($_POST['phone']) ||
    !isset($_POST['email']) || empty($_POST['email']) ||
    !isset($_POST['asunto']) || empty($_POST['asunto']) ||
    !isset($_POST['mensaje']) || empty($_POST['mensaje'])
){
    echo '<p>Please fill in all fields</p>';
}else{

    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $asunto = $_POST['asunto'];
    $mensaje = $_POST['mensaje'];
    $to = '[email protected]'; 
    $from = 'From:' . $name . '';

    $subject = 'Mensaje de ' . $name . '';  
    $message = 'Nombre: ' . $name . '<br/><br/>
               Telefono: ' . $phone . '<br/><br/>
               Correo electronico: ' . $email . '<br/><br/> 
               Asunto: ' . $asunto . '<br/><br/>
               Mensaje: ' . nl2br($mensaje) . '<br/>';

    if (mail ($to, $subject, $message, $from)) { 
        echo '<p>Your message has been sent!</p>';
    } else { 
        echo '<p>Something went wrong, go back and try again!</p>'; 
    }
}
?>

Это потому, что "более одного слова" не является допустимым список почтовых ящиков.

Peter 13.02.2019 21:52

Ты точно не хочешь $from = 'From: ' . $email . '';

RiggsFolly 13.02.2019 22:06

@RiggsFolly Для чего нужна пустая строка в конце?

kojow7 13.02.2019 22:08

@kojow7 Насколько я могу судить, нет. Но я не хотел пугать ОП большим изменением, чем необходимо.

RiggsFolly 13.02.2019 22:08

Спасибо обоим за ваши комментарии.

dnkn 13.02.2019 22:15

Я все еще выясняю, почему это не работает, теперь переменная электронная почта проходит, только если я заполняю ее 1 символом.

dnkn 13.02.2019 22:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
34
2

Ответы 2

Попробуй это:

$from = 'From: ' . $name. ' <' . $email . '>' . "\r\n" . 'X-Mailer: PHP';

Этот заголовок действителен, но сервер получателя может заблокировать такой «простой» заголовок электронной почты из-за спама. Особенно, если «от электронной почты» имеет домен, отличный от вашего домена sendmail (отправителя).

r_a_f 13.02.2019 22:29

Здравствуйте, RAF, код работает, когда я заполняю форму только одним символом, и электронное письмо отправляется, но если я пытаюсь ввести настоящее имя, адрес электронной почты, тему и т. д., появляется ошибка.

dnkn 13.02.2019 22:32

RiggsFolly был прав, в следующей строке была ошибка

Недействителен

$from = 'From:' . $name . '';

Действительный

$from = 'From: ' . $email . '';

Другие вопросы по теме