PHP 邮件未显示来自 header frfom HTML 表单的发件人电子邮件
PHP mail not showing senders email in from header frfom HTML form
请有人帮我在电子邮件的发件人 header 中显示发件人电子邮件。请查看下面的代码,目前当我收到电子邮件时,它会在发件人和收件人中显示收件人电子邮件地址。
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:" . "\n\n" . $_POST['message'];
$message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];
//$headers = "From:" . $from;
$headers = "From: $to \r\n";
$headers .= "Reply-To: $from \r\n";
//$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() 函数来执行此操作。您或许可以尝试,但您的消息将被标记为伪造。
要用mail函数设置信封发件人,需要在mail函数的$additional_params
参数中使用一个-f
参数。
您的脚本易受 header 注入攻击,也可用于 cross-site 脚本编写。
为避免伪造问题,我建议直接通过 gmail 发送,这意味着您需要使用 SMTP,最简单的方法是 use PHPMailer 您标记此问题的方式。根据随附的示例编写代码。
请有人帮我在电子邮件的发件人 header 中显示发件人电子邮件。请查看下面的代码,目前当我收到电子邮件时,它会在发件人和收件人中显示收件人电子邮件地址。
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:" . "\n\n" . $_POST['message'];
$message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];
//$headers = "From:" . $from;
$headers = "From: $to \r\n";
$headers .= "Reply-To: $from \r\n";
//$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() 函数来执行此操作。您或许可以尝试,但您的消息将被标记为伪造。
要用mail函数设置信封发件人,需要在mail函数的$additional_params
参数中使用一个-f
参数。
您的脚本易受 header 注入攻击,也可用于 cross-site 脚本编写。
为避免伪造问题,我建议直接通过 gmail 发送,这意味着您需要使用 SMTP,最简单的方法是 use PHPMailer 您标记此问题的方式。根据随附的示例编写代码。