我使用下面的代码片段通过php邮件功能发送邮件。
$mailsent = mail($to_address, $subject, $message, $headers);
if ($mailsent)
return "mail send";
else
return "error";
我正在检查$mailsent
变量中的布尔值,以确定邮件是否成功发送。 这是通过php邮件功能查找邮件状态的正确做法。任何帮助将不胜感激。谢谢
答案 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!";
}
?>