2013-03-21 31 views
0

這涉及到我在這裏發佈的另一個問題,但它是一個 不同的問題,所以我希望人們不認爲我是雙重發布。php mail()函數在Wordpress中工作嗎?

我在Wordpress中有這樣的電子郵件表單。

HTML

​​

jQuery的

$j('#submit').click(function(){  
     // 
     var nameVal = $j('#contactForm #contactName').val(); 
     var emailVal = $j('#contactForm #contactEmail').val(); 
     var messageVal = $j('#contactForm #contactMessage').val(); 

     // 
     $j.post('wp-content/code/contactEngine.php', { theName:nameVal, theEmail:emailVal, theMessage:messageVal }, function(data){ 
      $j("#status p").html(data); 
      $j("#status p").show().fadeOut(3500); 
      if(data.indexOf('Thank You')==0) {document.forms[0].reset();} 
     }); 
    }) 

PHP

<?php 

     $errors = array(); 
     $required_fields = array('theName','theEmail','theMessage'); 
     foreach($required_fields as $fieldname){ 
     if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])){ 
      $errors[] = $fieldname; 
     } 
     } 
     if(empty($errors)){ 
     $name_field = Trim(stripslashes($_POST['theName'])); 
     $name = explode(' ', $name_field); 
     $firstname = ucfirst($name[0]); 
     $email_field = Trim(stripslashes($_POST['theEmail'])); 
     $message = Trim(stripslashes($_POST['theMessage'])); 
     // 
     $to = "[email protected]"; 
     $subject = "Email from Website"; 
     $body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message"; 
     // 
     mail($to, $subject, $body); 

      //wp_mail($to, $subject, $body); 

     echo "Thank You $firstname"; 
     }else{ 
     echo "Please complete all fields."; 
     } 

    ?> 

的PHP是在wp-content文件夾中的文件夾中,因此很容易在jQuery來訪問它。

$j.post('wp-content/code/contactEngine.php', { theName:nameVal, theEmail:emailVal, theMessage:messageVal }, function(data){ 

變量到達PHP並回顯回覆,如果表單完成與否。

實際郵件不發送 - php mail()函數是否在Worpdress中工作?

我試過wp_mail()函數,但是這完全停止了腳本,我沒有得到回聲。

我知道有電子郵件插件,如聯繫表7,但我不認爲他們將與本網站一起工作。

這是一個單頁網站使用自定義類型後,我沒有要求任何內容,我認爲我與定義聯繫表7

回答

1

PHP的郵件功能是完全獨立的WordPress做。這是一個內置的PHP函數,理論上可以在所有平臺上工作。

我唯一想到的是服務器配置有問題。也許你的hsoting阻止了郵件功能,或者它沒有正確設置。

看看這個例子在一個獨立的文件(http://php.net/manual/en/function.mail.php)工作原理:

<?php 
    $to  = '[email protected]'; 
    $subject = 'the subject'; 
    $message = 'hello'; 
    $headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

    mail($to, $subject, $message, $headers); 
?> 
+0

謝謝ZorleQ。我實際上是在MAMP本地工作。當它在Wordpress之外時,這個相同的腳本在MAMP中起作用。 – ttmt 2013-03-21 11:22:19

+0

這是否意味着它在本地(在MAMP中)與WordPress集成時失敗,還是意味着它與託管站點集成在一起時會失敗?這裏有兩個變量。確保你已經分開了他們的影響。 – ebohlman 2013-03-21 11:25:18

+0

使用Wordpress在本地(在MAMP中)失敗。我還沒有嘗試過它託管。 – ttmt 2013-03-21 11:37:18

0

我只是想解決類似的問題。可能得到它的工作事情可能包括:

  1. 按照this示例(或類似)來構建你的代碼 - 不知道是否有任何實際效果。

  2. 實驗與從這個例子提供標頭,包括以下形式:

    $headers = array('From: From someone <[email protected]>'. "\r\n",'Content-Type: text/html; charset=UTF-8');

  3. 不允許空變量進入的消息,對象或標題 - 用空字符串或類似初始化它們 - >$myvar='';

  4. 如果您的主題包含多字節字符或類似字符,請查看this

+0

而且 - 我解決了它。它使用mail()或wp_mail()。 wp_mail()似乎需要數組樣式的頭文件。 – jakz 2014-05-21 10:28:14

0

如果你不包括WordPress的文件(WP-load.php等),這是一個「正常」的PHP,有什麼共同點與他人WordPress的文件,除了它的位置,所以問題應該是一些配置在.htaccess文件或其他目錄配置我猜。你使用虛擬主機只是WP或類似的東西?