HTML Dog
跳至导航

表单到邮件

本页面将跳出客户端编码的界限,探讨一个常见的服务器端技术。它概述了一种非常基本的方法,可以将提交的表单内容发送到任何指定的电子邮件地址。你知道的,就像“联系我们”表单一样。

实现这一目标的方法有很多,可以使用各种奇妙的编程语言,但我们将使用一种名为 **PHP** 的脚本语言。

步骤 1:创建一个 PHP 页面

如果将网页的扩展名设置为“.php”而不是“.html”,则托管该页面的服务器将知道执行其中包含的任何 PHP 代码。所以,首先,只需将一个空的 HTML 页面保存为“contact.php”。

步骤 2:创建一个表单

您可以阅读 HTML 初学者教程中有关表单的详细信息。为了直接开始,让我们使用以下极其精简的表单 HTML


<form method="post" action="contact.php">
    <textarea name="message"></textarea>
    <input type="submit">
</form>

一切都很简单,对吧?当表单提交时,action="contact.php" 部分告诉页面将表单内容发送给自己。是不是很疯狂?我们在这里使用同一个页面完成了所有操作……

步骤 3:以电子邮件形式发送表单数据

在页面顶部,甚至在 Doctype 之前,我们将输入少量 PHP 来处理表单数据


<?php
if($_POST["message"]) {
    mail("your@email.address", "Form to email message", $_POST["message"], "From: an@email.address");
}
?>

<?php” 标记 PHP 的开始,而“?>” 标记 PHP 的结束。服务器将尝试将两者之间的所有内容作为 PHP 执行。

此代码检查是否已发送表单数据,如果已发送,则使用 `mail` 函数将数据作为电子邮件发送到“your@email.address”,主题为“Form to email message”,邮件正文与名为“message”的表单字段相同。电子邮件将显示为来自“an@email.address”。

总结

上传后(需要服务器运行——您无法在本地运行),您可以尝试一下。

以下是正在发生的事情

  1. 表单提交后,页面会将数据发送给自己。
  2. 页面将检查是否已发送数据,如果已发送,则将其作为电子邮件发送。
  3. 浏览器将加载页面的后续 HTML,包括您的表单。

后续步骤:一个基本的“联系我们”表单

好的,我们如何让它更像一个“联系我们”表单?我们可以将发件人姓名和发件人电子邮件地址添加到消息中,并包含一个确认消息,让发件人知道他们的消息已发送。这是全部内容


<?php

if($_POST["submit"]) {
    $recipient="your@email.address";
    $subject="Form to email message";
    $sender=$_POST["sender"];
    $senderEmail=$_POST["senderEmail"];
    $message=$_POST["message"];

    $mailBody="Name: $sender\nEmail: $senderEmail\n\n$message";

    mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");

    $thankYou="<p>Thank you! Your message has been sent.</p>";
}

?><!DOCTYPE html>

<html>
<head>
    <meta charset="utf-8">
    <title>Contact form to email</title>
</head>

<body>

    <?=$thankYou ?>

    <form method="post" action="contact.php">
        <label>Name:</label>
        <input name="sender">

        <label>Email address:</label>
        <input name="senderEmail">

        <label>Message:</label>
        <textarea rows="5" cols="20" name="message"></textarea>

        <input type="submit" name="submit">
    </form>

</body>

</html>

这次我们正在

  1. 检查表单是否已发送(这次通过查找名为“submit”的表单字段),如果已发送……
  2. 设置一堆变量
    1. 您的电子邮件地址
    2. 电子邮件主题
    3. 发件人姓名(从表单中获取)
    4. 发件人电子邮件地址(从表单中获取)
    5. 消息(从表单中获取)
  3. 发送电子邮件,使用所有这些变量
  4. 为确认消息设置一个变量
  5. 加载 HTML,包括确认消息

如果页面加载且没有发送表单数据,则不会组成电子邮件,也不会设置确认消息,因此只会加载页面的 HTML。