首页 > 解决方案 > 如何将每个 phpmail() 记录到文本/日志文件中

问题描述

我想要从我的 HTML 在线表单发送的每封电子邮件的副本,以在我的服务器根文件路径中创建一个日志文件,每个 phpmail() 都发送该日志文件,并将其添加到日志文件中。

我正在使用当前的 php post 文件。有什么方法可以做到吗?

<?php
$webmaster_email = ("myemail@domain.co.uk");

$email_address = $_REQUEST['email'] ;
$comments = $_REQUEST['comment'] ;
$telephone = $_REQUEST['telephone'] ;
$first_name = $_REQUEST['name'] ;
$msg = 
"Name: " . $first_name . "\r\n" . 
"Email: " . $email_address . "\r\n" . "\r\n" .
"Phone No: " . $telephone . "\r\n" . "\r\n" .     
"Comments: " . $comments ;
    mail( "$webmaster_email", "Contact Form Results", $msg );
?>

所以基本上所有的请求语句和当前时间/日期都到一个日志文件中,这甚至可以用 php 实现吗?

标签: phpfileemaillogging

解决方案


您可以将mail结果和其他信息直接记录在用作日志的文件中:

if(mail( "$webmaster_email", "Contact Form Results", $msg ))
{
    // email sent
    logMail("$webmaster_email", "Contact Form Results", 1);
}
else
{
    // email failed
    logMail("$webmaster_email", "Contact Form Results", 0);
}

function logMail($email, $subject, $success=1)
{
    $pathLog = 'logMail.txt';
    $logContent = file_get_contents($pathLog);
    $logContent .= date('Y-m-d H:i:s');
    $logContent .= "\t";
    $logContent .= "Email ".($success ? 'sent' : 'FAILED!')."\n";
    $logContent .= "To: $email\n";
    $logContent .= "Subject: $subject\n";
    $logContent .= "\n\n";
    file_put_contents($pathLog, $logContent);
}

推荐阅读