2012-09-14 92 views
2

我正在尝试使MailHandler.php与Wordpress一起使用。我已经尝试了十几种解决方案,但其中没有一个能够工作。下面是我用做了变通办法“forms.js”文件我已经试过:如何让MailHandler.php在Wordpress中工作?

1)改变“斌/ MailHandler.php”到“邮件/ mailhandler.php”

  1. )这里是我已经改变太多了一些原有的代码:

mailHandlerURL: '../邮件/ mailhandler.php'变更为

mailHandlerURL:的 'http://www.mysite.net/wp-content/themes/mysite/mail/mailhandler.php',

THEN也尝试:

mailHandlerURL:” <?php echo get_template_directory_uri(); ?> /mail/mailhandler.php”,

contact_template.php是我的表格的位置。这里有一些事情我想为形式的行动和他们没有工作:

**<form action="../mail/mailhandler.php" id="contact-form">** Changed to 

**<form action="http://www.mysite.net/wp-content/themes/mysite/mail/mailhandler.php" id="contact-form">** 

<form action="<?php echo get_template_directory_uri(); ?>/mail/mailhandler.php" id="contact-form">

请帮助。

顺便说一下我的smtpMailServer在我的forms.js里设置为localhost

在此先感谢。

附加信息

下面是我mailhandler.php的代码

<?php 
$owner_email = $_POST["[email protected]"]; /*/originally owner_email/*/ 
$headers = 'From:' . $_POST["email"]; 
$subject = 'A message from your site visitor ' . $_POST["name"]; 
$messageBody = ""; 

if($_POST['name']!='nope'){ 
    $messageBody .= '<p>Visitor: ' . $_POST["name"] . '</p>' . "\n"; 
    $messageBody .= '<br>' . "\n"; 
} 
if($_POST['email']!='nope'){ 
    $messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n"; 
    $messageBody .= '<br>' . "\n"; 
} 
if($_POST['phone']!='nope'){   
    $messageBody .= '<p>Phone Number: ' . $_POST['phone'] . '</p>' . "\n"; 
    $messageBody .= '<br>' . "\n"; 
} 
if($_POST['message']!='nope'){ 
    $messageBody .= '<p>Message: ' . $_POST['message'] . '</p>' . "\n"; 
} 

if($_POST["stripHTML"] == 'true'){ 
    $messageBody = strip_tags($messageBody); 
} 

try{ 
    if(!mail($owner_email, $subject, $messageBody, $headers)){ 
     throw new Exception('mail failed'); 
    }else{ 
     echo 'mail sent'; 
    } 
}catch(Exception $e){ 
    echo $e->getMessage() ."\n"; 
} 

>

这里是内部forms.js

