2016-07-21 121 views
0

我試圖確保別人的錯誤不在這裏,但我似乎無法解決這個問題。當我通過輸入姓名,電子郵件和消息來運行測試時,它會返回對該消息的感謝,但不會發送電子郵件。PHP聯繫表格返回發送,但它不是發送

希望這個人是不是一個愚蠢的錯字

HTML:

  <form method="post" action="contact.php" id="contactform"> 

       <div> 
       <p>Send us your message</p> 
       </div> 

       <div> 
       <label>Username <span class="required">*</span></label> 
       <input name="name" type="text" id="name" value="" /> 
       </div> 

       <div> 
       <label>Email <span class="required">*</span></label> 
       <input name="email" type="text" id="email" value="" /> 
       </div> 

       <div> 
       <label>Message <span class="required">*</span></label> 
       <textarea name="message" rows="20" cols="50" id="message" ></textarea><br /><br /> 
       </div> 

       <div> 
       <input type="submit" value="Submit" class="button"> 
       <input type="reset" value="Reset" class="button"> 
       </div> 

      </form> 

PHP:

<?php 
$field_name = $_POST['name']; 
$field_email = $_POST['email']; 
$field_message = $_POST['message']; 

$mail_to = '[email protected]'; 
$subject = 'Web message from '.$field_name; 

$body_message = 'From: '.$field_name."\n"; 
$body_message .= 'E-mail: '.$field_email."\n"; 
$body_message .= 'Message: '.$field_message; 

$headers = 'From: '.$field_email."\r\n"; 
$headers .= 'Reply-To: '.$field_email."\r\n"; 

$mail_status = mail($mail_to, $subject, $body_message, $headers); 

if ($mail_status) { ?> 
    <script language="javascript" type="text/javascript"> 
    alert('Thank you for the message.'); 
    window.location = '/'; 
    </script> 
<?php 
} 
else { ?> 
    <script language="javascript" type="text/javascript"> 
    alert('Message failed.); 
    window.location = '/'; 
    </script> 
<?php 
} 
?> 
+0

文檔是這樣說的「需要注意的是,只是因爲郵件被接受交付,這並不意味着該郵件實際上會達到預期的目標是很重要的。」 http://php.net/manual/en/function.mail.php最好的辦法是使用SMTP或API – adelowo

+0

我假設你已將$ mail_to變量更改爲[email protected]只是爲了這篇文章,那是不是問題? – TheValyreanGroup

回答

-2

請不要做這樣的事情。你需要逃跑和清理的東西,如mysql_real_escape_string用戶輸入,你可以簡單地使用

header('Location: http://example.org/'); 
exit(); 

對於你的問題:在我看來,郵件功能不好在任何情況下使用。僅僅因爲有許多webhosting服務不允許使用它或有限制。我會使用PHPMailer之類的東西,它使用smtp發送和檢索電子郵件數據。請記住,你需要一個電子郵件帳戶來使用這樣的庫。

曼尼

+0

謝謝你的建議!我會改用類似的東西。 – frecilup

+2

mysql_real_escape_string?!? OP沒有在數據庫中放入任何東西 – 2016-07-21 23:57:39

+0

無論你在做什麼,你都應該逃避用戶數據。 mysql_real_esape_string只是op可以使用的一個例子。 –