温馨提示×

PHP邮件发送能否记录日志

PHP
小樊
81
2024-10-30 22:53:44
栏目: 编程语言

是的,PHP邮件发送可以记录日志。为了实现这个功能,你可以创建一个日志文件,然后在发送邮件的过程中将相关信息写入该文件。以下是一个简单的示例:

  1. 首先,创建一个名为email_logs.log的日志文件,并确保它具有写入权限:
touch email_logs.log
chmod 644 email_logs.log
  1. 创建一个PHP脚本(例如send_email.php),并在其中编写以下代码:
<?php
// 邮件发送函数
function send_email($to, $subject, $message) {
    // 邮件服务器配置
    $smtp_host = 'smtp.example.com';
    $smtp_port = 587;
    $smtp_username = 'your_email@example.com';
    $smtp_password = 'your_email_password';
    $from = 'your_email@example.com';

    // 创建PDO实例
    try {
        $pdo = new PDO('mysql:host=localhost;dbname=mydb', $smtp_username, $smtp_password);
    } catch (PDOException $e) {
        error_log($e->getMessage());
        return false;
    }

    // 准备邮件数据
    $stmt = $pdo->prepare("INSERT INTO emails (to, subject, message, sent_at) VALUES (?, ?, ?, NOW())");
    $stmt->execute([$to, $subject, $message]);

    // 发送邮件(这里使用PHPMailer库作为示例)
    require 'vendor/autoload.php';
    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    try {
        $mail = new PHPMailer(true);
        $mail->SMTPDebug = 0;
        $mail->isSMTP();
        $mail->Host       = $smtp_host;
        $mail->SMTPAuth   = true;
        $mail->Username   = $smtp_username;
        $mail->Password   = $smtp_password;
        $mail->SMTPSecure = 'tls';
        $mail->Port       = $smtp_port;
        $mail->setFrom($from, 'Mailer');
        $mail->addAddress($to);
        $mail->isHTML(true);
        $mail->Subject = $subject;
        $mail->Body    = $message;
        $mail->send();
        return true;
    } catch (Exception $e) {
        error_log($e->getMessage());
        return false;
    }
}

// 发送邮件并记录日志
$to = 'recipient@example.com';
$subject = 'Test Email';
$message = '<h1>Hello, World!</h1><p>This is a test email sent from PHP.</p>';

if (send_email($to, $subject, $message)) {
    echo 'Email sent successfully.';
} else {
    echo 'Failed to send email.';
}
?>

在这个示例中,我们创建了一个名为send_email的函数,该函数负责发送邮件并将相关信息(如收件人、发件人、主题和发送时间)插入到数据库中。同时,我们使用PHPMailer库发送邮件。

当发送邮件时,如果发生错误(如SMTP连接失败、邮件格式错误等),我们将错误信息记录到email_logs.log文件中。这样,你就可以查看日志文件以获取有关邮件发送的详细信息。

0