(function($){ 
$.fn.extend({ 
    forms:function(opt){ 
     if(opt===undefined) 
      opt={} 
     this.each(function(){ 
      var th=$(this), 
       data=th.data('forms'), 
       _={ 
        errorCl:'error', 
        emptyCl:'empty', 
        invalidCl:'invalid', 
        successCl:'success', 
        successShow:'4000', 
        mailHandlerURL:'http://www.mysite.com/wp-content/themes/mysite/mail/mailhandler.php', 
        ownerEmail:'[email protected]', 
        stripHTML:true, 
        smtpMailServer:'localhost', 
        targets:'input,textarea', 
        controls:'a[data-type=reset],a[data-type=submit]', 
        validate:true, 
        rx:{ 
         ".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'}, 
         ".email":{rx:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,target:'input'}, 
         ".phone":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'}, 
         ".message":{rx:/.{20}/,target:'textarea'} 
        }, 
        preFu:function(){ 
         _.labels.each(function(){ 
          var label=$(this), 
           inp=$(_.targets,this), 
           defVal=inp.val(), 
           trueVal=(function(){ 
              var tmp=inp.is('input')?(tmp=label.html().match(/value=['"](.+?)['"].+/),!!tmp&&!!tmp[1]&&tmp[1]):inp.html() 
              return defVal==''?defVal:tmp 
             })() 
          trueVal!=defVal 
           &&inp.val(defVal=trueVal||defVal) 
          label.data({defVal:defVal})        
          inp 
           .bind('focus',function(){ 
            inp.val()==defVal 
             &&(inp.val(''),_.hideEmptyFu(label),label.removeClass(_.invalidCl)) 
           }) 
           .bind('blur',function(){ 
            !inp.val() 
             ?inp.val(defVal)           
             :(_.isValid(label) 
              ?_.showErrorFu(label) 
              :_.hideErrorFu(label)), 
             (_.isEmpty(label) 
              ?_.showEmptyFu(label) 
              :_.hideEmptyFu(label)) 
           }) 
           .bind('keyup',function(){ 
            label.hasClass(_.invalidCl) 
             &&_.isValid(label) 
              ?_.showErrorFu(label) 
              :_.hideErrorFu(label) 
           }) 
          label.find('.'+_.errorCl+',.'+_.emptyCl).css({display:'block'}).hide() 
         }) 
         _.success=$('.'+_.successCl,_.form).hide() 
        }, 
        isValid:function(el){ 
         var ret=true, 
          empt=_.isEmpty(el) 
         if(empt) 
          ret=false, 
          el.addClass(_.invalidCl) 
         else 
          $.each(_.rx,function(k,d){ 
           if(el.is(k)) 
            d.rx.test(el.find(d.target).val()) 
             ?(el.removeClass(_.invalidCl),ret=false) 
             :el.addClass(_.invalidCl) 
          }) 
         return ret 
        }, 
        isEmpty:function(el){ 
         var tmp 
         return (tmp=el.find(_.targets).val())==''||tmp==el.data('defVal') 
        }, 
        validateFu:function(){       
         _.labels.each(function(){ 
          var th=$(this)        
          _.isEmpty(th) 
           ?_.showEmptyFu(th) 
           :_.hideEmptyFu(th) 
          _.isValid(th) 
           ?_.showErrorFu(th) 
           :_.hideErrorFu(th) 
         }) 
        }, 
        submitFu:function(){ 
         _.validateFu() 
         if(!_.form.has('.'+_.invalidCl).length) 
          $.ajax({ 
           type: "POST", 
           url:_.mailHandlerURL, 
           data:{ 
            name:$('.name input',_.form).val()||'nope', 
            email:$('.email input',_.form).val()||'nope', 
            phone:$('.phone input',_.form).val()||'nope', 
            fax:$('.fax input',_.form).val()||'nope', 
            state:$('.state input',_.form).val()||'nope', 
            message:$('.message textarea',_.form).val()||'nope', 
            owner_email:_.ownerEmail, 
            stripHTML:_.stripHTML 
           }, 
           success: function(){ 
            _.showFu() 
           } 
          })   
        }, 
        showFu:function(){ 
         _.success.slideDown(function(){ 
          setTimeout(function(){ 
           _.success.slideUp() 
           _.form.trigger('reset') 
          },_.successShow) 
         }) 
        }, 
        controlsFu:function(){ 
         $(_.controls,_.form).each(function(){ 
          var th=$(this) 
          th 
           .bind('click',function(){ 
            _.form.trigger(th.data('type')) 
            return false 
           }) 
         }) 
        }, 
        showErrorFu:function(label){ 
         label.find('.'+_.errorCl).slideDown() 
        }, 
        hideErrorFu:function(label){ 
         label.find('.'+_.errorCl).slideUp() 
        }, 
        showEmptyFu:function(label){ 
         label.find('.'+_.emptyCl).slideDown() 
         _.hideErrorFu(label) 
        }, 
        hideEmptyFu:function(label){ 
         label.find('.'+_.emptyCl).slideUp() 
        }, 
        init:function(){ 
         _.form=this 
         _.labels=$('label',_.form) 

         _.preFu() 

         _.controlsFu() 

         _.form 
          .bind('submit',function(){ 
           if(_.validate) 
            _.submitFu() 
           else 
            _.form[0].submit() 
           return false 
          }) 
          .bind('reset',function(){ 
           _.labels.removeClass(_.invalidCl)         
           _.labels.each(function(){ 
            var th=$(this) 
            _.hideErrorFu(th) 
            _.hideEmptyFu(th) 
           }) 
          }) 
         _.form.trigger('reset') 
        } 
       } 
      if(!data) 
       (typeof opt=='object'?$.extend(_,opt):_).init.call(th), 
       th.data({cScroll:_}), 
       data=_ 
      else 
       _=typeof opt=='object'?$.extend(data,opt):data 
     }) 
     return this 
    } 
}) 




})(jQuery) 
$(document).ready(function(){ 
$('#contact-form').forms({ 
    ownerEmail:'[email protected]' 
}) 
}); 
+1

当您浏览到直接/mail/mailhandler.php会发生什么? –

+0

嗨@IC。一旦我点击发送界面,只是提示我“该消息已发送”。但我没有收到任何电子邮件。这适用于我上面尝试的所有方法。 – Niccolo

+0

对不起@lc。我将在上面编辑我的消息以显示mailhandler.php内容。谢谢! – Niccolo

回答

1

这行$owner_email = $_POST["[email protected]"]; /*/originally owner_email/*/是fu南阳。我很确定POST变量不存在。

尝试$owner_email = $_POST["owner_email"];

或者您是否真的意味着将$owner_email的值静态/永久地更改为“[email protected]”?如果是这样,你想把它设置为字符串,$owner_email = "[email protected]";,而不是名为“[email protected]”的POST变量...

+0

非常感谢@lc。!解决方案是$ owner_email = $ _POST [“owner_email”];电子邮件正在发送!非常感谢! :) – Niccolo

0

吉马说:你最这样做是为了得到它的工作:

忘记告诉别人面前说,不要在代码中任何改变。

1)将MailHandler.php文件夹邮件插入到您的主题/名称主题文件夹中的MailHandler.ashx中&。

2)将forms.js插入到js文件夹内的主题// name-theme文件夹中。

之后做到以下几点:

在HTML表单页面1)你必须写这样的:在您的forms.js <form id="newsletter-form" action="<?php echo get_template_directory_uri(); ?>/mail/MailHandler.php" >

2)你必须写这在mailHandlerURL行16:

mailHandlerURL:'http://your-site.com/your-blog/wp-content/themes/theme-name/mail/MailHandler.php', 

注: “HTTP地址的Abobe是加www”

3)不要忘记从你的header.php打电话给你这样的脚本:

<script src="<?php echo get_template_directory_uri(); ?>/js/forms.js"></script> 

4)享受成果......

相关问题