如何测试 PHP mail() 是否已成功传递邮件


How to test if PHP mail() has successfully delivered mail

如何测试mail()邮件是否已成功投递?

好吧,mail()只是返回一个布尔值,具体取决于邮件是否成功接受传递。从 php.net 网站:

如果邮件已成功接受传递,则返回 TRUE,FALSE 否则。

重要的是要注意,仅仅因为邮件被接受 交付,这并不意味着邮件将实际到达预期 目的地。

因此,您可以测试它是否已"发送",但是检查它是否已发送是另一回事。

根据Ben的回复,您可以检查电子邮件是否成功,如下所示

$result = mail('abc@test.com', 'Test Subject', $message);
if(!$result) {   
     echo "Error";   
} else {
    echo "Success";
}

为了获得更好的结果,您可以使用PHPMailer。点击下面的链接查看PHPMailer的详细文档。

http://phpmailer.worxware.com/index.php?pg=tutorial

if(!$mail->Send()) {
  echo 'Message was not sent.';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Message has been sent.';
}

试试这个:

if(@mail($emailRecipient, $subject, $message, $headers))
{
  echo "Mail Sent Successfully";
}else{
  echo "Mail Not Sent";
}
来自

文档:

"如果邮件已成功接受投递,则返回 TRUE, 否则为假。

重要的是要注意,仅仅因为邮件被接受投递,并不意味着邮件实际上会到达预定目的地。"

来自 http://php.net/mail

Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.

mail() 函数本身只是通知您您设置的"电子邮件"是合法的,并将向我发送您的电子邮件服务器。

您必须单独检查电子邮件地址是否合法。一篇好文章可以在这里找到

如果这两种方法不适合您,您可以使用一些使用图像和服务器日志文件的"垃圾邮件"方法。

if (isset($_POST["btn_emp"])) {

//$hid_emp = ($_POST['hid_emp']);
$employee_name = ($_POST['employee_name']);
$department_id = ($_POST['department_id']);
$serial_number = ($_POST['serial_number']);
$employee_address = ($_POST['employee_address']);
$employee_contact = ($_POST['employee_contact']);
$employee_email = ($_POST['employee_email']);


$insert = "INSERT INTO tbl_employee(department_id,serial_number,employee_name,employee_address,employee_contact,employee_email)VALUES('$department_id', '$serial_number', '$employee_name','$employee_address' ,'$employee_contact', '$employee_email')";
//echo $insert;
//die();
if ($conn->query($insert) === TRUE) {
    //CODE FOR SEND MAIL
    $Mail_Admin_Message = '';
            $Mail_Admin_Message .= '
                <table width="700px" border="0" cellpadding="0" cellspacing="0">
                    <tr height="15px"><td colspan="3"></td></tr>
                    <tr>
                        <td colspan="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
                            Date</b> :<b> '. $serial_number .'</b>
                        </td>
                    </tr>
                    <tr height="15px"><td colspan="3"></td></tr>
                    <tr>
                        <td colspan="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
                            Hi</b> <b> '. $employee_name .'</b>
                        </td>
                    </tr>
                    <tr height="15px"><td colspan="3"></td></tr>
                    <tr>
                        <td colspan="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
                          Your Gift Voucher Code is</b> :<b> '. $department_id .'</b>
                        </td>
                    </tr>
                    <tr height="15px"><td colspan="3"></td></tr>
                    <tr>
                        <td colspan="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px;">
                            Gift Amount</b> :<b> '. $employee_address .'</b>
                        </td>
                    </tr>
                    <tr height="15px"><td colspan="3"></td></tr>
                    <tr height="15px"><td colspan="3"></td></tr>
                    <tr>
                        <td colspan="3" style="font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold;">Thanks, <br />DairyKart Team</td>
                    </tr>
                </table>';
            $Mail_To_Admin_ID   = $employee_email;
            $Mail_Admin_Subject = "Employee Details";
            $Mail_Admin_Header  = "MIME-Version: 1.0'n";
            $Mail_Admin_Header .= "Content-type: text/html; charset=iso-8859-1'r'n";
            $Mail_Admin_Header .= "Content-Transfer-Encoding: 8bit'n";
            $Mail_Admin_Header .= "X-Priority: 1'n";
            $Mail_Admin_Header .= "From: Employee-Department Project'r'n";
            $Mail_Admin_Header .= "X-MSMail-Priority: High'n";
            mail($Mail_To_Admin_ID, $Mail_Admin_Subject, $Mail_Admin_Message, $Mail_Admin_Header);
            //echo $serial_number;
            //echo $employee_email;
            //die();
    echo "<script>alert('Successfully Added & Check Your Mail to know your Details.!!!'); window.location='add-employee.php'</script>";

您可以在 PHP 中使用 $_SERVER['REMOTE_ADDR'] 来接收用户的远程 IP 地址。

像这样使用:

<?php 
    $ip = $_SERVER['REMOTE_ADDR'];
    echo "User's IP address is: ".$ip;
 ?>