Maison >développement back-end >tutoriel php >PHP et PHPMAILER : Comment implémenter la fonction de journal d'envoi d'e-mails dans le site Web ?

PHP et PHPMAILER : Comment implémenter la fonction de journal d'envoi d'e-mails dans le site Web ?

王林
王林original
2023-07-21 12:49:491319parcourir

PHP et PHPMAILER : Comment implémenter la fonction de journal d'envoi d'e-mails dans le site Web ?

Présentation :
Lors du développement d'un site Web, la fonction d'envoi d'e-mails est indispensable. Cependant, lorsqu'un site Web doit envoyer un grand nombre d'e-mails ou doit suivre et enregistrer la livraison des e-mails, nous devons souvent mettre en œuvre une fonction de journal d'envoi d'e-mails pour afficher des informations telles que les e-mails envoyés avec succès et ceux qui ont échoué. Cet article explique comment utiliser PHP et la bibliothèque PHPMailer pour implémenter la fonction de journal d'envoi d'e-mails et fournit des exemples de code correspondants.

  1. Installer et présenter la bibliothèque PHPMailer :
    Tout d'abord, nous devons télécharger et installer la bibliothèque PHPMailer. Vous pouvez trouver le package d'installation sur le site officiel de PHPMailer (https://github.com/PHPMailer/PHPMailer) ou l'installer via Composer. Après avoir téléchargé le fichier de bibliothèque, décompressez-le dans le répertoire de votre projet et introduisez le fichier autoload.php dans le fichier PHP :
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
require 'path/to/PHPMailer/src/Exception.php';
  1. Créez une table de journal d'envoi d'e-mails :
    Créez un journal d'envoi d'e-mail dans la table de la base de données. La structure du tableau est la suivante :
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;
  1. Écriture de la fonction d'envoi d'e-mails :
    Ensuite, nous devons écrire une fonction d'envoi d'e-mails et enregistrer le journal d'envoi. Voici un exemple :
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;
    }
}
  1. Appel de la fonction d'envoi de courrier :
    Nous pouvons maintenant appeler la fonction d'envoi de courrier ci-dessus dans d'autres parties du site Web, en transmettant des paramètres tels que les destinataires, le sujet et le corps. Voici un exemple d'appel :
$to = 'recipient@example.com';
$subject = '邮件主题';
$message = '邮件正文';

sendEmail($to, $subject, $message);
  1. Afficher le journal d'envoi d'e-mails :
    Vous pouvez afficher le journal d'envoi d'e-mails en interrogeant la table email_logs. Voici un exemple de requête :
$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();

Résumé :
En utilisant PHP et la bibliothèque PHPMailer, nous pouvons implémenter une simple fonction de journal d'envoi d'e-mails pour enregistrer et suivre l'état de l'envoi d'e-mails sur le site Web. Cet article fournit les étapes pour installer et présenter la bibliothèque PHPMailer, ainsi que comment créer une table de journal d'envoi d'e-mails et écrire une fonction d'envoi d'e-mails. J'espère que cet article vous sera utile lors de la mise en œuvre de la fonction de journal d'envoi d'e-mails.

Remarque : dans les applications réelles, vous devez ajuster le code en fonction de vos propres besoins et vous assurer que les opérations telles que les connexions à la base de données et les requêtes peuvent s'exécuter normalement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn