Почтовая форма начальной загрузки - получена из переменной

Использование формы загрузки Bootstrap. Форма доставляет почту, за исключением переменной from, в которой вместо адреса электронной почты отправителя отображается имя сервера.

Может ли кто-нибудь объяснить, как я получаю переменную $ name, чтобы она отображалась как "от" ИЛИ как минимум, отображала имя домена, с которого было отправлено электронное письмо, а не имя сервера?

 <?php
    if (isset($_POST["submit"])) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $business = $_POST['business'];
        $phone = $_POST['phone'];
        $message = $_POST['message'];
        $from = 'From website of xxxxxx'; 
        $to = 'user@somedomainname.com'; 
        $subject = 'New Message ';

        $body = "From: $name\n E-Mail: $email\n Business Name: $business\n  Phone: $phone\nMessage: $message";

        // Check if name has been entered
        if (!$_POST['name']) {
            $errName = 'Please enter your name';
        }

        // Check if email has been entered and is valid
        if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            $errEmail = 'Please enter a valid email address';
        }

         // Check if business has been entered
        if (!$_POST['business']) {
            $errBusiness = 'Please enter your business or organization name';
        }

         // Check if phone has been entered
        if (!$_POST['phone']) {
            $errPhone = 'Please enter your phone number';
        }

        //Check if message has been entered
        if (!$_POST['message']) {
            $errMessage = 'Please enter your message';
        }

// If there are no errors, send the email
if (!$errName && !$errEmail && !$errMessage) {
    if (mail ($to, $subject, $body, $from)) {
        $result='<div class="alert alert-success">Thank You! I will be in touch.</div>';
    } else {
        $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later.</div>';
    }
}
    }
?>

2 ответа

Оказывается, все, что мне нужно было добавить строку в файл php.ini и поместить в корневую директорию сервера. Не нужно было добавлять $ headers к существующему скрипту мода из строки from:.

Некоторые предпочитают, чтобы строка from: отображала фактический адрес отправителя, но я обнаружил, что это создает хаос с фильтрами спама, так как каждая отправленная форма принадлежит другому пользователю. Я уверен, что есть способ исправить это, только сейчас на 100% уверен, как это сделать,

sendmail_path="/usr/sbin/sendmail -t -i -f webmaster@somedomainname.com"

Проблема может заключаться в вашем звонке в mail функция.

Как говорят документы,

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

и, что более интересно,

Additional_headers (необязательно)

Строка для вставки в конец заголовка письма.

Обычно это используется для добавления дополнительных заголовков (From, Cc и Bcc). Несколько дополнительных заголовков должны быть разделены CRLF (\r\n). Если для составления этого заголовка используются внешние данные, данные должны быть очищены, чтобы нежелательные заголовки не могли быть введены.

Замечания:

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

Замечания:

При отправке почты, почта должна содержать заголовок От. Это можно установить с помощью параметра Additional_headers или по умолчанию в php.ini.

В противном случае появится сообщение об ошибке, подобное предупреждению: mail(): "sendmail_from" не задан в php.ini или отсутствует пользовательский заголовок "From:". Заголовок From также устанавливает Return-Path под Windows.

Замечания:

Если сообщения не получены, попробуйте использовать только LF (\n). Некоторые агенты пересылки почты Unix (прежде всего "qmail) автоматически заменяют LF на CRLF (что приводит к удвоению CR, если используется CRLF). Это должно быть последним средством, так как оно не соответствует "RFC 2822.

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