2016-05-03 60 views
0

我已經看到,有很多類似於StackOverflow我的問題,但我認爲我無法找到正確的解決方案,我的問題呢。配置問題與PHP聯繫表

的問題我有與接收電子郵件的功能連接的 - 基本上是一個聯繫我們的網站,在這裏用戶可以根據html表格並按send message部分,該消息將被傳遞給我的電子郵件。

我使用XAMPP進行開發,並在本地主機上運行Apache服務器和Mercury。即使驗證顯示成功 - 電子郵件也無法通過。

  1. 我曾嘗試將method="post"添加到HTML部分,但發現已包含type: "POST"
  2. 雙重檢查Mercury使用的端口,並將其與php.ini中提到的端口進行比較,均設置爲25
  3. 我也嘗試部署到Bitbucket pages和Azure從本地主機移動到活動託管。

我仔細閱讀了非常詳細的post。上傳網站到現場託管的想法來自這篇文章。

<?php 
$name = trim($_POST['name']); 
$email = trim($_POST['email']); 
$message = trim($_POST['message']); 


if(isset($name) && isset($email)) { 

    // Avoid Email Injection and Mail Form Script Hijacking 
    $pattern = "/(content-type|bcc:|cc:|to:)/i"; 
    if(preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $message)) { 
     exit; 
    } 

    $to = "[email protected]"; 
    $sub = "$name from Cv"; 
    // HTML Elements for Email Body 
    $body = <<<EOD 
    <strong>Name:</strong> $name <br> 
    <strong>Email:</strong> <a href="mailto:$email?subject=feedback" "email me">$email</a> <br> <br> 
    <strong>Message:</strong> $message <br> 
EOD; 

    $headers = "From: $name <$email>\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    mail($to, $sub, $body, $headers); 
} 

?> 

$("#contact-form-1").submit(function(e) { 
 
    e.preventDefault(); 
 
    var success = $(this).find('.email-success'), 
 
     failed = $(this).find('.email-failed'), 
 
     loader = $(this).find('.email-loading'), 
 
     postUrl = $(this).attr('action'); 
 

 
    success.fadeOut(100); failed.fadeOut(100); loader.fadeOut(100); 
 

 
    var data = { 
 
    name: $(this).find('.contact-name').val(), 
 
    email: $(this).find('.contact-email').val(), 
 
    message: $(this).find('.contact-message').val() 
 
    }; 
 

 
    if (isValidEmail(data['email']) && (data['message'].length > 1) && (data['name'].length > 1)) { 
 
    $.ajax({ 
 
     type: "POST", 
 
     url: postUrl, 
 
     data: data, 
 
     beforeSend: function() { 
 
     loader.fadeIn(500); 
 
     }, 
 
     success: function(data) { 
 
     loader.fadeOut(500); 
 
     failed.fadeOut(500); 
 
     success.delay(500).fadeIn(500); 
 
     }, 
 
     error: function(xhr) { // if error occured 
 
     loader.fadeOut(500); 
 
     success.fadeOut(500); 
 
     failed.delay(500).fadeIn(500); 
 
     }, 
 
     complete: function() { 
 
     loader.fadeOut(500); 
 
     } 
 
    }); 
 
    } else { 
 
    loader.fadeOut(500); 
 
    failed.delay(500).fadeIn(500); 
 
    success.fadeOut(500); 
 
    } 
 

 
    return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form id="contact-form-1" action="sendmail.php" method="POST"> 
 
    
 
    <input class="contact-name form-control" type="text" name="name" placeholder="FULL NAME"> 
 
    <input class="contact-email form-control" type="text" name="email" placeholder="EMAIL"> 
 
    <textarea class="contact-message form-control" name="message" placeholder="MESSAGE" rows="5"></textarea> 
 
    <button class="btn">SEND MESSAGE</button> 
 

 
</form>

注:我,因爲它是由模板創建者提供沒有通過自己編寫代碼。我聯繫了模板創建者,並且面臨絕對可怕的支持。這是我在這裏發表的主要原因。

+0

那麼,你沒有檢查電子郵件是否成功發送, – Epodax

+0

@Epodax我已經添加了驗證。請查看更新後的帖子。 – alljamin

+0

你有任何錯誤信息? – D14n4

回答

0

雖然看着做更多的研究,並詢問我發現this非常有用的答案什麼終於得到我的本地XAMPP配置固定。所以代碼本身沒有錯,但我的配置是問題。

重要提示:儘量按照步驟儘可能接近,簡單的;失蹤可以做最後結果的巨大差異。所以仔細檢查每一步,如果有什麼似乎被打破。

此外,還發現一個非常有見識和有趣的閱讀post