PHP邮件不显示发件人的电子邮件从标题从HTML表单



谁能帮我在邮件的from标题中显示发件人的电子邮件?请参阅下面的代码,目前当我收到电子邮件时,它显示了从和到的电子邮件地址。

HTML:

<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>
<form action="mail_handler.php" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>

PHP:

<?php 
if(isset($_POST['submit'])){
$to = "bestwayhomemaintenance@gmail.com"; 
$from = $_POST['email']; 
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$subject = "Form submission";
$subject2 = "Copy of your form submission";
$message = $first_name . " " . $last_name . " wrote the following:" . "nn" . $_POST['message'];
$message2 = "Here is a copy of your message " . $first_name . "nn" . $_POST['message'];
//$headers = "From:" . $from;
$headers = "From: $to rn";
$headers .= "Reply-To: $from rn";
//$headers2 = "From:" . $to;
mail($to,$subject,$message,$headers);
//mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";

}
?>

你不能从gmail地址发送,除非你通过gmail的服务器发送,这本质上意味着你不能使用PHP的mail()函数。您可以尝试,但您的邮件将被标记为伪造。

要设置具有邮件功能的信封发件人,需要使用邮件功能的$additional_params参数中的-f参数。

你的脚本很容易受到头部注入攻击,它也可以用于跨站点脚本。

为了避免伪造问题,我建议直接通过gmail发送,这意味着你需要使用SMTP,最简单的方法是使用PHPMailer,你标记了这个问题。根据所提供的示例编写代码。

最新更新