2012-02-09 216 views
0

我收到了以下代码,在发送之前检查字段是否已填充或不存在......发送邮件时,我收到邮件“我们已收到您的电子邮件”。但我无法在收件箱中看到电子邮件,用两个不同的电子邮件尝试过,但结果相同......无法弄清楚为什么你可以帮助我。这里是代码:用php发送电子邮件

if($badinput == NULL){ ?> 
    <h2>We have received your email .</h2> 
    </div> 
    <?php 

    require_once("libs/inc.email_form.php"); 

    $email_fields = array(
     "Name"    => $_POST['name'], 
     "E-Mail Address"  => $_POST['email'], 
     "Telephone Number"  => $_POST['telephone'], 
     "Callback"   => $_POST['callback'], 
     "Enquiry"   => $_POST['enquiry'] 
    ); 

    contact_form("[email protected]", $_POST['email'], " Enquiry", "test", $email_fields); 
} 
else 
{ 
    echo $badinput . "</div>"; 
} 
?> 

这里的库函数/ inc.email_form.php:

function contact_form($to, $from, $subject, $message, $fields){ 
    if(!$to || !$from || !$subject || !$message || !$fields){ 
     print form function is missing a variable"; 
     return false; 
    } 

    $msg_body = $message."\n\nSubmitted ".date("l, F j, Y, g:i a")." [EST]\n\nSUBMISSION DETAILS:\n"; 

    // clean up all the variables 
    foreach($fields as $k => $v){ 
     $msg_body .= "\n".$k.": ".clean_var($v); 
    } 

    // add additional info 
    $referer = (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : "could not determine" ; 
    $user_agent = (isset($_SERVER['HTTP_USER_AGENT'])) ? $_SERVER['HTTP_USER_AGENT'] : "could not determine" ; 
    $msg_body .= "\n\nAdditional Info:\nIP = ".$_SERVER['REMOTE_ADDR']."Browser Info: ".$user_agent."Referral: ".$referer." \r"; 

    // send it 
    $emailer = new emailer; 
    if(is_array($to)){ 
     foreach($to as $t){ 
      $emailer->send_email($from, $subject, $msg_body, $to); 
     } 
    }else{ 
     $emailer->send_email($from, $subject, $msg_body, $to); 
    } 

    return true; 
} 
+0

是我做的,因为我是从其他网站 – Zaki 2012-02-09 09:25:14

回答

2

我认为没有理由使用一类,如果只是可能仍然使用标准的PHP邮件()函数。

请尝试使用此代码来测试,如果邮件实际上会发送:

if (mail('[email protected]', 'subject', 'test email')) 
    echo 'Mail was sent'; 
else 
    echo 'Mail could not be sent'; 

另外,也请通过PHP邮件的垃圾邮件文件夹中的许多电子邮件发送()获取标记为垃圾邮件由于不正确或不完整的标题或因为滥用和不良的IP声誉(特别是如果您使用共享主机)。

+0

确定我这个试图将其发送,我收到一封电子邮件,而不是我原来的功能:$主题=“test”; \t $ message =“mesage”; \t $ headers。='From:test'。为 “\ r \ n” 个; \t \t mail(“myemailaddress”,$ subject,$ message,$ headers); \t \t echo(“email sent”); – Zaki 2012-02-09 09:52:15

1

它似乎并没有真正检查$ emailer类的返回值,所以告诉你你的电子邮件发送功能真的只是一个误报。

我会改变:

$emailer->send_email($from, $subject, $msg_body, $to); 

到:

$result = $emailer->send_email($from, $subject, $msg_body, $to); 
print_r($result); 

,并检查一下$的emailer类返回。更有可能的是,失败将成为“0”,成功则成为“1”。

+0

我试了这个,我得到1 ...但仍然没有电子邮件,我也检查垃圾邮件太 – Zaki 2012-02-09 09:47:02

+0

@ Sam1你可以发布你的脚本/电子邮件脚本的zip存档下载,所以我可以看一看? – vero 2012-02-09 18:38:54

0

这是对脚本的100%准确表示吗?

似乎有一个主要的语法错误,如果它以某种方式不会错误地出现在你身上,至少会完全改变脚本的功能。

if(!$to || !$from || !$subject || !$message || !$fields){ 
    print form function is missing a variable"; 

当然,它应该是:

if(!$to || !$from || !$subject || !$message || !$fields){ 
    print "form function is missing a variable";