Итак, я настроил контактную форму для своего сайта, и он отправляет мне электронные письма, когда люди регистрируются. Вот код:
<?php
include("include/settings.php");
if(isset($_POST['name']) && isset($_POST['contactEmail']) && isset($_POST['message'])){
$name = $_POST['name'];
$from = $_POST['contactEmail'];
$message = $_POST['message'];
$subject = "Message from " . $name;
if (mail ($to, $subject, $message, $from)) {
$response = array('sent' => 1);
echo json_encode($response);
} else {
$response = array('sent' => 0);
echo json_encode($response);
}
}
?>
Прямо сейчас, когда я получаю электронное письмо, оно от моего чертового имени сервера. Я не против, если он продолжает отправлять с этого письма, но мне нужно, чтобы имя от изменилось на что-то другое. Это возможно?
Ваши нынешние заголовки интерпретируются как
[email protected], Message from John, the messsage, [email protected]
когда это должно быть интерпретировано как
[email protected], Message from John, the messsage, From: [email protected]
Так почтмейстер говорит: «Там нет От: здесь, так что я просто предположу, что вы имели в виду« мой сервер ».
Используйте правильные заголовки: http://php.net/manual/en/function.mail.php
$headers = "From: ". $name . " <" . $from . ">\r\n";
тогда перепишите свой подарок mail()
читать как:
mail ($to, $subject, $message, $headers)
Если вы хотите, чтобы это было что-то другое, то используйте все разные Адрес электронной почты.
Nota: Почта ожидает, что «От» будет адрес электронной почты, а не имя человека.
Так что вы могли бы сделать:
$from_other = "[email protected]";
затем сделайте:
$headers = "From: ". $name . " <" . $from_other . ">\r\n";
тогда перепишите свой подарок mail()
чтобы:
mail ($to, $subject, $message, $headers)
Есть дополнительные опции заголовка, которые также доступны для использования:
$from = $from . ' <' . $from . '>';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=utf-8" . "\r\n";
$headers .= 'From: ' . $from . "\r\n";
$headers .= 'Reply-To: ' . $from . "\r\n";
$headers .= 'Return-Path: ' . $from . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Originating-IP: ' . $_SERVER['SERVER_ADDR'] . "\r\n";
Reply-To:
если вы хотите использовать другой «ответить на». Эти переменные могут быть изменены так, как вы хотите.отредактируйте свой $from
заголовок к:
$from = 'From: '.$_POST['contactEmail'];
и затем отправьте его, как вы уже отправляете:
mail ($to, $subject, $message, $from)
Конвенция заключается в использовании $headers
переменная. Вы можете определить различные параметры заголовка как:
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
и отправьте их как:
mail($to, $subject, $message, $headers);
Обратитесь к этому примеру для получения дополнительной информации: http://php.net/manual/en/function.mail.php#example-3482
Используйте mail () и отправьте правильные заголовки:
$headers = 'From: ' . $_POST['name'] . ' <' . $_POST['contactEmail'] . '>';
mail($to, $subject, $message, $headers)