📜  如何在 php 中将联系表连接到电子邮件(1)

📅  最后修改于: 2023-12-03 14:52:28.528000             🧑  作者: Mango

如何在 PHP 中将联系表连接到电子邮件

在 PHP 中,我们可以使用电子邮件库来发送邮件。为了将联系表连接到电子邮件,我们需要遵循以下步骤:

  1. 创建一个 HTML 表单,用户可以在这个表单中填写联系信息。
  2. 将表单的数据存储在数据库中。
  3. 创建一个 PHP 脚本,用于检索数据库中的联系信息并将其放入电子邮件模板中。
  4. 使用电子邮件库将电子邮件发送到收件人。
创建 HTML 表单

HTML 表单是与用户交互的主要方式。我们需要创建一个表单来允许用户填写联系信息。以下是一个示例:

<form action="save-contact.php" method="post">
    <label for="name">Name:</label>
    <input type="text" name="name" id="name">

    <label for="email">Email:</label>
    <input type="email" name="email" id="email">

    <label for="message">Message:</label>
    <textarea name="message" id="message"></textarea>

    <button type="submit">Submit</button>
</form>
将表单数据存储在数据库中

我们需要将表单数据存储在数据库中,以便我们可以在稍后检索它们并将它们放入电子邮件模板中。以下是一个示例代码片段,用于将表单数据存储在 MySQL 数据库中:

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

$stmt = $mysqli->prepare("INSERT INTO contacts (name, email, message) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $name, $email, $message);
$stmt->execute();

echo "Contact saved!";
?>
创建电子邮件模板

我们需要创建一个电子邮件模板,该模板将显示来自数据库的联系信息。以下是一个示例模板:

<html>
<body>
    <h1>New contact</h1>
    <p>Name: {{ name }}</p>
    <p>Email: {{ email }}</p>
    <p>Message: {{ message }}</p>
</body>
</html>

我们可以在模板中使用模板引擎来渲染数据库中的联系信息。

创建 PHP 脚本

我们需要创建一个 PHP 脚本,用于检索数据库中的联系信息并将其放入电子邮件模板中。以下是一个示例代码片段,用于从 MySQL 数据库中检索联系信息:

<?php
$mysqli = new mysqli("localhost", "username", "password", "database");

$result = $mysqli->query("SELECT * FROM contacts ORDER BY id DESC LIMIT 1");
$row = $result->fetch_assoc();

$name = $row['name'];
$email = $row['email'];
$message = $row['message'];

$template = file_get_contents('email_template.html');
$template = str_replace('{{ name }}', $name, $template);
$template = str_replace('{{ email }}', $email, $template);
$template = str_replace('{{ message }}', $message, $template);

echo $template;
?>
发送电子邮件

我们可以使用电子邮件库将电子邮件发送到收件人。以下是一个示例代码片段,用于发送电子邮件:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = 0;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    //SMTP

    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'your-email@gmail.com';                // SMTP username
    $mail->Password = 'your-email-password';                           // SMTP password
    $mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 465;                                    // TCP port to connect to

    //Recipients
    $mail->setFrom('your-email@gmail.com', 'Your Name');
    $mail->addAddress('recipient@example.com', 'Recipient Name');     // Add a recipient
    $mail->addReplyTo('your-email@gmail.com', 'Your Name');

    //Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'New contact';
    $mail->Body    = $template;

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
?>

以上代码片段使用 Gmail 作为 SMTP 服务器。如果您使用其他电子邮件提供商,请参阅他们的文档以获取正确的 SMTP 服务器和端口。

总结

在本文中,我们已经介绍了如何在 PHP 中将联系表连接到电子邮件。我们创建了一个 HTML 表单,将数据存储在 MySQL 数据库中,并使用电子邮件库将电子邮件发送到收件人。在这个过程中,我们学习了如何使用模板引擎渲染电子邮件模板,并发送电子邮件使用 SMTP 服务器。