1

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

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

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

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

4

2 回答 2

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!";

}
?>
于 2013-08-21T07:29:13.463 回答
1

php.net 对邮件功能的描述在这里指出:

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

这是查看消息是否被接受发送的正确方法,而不是查看它是否确实到达了收件人。您可以随时检查您发送的电子邮件是否有递送错误电子邮件。

于 2013-08-21T06:53:11.563 回答