📅  最后修改于: 2023-12-03 14:52:28.528000             🧑  作者: Mango
在 PHP 中,我们可以使用电子邮件库来发送邮件。为了将联系表连接到电子邮件,我们需要遵循以下步骤:
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 脚本,用于检索数据库中的联系信息并将其放入电子邮件模板中。以下是一个示例代码片段,用于从 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 服务器。