2013-11-22 42 views
0

我想通過郵件獲取聯繫表單詳細信息。但是使用mail()函數失敗了。這是我的代碼。無法使用郵件()函數發送郵件在php

if(isset($_POST['rqsubmit'])) { 
    $name = htmlspecialchars($_POST['Field1']); 
    $email = trim($_POST['Field2']); 
    $phone = trim($_POST['Field3']); 
    $msg = strip_tags($_POST['Field4']); 
    //echo $name." ".$phone." ".$email." ".$msg; 
    $to = '[email protected]'; 
    //$from = $email; 
    $subject = "Software Development"; 
    $message = "Name:".$name."<br/>Phone".$phone."<br/>Message:".$msg; 
    //echo $message; 
    $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
//echo $message;  
$headers = "From: [email protected]". "\r\n". 
      'Reply-To: [email protected]' . "\r\n" . 
      'X-Mailer: PHP/' . phpversion();  
$headers .= "\nMIME-Version: 1.0\n" . 
"Content-Type: multipart/mixed;\n" . 
" boundary=\"{$mime_boundary}\"";  
    $ok = @mail($to, $subject, wordwrap($message, 70, "\r\n"), $headers); 
    if ($ok) { 
     echo "<p>Thank you for contacting us! !!</p>"; 
    } else { 
     echo "<p>Mail could not be sent. Sorry!</p>"; 
    } 
} else { 
    echo "mail not sent"; 
} 

我想知道我出錯的地方。任何幫助將非常感激。謝謝!

+0

生成的錯誤是什麼? – Bhadra

+2

作爲第一步,從代碼中刪除錯誤抑制運算符('@')並查看它是否輸出任何錯誤。 –

+0

這是錯誤:「Mail could not be sent。Sorry!。removed @ too。 – rgk

回答

0

地址: 'X-Mailer:PHP /'。 phpversion(); 去: $標題

+0

這是因爲。 ..? – Babblo

0

也許它被拒絕,因爲缺乏發件人的電子郵件地址。

將您自己的電子郵件地址放在From:標題中,並添加一個包含發件人地址的標頭Reply-To:

我可以指出你需要在將表單數據放入電子郵件之前徹底檢查表單數據。例如,通過將Field2設置爲[email protected]\nBcc: [email protected], [email protected], ...之類的內容,我可以非常輕鬆地在整個地方發送電子郵件。

編輯: 對不起,我的錯誤 - 你沒有添加From頭。但是,很可能您的郵件服務器配置爲拒絕發件人地址不在其批准發件人列表中的郵件。這就是爲什麼您需要將自己的地址放在From:標題中,並將發件人的地址放在Reply-To:標題中。

編輯2: 另外,你在做什麼$mime_boundary?據我所知,你沒有發送一個有效的MIME消息。

+0

沒有來自Form數據的問題,我通過echoing檢查了,請檢查我編輯過的代碼,仍然無法發送郵件 – rgk

+0

它是我的錯誤,我忘了更新頁面中的action =「」值謝謝大家幫助我,最後能夠發送郵件。 – rgk