编辑(#1)
如果我理解正确,您希望将所有内容放在一个页面中并从同一页面执行。
您可以使用以下代码从单个页面发送邮件,例如index.php
或contact.php
这个和我原来的答案之间的唯一区别是<form action="" method="post">
动作被留空的地方。
之后最好使用header('Location: thank_you.php');
而不是echo
在 PHP 处理程序中将用户重定向到另一个页面。
将下面的整个代码复制到一个文件中。
<?php
if(isset($_POST['submit'])){
$to = "email@example.com"; // this is your Email address
$from = $_POST['email']; // this is the sender's Email address
$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;
$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.";
// You can also use header('Location: thank_you.php'); to redirect to another page.
}
?>
<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>
<form action="" 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>
原始答案
我不太确定问题是什么,但我的印象是邮件的副本将发送给填写表格的人。
这是 HTML 表单和 PHP 处理程序的测试/工作副本。这使用 PHPmail()
函数。
PHP 处理程序还会将消息的副本发送给填写表格的人。
//
如果您不打算使用它,您可以在一行代码前面使用两个正斜杠。
例如: // $subject2 = "Copy of your form submission";
不会执行。
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 处理程序 (mail_handler.php)
(使用 HTML 表单中的信息并发送电子邮件)
<?php
if(isset($_POST['submit'])){
$to = "email@example.com"; // this is your Email address
$from = $_POST['email']; // this is the sender's Email address
$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;
$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.";
// You can also use header('Location: thank_you.php'); to redirect to another page.
// You cannot use header and echo together. It's one or the other.
}
?>
以 HTML 格式发送:
如果您希望以 HTML 格式发送邮件并针对这两个实例,则需要创建两组不同的变量名称的单独的 HTML 标头。
阅读手册mail()
以了解如何以 HTML 格式发送电子邮件:
脚注:
您必须使用 action 属性指定将处理提交数据的服务的 URL。
如https://www.w3.org/TR/html5/forms.html 4.10.1.3 配置表单以与服务器通信下所述。有关完整信息,请参阅页面。
因此,action=""
在 HTML5 中不起作用。
正确的语法是:
action="handler.xxx"
或者
action="http://www.example.com/handler.xxx"
.
请注意,这xxx
将是用于处理进程的文件类型的扩展名。这可能是.php
, .cgi
, .pl
,.jsp
文件扩展名等。
如果发送邮件失败,请参阅 Stack 上的以下问答: