2013-07-10 89 views
0

對於任何菜鳥錯誤,我都會提前道歉,因爲這是我第一次嘗試將HTML/PhP聯繫人表單拼湊在一起。我已經搜索過相同問題的以前的問題,並沒有發現任何實質內容。簡單聯繫表格的問題

問題是電子郵件沒有發送。事情至此我已經試過: - 確認SMTP功能 - 確認它不是一個主機相關的問題 - 用在另一個模板這種具體形式/ PHP郵件和正常工作 - 經過垃圾郵件文件夾

這裏聯繫表格本身:

<form action="contact.php" method="POST" id="contact-form" class="form"> 
    <input type="hidden" value="" name="check"> 
    <noscript> 
    <p class="noscript">JavaScript is required to use this form, please make sure your browser supports it.</p> 
    </noscript> 
    <p class="input"> 
    <label for="name" class="label">Name</label> 
    <input type="text" name="name" id="name"> 
    </p> 
    <p class="input"> 
    <label for="company" class="label">Company</label> 
    <input type="text" name="company" id="company"> 
    </p> 
    <p class="input"> 
    <label for="email" class="label">Email</label> 
    <input type="text" name="email" id="email"> 
    </p> 
    <p class="input"> 
    <label for="phone" class="label">Phone</label> 
    <input type="text" name="phone" id="phone"> 
    </p> 
    <p class="dark input"> 
    <label for="title" class="label">Project Title</label> 
    <input type="text" name="title" id="title"> 
    </p> 
    <p class="dark input"> 
    <label for="timeline" class="label">Timeline</label> 
    <input type="text" name="timeline" id="timeline"> 
    </p> 
    <p class="dark textarea"> 
    <label for="details" class="label">Details</label> 
    <textarea name="details" id="details"></textarea> 
    </p> 
    <p> 
    <label for="send" class="send-label">Everything look good? Click send.</label> 
    <input type="submit" value="Submit" name="submit" class="button"> 
    </p> 
    </form> 

這裏是PHP郵件:

<?php 
    $field_name = $_POST['name']; 
    $field_company = $_POST['company']; 
    $field_email = $_POST['email']; 
    $field_phone = $_POST['phone']; 
    $field_title = $_POST['title']; 
    $field_timeline = $_POST['timeline']; 
    $field_message = $_POST['details']; 

    $mail_to = '[email protected]email.com'; 
    $subject = 'Quote request 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. We will contact you shortly.'); 
    window.location = 'contact.html'; 
    </script> 
    <?php 
    } 
    else { ?> 
    <script language="javascript" type="text/javascript"> 
    alert('Message failed. Please contact the webmaster.'); 
    window.location = 'contact.html'; 
    </script> 
    <?php 
    } 
    ?> 

僅供參考,在 「[email protected]」 是不是我使用的電子郵件。我用隱私目的的替代品。

謝謝!

+0

您是否在PHP.INI中啓用郵件日誌?如果是這樣,它報告的情況是什麼? – DevlshOne

回答

0

從PHP發送郵件充滿了困難。您可能沒有一個錯誤在你的代碼,但郵件可能無法傳遞,因爲(您想選擇儘可能多的):

  • 它不會出現來自於服務器上的電子郵件地址;
  • 出站電子郵件在默認情況下被阻止,直到您要求爲止;
  • 端口25上的出站郵件被阻止,您必須使用特定的服務器。
  • 您的服務器被列入黑名單;
  • 您的郵件被垃圾郵件過濾器阻止;
  • 其他一些原因。

讓自己的生活變得簡單。使用類似swiftmailerPHPmailer的庫來處理髮送郵件,並嘗試一些簡單的方法,例如傳送到發送服務器上的地址。然後從那裏開始工作。準備好必須使用SMTP身份驗證,並且可能還需要付費的外部服務才能爲您發送郵件。

+0

嗯,有趣的部分是我可以在同一個域中的同一個主機上使用同一收件人電子郵件的不同模板中使用這個確切的代碼,它工作得很好。 – user2567016

+0

......這正是@Hobo的觀點 - 直接調用mail()是非常不可靠的,因爲在代碼和環境中都有很多很容易出錯的地方。使用圖書館。 – Synchro

0

$field_message是空白。它在表單上,​​然後在郵件處理腳本中位於何處?

+0

某些SMTP服務器不會發送沒有郵件正文的郵件。 – DevlshOne

+0

糟糕。編輯字段時有點過分熱情。固定(換成$ field_details $ field_message)。不幸的是,這不是問題。 – user2567016