ホームページ >バックエンド開発 >PHPチュートリアル >PHP と PHPMAILER: Web サイトにメール送信ログ機能を実装するにはどうすればよいですか?

PHP と PHPMAILER: Web サイトにメール送信ログ機能を実装するにはどうすればよいですか?

王林
王林オリジナル
2023-07-21 12:49:491287ブラウズ

PHP と PHPMAILER: Web サイトにメール送信ログ機能を実装するにはどうすればよいですか?

概要:
Webサイトを構築する際、メール送信機能は欠かせません。ただし、Web サイトで大量の電子メールを送信する必要がある場合、または電子メール配信を追跡および記録する必要がある場合、どの電子メールが正常に送信され、どの電子メールが送信に失敗したかなどの情報を表示するために、電子メール送信ログ機能を実装する必要があることがよくあります。この記事では、PHP と PHPMailer ライブラリを使用してメール送信ログ機能を実装する方法と、対応するコード例を紹介します。

  1. PHPMailer ライブラリをインストールして導入します:
    まず、PHPMailer ライブラリをダウンロードしてインストールする必要があります。インストール パッケージは、PHPMailer の公式 Web サイト (https://github.com/PHPMailer/PHPMailer) で見つけるか、Composer を通じてインストールできます。ライブラリ ファイルをダウンロードした後、プロジェクト ディレクトリに解凍し、autoload.php ファイルを PHP ファイルに導入します。
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
require 'path/to/PHPMailer/src/Exception.php';
  1. 電子メール送信ログ テーブルを作成します。データベース内のテーブルにメール送信ログを保存します。テーブルの構造は次のとおりです:
  2. 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. 次に、メールを送信し、送信ログを記録する関数を作成する必要があります。以下に例を示します:
  2. 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. これで、Web サイトの他の部分で上記のメール送信関数を呼び出し、受信者、件名、本文を渡すことができます。およびその他のパラメータ。以下は呼び出しの例です:
  2. $to = 'recipient@example.com';
    $subject = '邮件主题';
    $message = '邮件正文';
    
    sendEmail($to, $subject, $message);
    電子メール送信ログの表示:
  1. email_logs テーブルをクエリすることで電子メール送信ログを表示できます。以下はクエリの例です:
  2. $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();
概要:

PHP と PHPMailer ライブラリを使用すると、簡単なメール送信ログ関数を実装して、メール送信のステータスを記録および追跡できます。 Webサイト。この記事では、PHPMailer ライブラリをインストールおよび導入する手順と、メール送信ログ テーブルの作成方法およびメール送信関数の作成方法について説明します。この記事がメール送信ログ機能を導入する際の参考になれば幸いです。

注: 実際のアプリケーションでは、必要に応じてコードを調整し、データベース接続やクエリなどの操作が正常に実行できることを確認する必要があります。

以上がPHP と PHPMAILER: Web サイトにメール送信ログ機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。