2013-03-21 87 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或类似的东西?