PHP 邮件功能发送重复邮件
PHP Mail function sent duplicate email
我构建了一个带有 reCaptcha 验证的表单,我的设置被重复发送电子邮件并从 Office 收到垃圾邮件。
我的错误是什么?
一切正常,除了填写表格时,我们当时收到了 2 封电子邮件。
<?php
if (isset($_POST["submit"])) {
$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "******";
$response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']);
$data = json_decode($response);
if(isset($data->success) AND $data->success==true){
$to = "whois@sent.this";
$emailfrom = $_POST['email'];
$email = $_POST['email'];
$nom = $_POST['nom'];
$phone = $_POST['phone'];
$subject = "Formulaire de Contact Web ";
$commentaire = $_POST['commentaire'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= "Reply-to: $emailfrom";
$message = "
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Appel de service (rempli sur le site internet)</title>
<meta charset=\"UTF-8\">
<style type=\"text/css\">
h1,h2,h3,h4,h5,h6 {
font-family: Cambria, \"Hoefler Text\", \"Liberation Serif\", Times, \"Times New Roman\", serif;
color: #272727;
}
</style>
</head>
<body>
<h2 style=\"font-size: 1.25em; font-family: Gotham, ʼHelvetica Neueʼ, Helvetica, Arial, sans-serif;\">Vous avez reçu une demande de contact sur votre site internet. </h2>
<br>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
<tbody>
<tr>
<td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Formulaire de contact Copiscan.com</h3></td>
</tr>
<tr>
<td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Nom</td>
<td width=\"313\" align=\"left\" valign=\"middle\">$nom</td>
</tr>
<tr>
<td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Téléphone</td>
<td width=\"313\" align=\"left\" valign=\"middle\">$phone</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Adresse courriel</td>
<td align=\"left\" valign=\"middle\">$email</td>
</tr>
<tr bgcolor=\"#D5D5D5\">
<td colspan=\"2\" align=\"left\" valign=\"middle\">Commentaire :</td>
</tr>
<tr>
<td height=\"75\" colspan=\"2\" align=\"left\" valign=\"top\">$commentaire</td>
</tr>
</tbody>
</table>
</body>
</html>
";
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers)){
header('Location: contactez-nous.php?CaptchaPass');
}else{
echo "mail could not be sent";
}
}else{
header('Location: contactez-nous.php?CaptchaFail');
}
}else{
header('Location: contactez-nous.php?CaptchaError');
}
?>
你有
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers)){
header('Location: contactez-nous.php?CaptchaPass');
}else{
echo "mail could not be sent";
}
if语句里面的第二个mail(...)不仅判断邮件是否发送成功,还发送了邮件。所以删除第一个 mail(...) 并将其保留在 if 语句中。
双函数调用mail
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers)){
试试这个:
// Always set content-type when sending HTML email
$mailOk = mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if($mailOk){
或其他方式:
// Always set content-type when sending HTML email
// Remove this line --> mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers))){
它到达时发送的第一封电子邮件
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
和第二封电子邮件在检查时到达
if(mail($to, $subject, $message, $headers)){
去掉第一个邮件功能就可以解决问题
我构建了一个带有 reCaptcha 验证的表单,我的设置被重复发送电子邮件并从 Office 收到垃圾邮件。
我的错误是什么?
一切正常,除了填写表格时,我们当时收到了 2 封电子邮件。
<?php
if (isset($_POST["submit"])) {
$url = 'https://www.google.com/recaptcha/api/siteverify';
$privatekey = "******";
$response = file_get_contents($url."?secret=".$privatekey."&response=".$_POST['g-recaptcha-response']);
$data = json_decode($response);
if(isset($data->success) AND $data->success==true){
$to = "whois@sent.this";
$emailfrom = $_POST['email'];
$email = $_POST['email'];
$nom = $_POST['nom'];
$phone = $_POST['phone'];
$subject = "Formulaire de Contact Web ";
$commentaire = $_POST['commentaire'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= "Reply-to: $emailfrom";
$message = "
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<html>
<head>
<title>Appel de service (rempli sur le site internet)</title>
<meta charset=\"UTF-8\">
<style type=\"text/css\">
h1,h2,h3,h4,h5,h6 {
font-family: Cambria, \"Hoefler Text\", \"Liberation Serif\", Times, \"Times New Roman\", serif;
color: #272727;
}
</style>
</head>
<body>
<h2 style=\"font-size: 1.25em; font-family: Gotham, ʼHelvetica Neueʼ, Helvetica, Arial, sans-serif;\">Vous avez reçu une demande de contact sur votre site internet. </h2>
<br>
<table width=\"500\" border=\"1\" cellpadding=\"5\" cellspacing=\"2\">
<tbody>
<tr>
<td colspan=\"2\" align=\"left\" valign=\"middle\" bgcolor=\"#84BDEC\"><h3>Formulaire de contact Copiscan.com</h3></td>
</tr>
<tr>
<td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Nom</td>
<td width=\"313\" align=\"left\" valign=\"middle\">$nom</td>
</tr>
<tr>
<td width=\"155\" align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Téléphone</td>
<td width=\"313\" align=\"left\" valign=\"middle\">$phone</td>
</tr>
<tr>
<td align=\"left\" valign=\"middle\" bgcolor=\"#D5D5D5\">Adresse courriel</td>
<td align=\"left\" valign=\"middle\">$email</td>
</tr>
<tr bgcolor=\"#D5D5D5\">
<td colspan=\"2\" align=\"left\" valign=\"middle\">Commentaire :</td>
</tr>
<tr>
<td height=\"75\" colspan=\"2\" align=\"left\" valign=\"top\">$commentaire</td>
</tr>
</tbody>
</table>
</body>
</html>
";
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers)){
header('Location: contactez-nous.php?CaptchaPass');
}else{
echo "mail could not be sent";
}
}else{
header('Location: contactez-nous.php?CaptchaFail');
}
}else{
header('Location: contactez-nous.php?CaptchaError');
}
?>
你有
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers)){
header('Location: contactez-nous.php?CaptchaPass');
}else{
echo "mail could not be sent";
}
if语句里面的第二个mail(...)不仅判断邮件是否发送成功,还发送了邮件。所以删除第一个 mail(...) 并将其保留在 if 语句中。
双函数调用mail
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers)){
试试这个:
// Always set content-type when sending HTML email
$mailOk = mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if($mailOk){
或其他方式:
// Always set content-type when sending HTML email
// Remove this line --> mail($to, $subject, $message, $headers);
// so on...all your mail parameters here
if(mail($to, $subject, $message, $headers))){
它到达时发送的第一封电子邮件
// Always set content-type when sending HTML email
mail($to, $subject, $message, $headers);
和第二封电子邮件在检查时到达
if(mail($to, $subject, $message, $headers)){
去掉第一个邮件功能就可以解决问题