PHP dan PHPMAILER: Bagaimana untuk melaksanakan fungsi log penghantaran e-mel dalam laman web?
Ikhtisar:
Apabila membangunkan tapak web, fungsi penghantaran e-mel sangat diperlukan. Walau bagaimanapun, apabila tapak web perlu menghantar sejumlah besar e-mel atau perlu menjejak dan merekod penghantaran e-mel, kita selalunya perlu melaksanakan fungsi log penghantaran e-mel untuk melihat maklumat seperti e-mel yang berjaya dihantar dan yang mana yang gagal. Artikel ini akan memperkenalkan cara menggunakan PHP dan perpustakaan PHPMailer untuk melaksanakan fungsi log penghantaran e-mel, dan menyediakan contoh kod yang sepadan.
require 'path/to/PHPMailer/src/PHPMailer.php'; require 'path/to/PHPMailer/src/SMTP.php'; require 'path/to/PHPMailer/src/Exception.php';
CREATE TABLE `email_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `to_email` varchar(255) NOT NULL, `subject` varchar(255) NOT NULL, `message` text NOT NULL, `sent` tinyint(1) NOT NULL DEFAULT '0', `sent_date` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
function sendEmail($to, $subject, $message) { // 实例化PHPMailer对象 $mail = new PHPMailerPHPMailerPHPMailer(); // 配置SMTP服务器 $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'your_email@example.com'; $mail->Password = 'your_password'; $mail->SMTPSecure = 'ssl'; $mail->Port = 465; // 设置邮件内容和收件人 $mail->CharSet = 'UTF-8'; $mail->setFrom('your_email@example.com', 'Your Name'); $mail->addAddress($to); $mail->Subject = $subject; $mail->Body = $message; // 发送邮件 if ($mail->send()) { // 邮件发送成功,将发送日志保存到数据库中 $sent_date = date('Y-m-d H:i:s'); $insert_query = "INSERT INTO email_logs (to_email, subject, message, sent, sent_date) VALUES ('$to', '$subject', '$message', 1, '$sent_date')"; // 执行插入操作并检查是否成功 if ($conn->query($insert_query) === TRUE) { echo "邮件发送成功!"; } else { echo "邮件发送成功,但保存发送日志失败:" . $conn->error; } } else { echo "邮件发送失败:" . $mail->ErrorInfo; } }
$to = 'recipient@example.com'; $subject = '邮件主题'; $message = '邮件正文'; sendEmail($to, $subject, $message);
$select_query = "SELECT * FROM email_logs"; $result = $conn->query($select_query); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "收件人:" . $row['to_email'] . "<br>"; echo "主题:" . $row['subject'] . "<br>"; echo "内容:" . $row['message'] . "<br>"; echo "发送时间:" . $row['sent_date'] . "<br>"; echo "<br>"; } } else { echo "没有邮件发送日志。"; } $conn->close();
Ringkasan:
Dengan menggunakan PHP dan perpustakaan PHPMailer, kami boleh melaksanakan fungsi log penghantaran e-mel yang mudah untuk merekod dan menjejaki status penghantaran e-mel dalam laman web. Artikel ini menyediakan langkah-langkah untuk memasang dan memperkenalkan perpustakaan PHPMailer, serta cara mencipta jadual log penghantaran e-mel dan menulis fungsi untuk menghantar e-mel. Saya harap artikel ini akan membantu anda apabila melaksanakan fungsi log penghantaran e-mel.
Nota: Dalam aplikasi sebenar, anda perlu melaraskan kod mengikut keperluan anda sendiri dan memastikan operasi seperti sambungan pangkalan data dan pertanyaan boleh berjalan seperti biasa.
Atas ialah kandungan terperinci PHP dan PHPMAILER: Bagaimana untuk melaksanakan fungsi log penghantaran e-mel dalam laman web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!