PHP - 发送一封电子邮件,但发送2封电子邮件不会

时间:2014-03-03 06:27:45

标签: php email

考虑以下代码:

<?php
//Original code: http://myprogrammingblog.com/2013/08/27/how-to-make-a-contact-form-     with-bootstrap-3-jqueryphphtml5jqbootstrapvalidation/
//Modified to send email confirmation to bidder and to write file with data

// check if fields passed are empty
if(empty($_POST['name'])        ||
   empty($_POST['firstName'])   ||
   empty($_POST['email'])       ||
   empty($_POST['phone'])       ||
   empty($_POST['message'])     ||
   empty($_POST['date'])        ||
   empty($_POST['itemNo'])      ||
   empty($_POST['itemName'])    ||
   !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
   {
echo "No arguments Provided!";file_put_contents('results.txt', "No arguments Provided!", FILE_APPEND);
return false;
   }

$name = $_POST['name'];
$firstName = $_POST['firstName'];
$email_address = $_POST['email'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$date = $_POST['date'];
$itemNo = $_POST['itemNo'];
$itemName = $_POST['itemName'];

// Require to process DB access and updates
require_once ('insertBid.php');

// create email notice and send it to administrator
$to = '******@gmail.com'; //admin email
$email_subject = "Nouvelle enchère de l'encan silencieux Équipe 300PAS";
$email_body = "Tu as reçu une nouvelle enchère.\n\n".
              "Voici les details :\n".
              "Nom: $firstName $name \n".
              "Date de la nouvelle enchère : $date \n".
              "Description de l'enchère : $itemNo - $itemName \n".
              "Courriel : $email_address\n".
              "Téléphone : $phone\n".
              "Montant soumis : $message $";
$headers = "From: ******@yveschaput.com\n";
$headers .= "Reply-To: $email_address";
mail($to,$email_subject,$email_body,$headers);

// create email confirmation and send it to bidder  
$to = $email_address; // bidder's email
$email_subject = "Confirmation de votre enchère";
$email_body = "Bonjour $firstName $name, \n\n".
              "Merci pour votre offre. \n".
              "Voici les details:\n \nVotre offre est pour : $itemNo - $itemName \n".
              "Date de votre offre : $date \n".
              "Montant de votre offre : $message $".
              "\n\nSi vous êtes le plus haut soumissionaire, vous serez averti par courriel ou téléphone ($phone) à la fin de l'enchère.".
              "\n\nL'équipe 300PAS Trophé Rose des Andes.";
$headers = "From: ******@yveschaput.com\n";
$headers .= "Reply-To: ******@yveschaput.com";
mail($to,$email_subject,$email_body,$headers);
return true;            
?>

现在,我的联系表单中有另一个类似的脚本,它向管理员发送一封电子邮件,它运行正常。 我在这里发布的脚本唯一真正的区别是require_once将数据插入数据库,第二封电子邮件发送给用户。 该脚本至少可以执行对insertBid.php脚本的调用,因为de DB会更新。但是没有发送电子邮件。我知道这不是服务器问题,因为发送电子邮件的其他脚本确实有效。

在我以前的测试中,在进行任何后端脚本编写之前,这个脚本有效,但它没有调用这个insertBid.php。

这是insertBid.php脚本,如果它可以帮助你解决这个问题:

<?php
# connect to the database  
require_once('connect.php');

#On concatene le prénom et le nom dans une même variable
$fullName = $firstName . " " . $name;

#pour debug, on s'assure que les détails sont correct et on met le tout dans un fichier
$bid = $fullName. "," . $email_address . "," . $phone . "," . $message . "," . $date . "," . $itemNo . "," .  $itemName;
file_put_contents('results.txt', $bid, FILE_APPEND);

#Requête d'insertion de chaque offre dans la BD
$sql = "INSERT INTO encan(nom,email,phone,itemNo,itemDesc,bid,bidDate) VALUES (:nom,:email,:phone,:itemNo,:itemDesc,:bid,:bidDate)";
$q = $dbh->prepare($sql);   
$q->execute(array(':nom' => $fullName, ':email' => $email_address, ':phone' => $phone, ':itemNo' => $itemNo, ':itemDesc' => $itemName, ':bid' => $message, ':bidDate' => $date));
$affected_rows = $stmt->rowCount();
return true;
?>

任何帮助都非常值得赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

该死!我在PHP文件夹中找到了一个error_log文件,其中包含我的所有PHP脚本。事实证明,这是一个简单的错误变量错误,它在完成之前停止了脚本。

在我的insertBid.php脚本中,我从另一个脚本中复制/粘贴了部分代码,我忘了更改$affected_rows = $stmt->rowCount();。 PDO对象名为$ q,而不是$ stmt。 我甚至没有使用那条线。啧!

现在我用它来验证SQL查询if ($affected_rows !=0){return $affected_rows;}, 并从调用脚本中写入一个日志文件,这样我就可以更容易地跟踪发生的事情。

总的noob错误,这就是我。 很抱歉带走了你宝贵的时间。 (羞耻地留下我的双腿之间的尾巴)