PHP电子邮件脚本问题

时间:2012-01-06 13:01:49

标签: php email

您好,我已经编辑了一些我在网上找到的代码,除了验证之外,一切都有效。即使所有字段在我创建的联系表单上都是空白的,它似乎总是发送电子邮件。这绝对是一个简单的修复,但我是新手,所以任何帮助对我来说意义重大!!

感谢。

下面是用于php脚本的代码:

/////////////////////////////////////////////// //////

<?php
// Contact subject
$subject ="$Email Enquiry"; 
// Details
$message=("$cComment") ; 

// Mail of sender
$mail_from="$cEmail"; 
// From 
$header="from: $cName <$mail_from>"; 

// Enter your email address
$to ='info@blahblahblah.net'; 

$send_contact=mail($to,$subject,$message, $header);

// Check, if message sent to your email 
// display message "We've recived your information"
if($mail_from != "Email"){
header('Location:thanksemail.php');
}
else {
header('Location:emailfail.php');
}
?>

4 个答案:

答案 0 :(得分:3)

在发送电子邮件之前,您需要检查变量是否为空。你可以这样做:

if(!empty($variable) and
   !empty($variable2)) {
    // send the email out here
}

我在这里使用empty()函数来检测值是否为空。以下值被视为空值:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)

我还会避免使用标准的PHP邮件功能,而是使用PHPMailerSwiftMailer这样的库来发送您的电子邮件。它们为您提供了更大的灵活性,并且可以使用更好的API。

答案 1 :(得分:0)

作为旁注,您可以通过验证电子邮件的发送方式来保存自己的一行或两行代码:

if(mail($to,$subject,$message, $header)){
     header('Location:thanksemail.php');
}else {
     header('Location:emailfail.php');
}

如果它回来了,它就被发送了。如果为false,则不会发送。

答案 2 :(得分:0)

您还没有任何支票代码。发送邮件的代码是$ send_contact = mail($ to,$ subject,$ message,$ header); 检查必须在此代码之前

试试这个

if($subject!="" && $cComment!="" && $cEmail!="" && $cName!="" && $mail_from!=""){
$send_contact=mail($to,$subject,$message, $header);

if($mail_from != "Email"){
header('Location:thanksemail.php');
}
else {
header('Location:emailfail.php');
}


}else{
header('Location:emailfail.php');
}

答案 3 :(得分:0)

您已将 mail()功能置于 if()语句之外。

移动它(并用其他字段填写if):

<?php
if(!empty($mail_from) && !empty($Email)) {
  mail($to, $subject, $message, $header);
  header('Location:thanksemail.php');
} else {
 header('Location:emailfail.php');
}