是的,PHP郵件發(fā)送可以記錄日志。為了實現(xiàn)這個功能,你可以創(chuàng)建一個日志文件,然后在發(fā)送郵件的過程中將相關(guān)信息寫入該文件。以下是一個簡單的示例:
email_logs.log
的日志文件,并確保它具有寫入權(quán)限:touch email_logs.log
chmod 644 email_logs.log
send_email.php
),并在其中編寫以下代碼:<?php
// 郵件發(fā)送函數(shù)
function send_email($to, $subject, $message) {
// 郵件服務(wù)器配置
$smtp_host = 'smtp.example.com';
$smtp_port = 587;
$smtp_username = 'your_email@example.com';
$smtp_password = 'your_email_password';
$from = 'your_email@example.com';
// 創(chuàng)建PDO實例
try {
$pdo = new PDO('mysql:host=localhost;dbname=mydb', $smtp_username, $smtp_password);
} catch (PDOException $e) {
error_log($e->getMessage());
return false;
}
// 準(zhǔn)備郵件數(shù)據(jù)
$stmt = $pdo->prepare("INSERT INTO emails (to, subject, message, sent_at) VALUES (?, ?, ?, NOW())");
$stmt->execute([$to, $subject, $message]);
// 發(fā)送郵件(這里使用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;
}
}
// 發(fā)送郵件并記錄日志
$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.';
}
?>
在這個示例中,我們創(chuàng)建了一個名為send_email
的函數(shù),該函數(shù)負(fù)責(zé)發(fā)送郵件并將相關(guān)信息(如收件人、發(fā)件人、主題和發(fā)送時間)插入到數(shù)據(jù)庫中。同時,我們使用PHPMailer庫發(fā)送郵件。
當(dāng)發(fā)送郵件時,如果發(fā)生錯誤(如SMTP連接失敗、郵件格式錯誤等),我們將錯誤信息記錄到email_logs.log
文件中。這樣,你就可以查看日志文件以獲取有關(guān)郵件發(fā)送的詳細(xì)信息。