php - 了解邮件功能是否发送邮件的最佳实践

时间:2013-08-21 06:38:47

标签: php

我使用下面的代码片段通过php邮件功能发送邮件。

$mailsent = mail($to_address, $subject, $message, $headers);

    if ($mailsent) 
        return "mail send";
    else
        return "error";

我正在检查$mailsent变量中的布尔值,以确定邮件是否成功发送。 这是通过php邮件功能查找邮件状态的正确做法。任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:1)

php.net邮件功能here描述:

如果邮件成功接受传递,则返回TRUE,否则返回FALSE。 重要的是要注意,仅仅因为邮件被接受传递,并不意味着邮件实际上将到达预定目的地。

这是查看邮件是否被接受发送的正确方法,但不是查看它是否确实已到达收件人。您可以随时查看您发送的电子邮件,以发送送货错误电子邮件。

答案 1 :(得分:1)

是的,这是正确的做法, 这是失败安全实践的一部分.. 您应该检查mail()是否返回true以确定邮件是否已成功发送。

邮件如果从服务器转发,即如果从服务器发送的邮件将返回true,除此之外我同意Akam的评论。邮件没有必要成功发送。(这确认了发送的邮件。)

我已经提交了一个更长的代码片段来检查提交,只会发送此邮件,您可以忽略此信息。

<?php
if(isset($_POST['submit'])) {

    $to = "testreceiver@mail.com";
    $subject = "Portfolio Contact";
    $name_field = $_POST['name'];
    $email_field = $_POST['email'];
    $message = $_POST['message'];
    $headers = "From: $email_field";
    $body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message";

    $success = mail($to, $subject, $body, $headers);
    if ($success) {
        echo "Mail has been sent!!!!";
        // redirect to thank you page here
    }
    else {
        echo "Message failed";
    }
} else {

echo "Malfunction alert!";

}
?>