Почтовая форма начальной загрузки - получена из переменной
Использование формы загрузки 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.