формы — Используя PHP для отправки электронной почты, измените FROM, чтобы это не имя моего сервера

Итак, я настроил контактную форму для своего сайта, и он отправляет мне электронные письма, когда люди регистрируются. Вот код:

<?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);
}
}
?>

Прямо сейчас, когда я получаю электронное письмо, оно от моего чертового имени сервера. Я не против, если он продолжает отправлять с этого письма, но мне нужно, чтобы имя от изменилось на что-то другое. Это возможно?

0

Решение

Ваши нынешние заголовки интерпретируются как
you@example.com, Message from John, the messsage, email@example.com
когда это должно быть интерпретировано как
you@example.com, Message from John, the messsage, From: email@example.com

Так почтмейстер говорит: «Там нет От: здесь, так что я просто предположу, что вы имели в виду« мой сервер ».

  • По этой причине «from», похоже, приходит с сервера GoDaddy.

Используйте правильные заголовки: http://php.net/manual/en/function.mail.php

$headers = "From: ". $name . " <" . $from . ">\r\n";

тогда перепишите свой подарок mail() читать как:

mail ($to, $subject, $message, $headers)

Если вы хотите, чтобы это было что-то другое, то используйте все разные Адрес электронной почты.

Nota: Почта ожидает, что «От» будет адрес электронной почты, а не имя человека.

Так что вы могли бы сделать:

$from_other = "another_email@example.com";

затем сделайте:

$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: если вы хотите использовать другой «ответить на». Эти переменные могут быть изменены так, как вы хотите.
2

Другие решения

отредактируйте свой $from заголовок к:

$from = 'From: '.$_POST['contactEmail'];

и затем отправьте его, как вы уже отправляете:

mail ($to, $subject, $message, $from)

Конвенция заключается в использовании $headers переменная. Вы можете определить различные параметры заголовка как:

$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

и отправьте их как:

mail($to, $subject, $message, $headers);

Обратитесь к этому примеру для получения дополнительной информации: http://php.net/manual/en/function.mail.php#example-3482

0

Используйте mail () и отправьте правильные заголовки:

$headers = 'From: ' . $_POST['name'] . ' <' . $_POST['contactEmail'] . '>';
mail($to, $subject, $message, $headers)
0