2012-09-14 28 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)享受成果......

相關問題