是的,PHP邮件发送可以记录日志。为了实现这个功能,你可以创建一个日志文件,然后在发送邮件的过程中将相关信息写入该文件。以下是一个简单的示例:
- 首先,创建一个名为
email_logs.log
的日志文件,并确保它具有写入权限:
touch email_logs.log chmod 644 email_logs.log
- 创建一个PHP脚本(例如
send_email.php
),并在其中编写以下代码:
$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 = 'Hello, World!
This is a test email sent from PHP.
'; if (send_email($to, $subject, $message)) { echo 'Email sent successfully.'; } else { echo 'Failed to send email.'; } ?>
在这个示例中,我们创建了一个名为send_email
的函数,该函数负责发送邮件并将相关信息(如收件人、发件人、主题和发送时间)插入到数据库中。同时,我们使用PHPMailer库发送邮件。
当发送邮件时,如果发生错误(如SMTP连接失败、邮件格式错误等),我们将错误信息记录到email_logs.log
文件中。这样,你就可以查看日志文件以获取有关邮件发送的详细信息。