19

如何测试是否mail()已成功发送邮件?

4

8 回答 8

18

好吧mail(),根据邮件是否被成功接受传递,简单地返回一个布尔值。从php.net网站:

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

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

So you can test to see if it's been "sent", however checking if it's been delivered is another story.

于 2012-05-14T10:52:22.523 回答
14

根据 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.';
}
于 2012-05-14T11:15:16.840 回答
4

尝试这个:

if(@mail($emailRecipient, $subject, $message, $headers))
{
  echo "Mail Sent Successfully";
}else{
  echo "Mail Not Sent";
}
于 2018-07-05T13:11:44.980 回答
3

from the docs:

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

It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination. "

于 2012-05-14T10:52:24.287 回答
2

来自http://php.net/mail

Returns TRUE if the mail was successfully accepted for delivery, FALSE otherwise.
于 2012-05-14T10:52:42.790 回答
0

单独的 mail() 函数只会通知您您设置的“电子邮件”是合法的,并将发送给我您的电子邮件服务器。

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

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

于 2012-05-14T11:01:23.480 回答
-3

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>";
于 2019-01-30T07:34:37.707 回答
-11

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

像这样使用:

<?php 

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

 ?>
于 2016-03-05T17:41:00.513 回答