我正在使用下面的代码片段通过 php 邮件功能发送邮件。
$mailsent = mail($to_address, $subject, $message, $headers);
if ($mailsent)
return "mail send";
else
return "error";
我正在检查$mailsent变量中的布尔值以确定邮件是否发送成功。这是通过php邮件功能查找邮件发送状态的正确做法吗?任何帮助将不胜感激。谢谢
我正在使用下面的代码片段通过 php 邮件功能发送邮件。
$mailsent = mail($to_address, $subject, $message, $headers);
if ($mailsent)
return "mail send";
else
return "error";
我正在检查$mailsent变量中的布尔值以确定邮件是否发送成功。这是通过php邮件功能查找邮件发送状态的正确做法吗?任何帮助将不胜感激。谢谢
是的,这是正确的做法,这是故障安全做法的一部分。您应该检查 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!";
}
?>
php.net 对邮件功能的描述在这里指出:
如果邮件被成功接受传递,则返回 TRUE,否则返回 FALSE。重要的是要注意,仅仅因为邮件被接受交付,并不意味着邮件实际上会到达预定目的地。
这是查看消息是否被接受发送的正确方法,而不是查看它是否确实到达了收件人。您可以随时检查您发送的电子邮件是否有递送错误电子邮件。