2012-02-09 109 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";