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 ?

王林
Libérer: 2023-07-21 12:52:02
original
1318 Les gens l'ont consulté

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';
Copier après la connexion
  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;
Copier après la connexion
  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;
    }
}
Copier après la connexion
  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);
Copier après la connexion
  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();
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal