PHP邮件处理程序通过两次电子邮

时间:2017-11-07 07:53:23

标签: php email

我有一个带有邮件处理程序的表单,它发送一个表单作为电子邮件TWICE .....我感觉到它是由于这行代码将用户重定向到错误或成功页面如果邮件发送与否。 (我不使用Mailto)

以下是我认为导致问题的代码行:

mail($recipient, $subject, $formcontent, $mailheader);

if(mail($recipient, $subject, $formcontent, $mailheader)){
  header("Location: success.html");
} else {
  header("Location: error-enquiry.html");
}

这是我的完整php:

<?php 
$name = $_POST['name'];
$references = $_POST['references'];
$information = $_POST['information'];
$checkbox = $_POST['checkbox'];
$email = $_POST['email'];
$formcontent="From: $name \n references: $references \n information: $information \n checkbox: $checkbox";
$recipient = "@None of your business";
$subject = "Enquiry Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader);

if(mail($recipient, $subject, $formcontent, $mailheader)){
  header("Location: success.html");
} else {
  header("Location: error-enquiry.html");
}

if (isset($_POST['checkbox'])) {
  $checkbox = "yes";
} else {
  $checkbox = "no";
}

exit; 
?>

我不知道我在这方面做错了什么......有人可以帮我吗?

干杯, 肖恩

4 个答案:

答案 0 :(得分:5)

mail($recipient, $subject, $formcontent, $mailheader); /// <-- Remove this

if(mail($recipient, $subject, $formcontent, $mailheader)){
   ...

您正在发送邮件,然后再次发送邮件以检查结果

删除第一个邮件条目

答案 1 :(得分:3)

最好将来自邮件的结果存储在变量中并进行检查,以便您不会再次发送

$is_mail=mail($recipient, $subject, $formcontent, $mailheader);
if($is_mail){
//Redirect to
}

答案 2 :(得分:1)

在检查之前,您已经调用了邮件功能。

请删除第一行代码

mail($recipient, $subject, $formcontent, $mailheader);

并使用这样的邮件功能:

 if(mail(...,...,...,...)){....}else{....} 

获得成功结果。

或分配给像

这样的变量
$email_send=mail($recipient, $subject, $formcontent, $mailheader);

if($email_send){....}else{....}

答案 3 :(得分:0)

很清楚。您调用两次邮件:一次是直接调用mail函数,一次是if语句。 2个电话,2封邮件。

请终止对邮件的单行呼叫,只保留if语句中的呼叫以解决问题。