如何让MailHandler.php在Wordpress中运行?

时间:2012-09-14 03:30:50

标签: php javascript forms wordpress email

我正在尝试使用 MailHandler.php 来使用Wordpress。我已经尝试了十几个解决方案,但没有解决方案。以下是我尝试过的“ forms.js ”文件的解决方法:

1。)将“ bin / MailHandler.php ”更改为“mail / mailhandler.php”

  1. )以下是​​我更改过的一些原始代码:
  2. mailHandlerURL:'.. / mail / mailhandler.php'已更改为

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

    然后还试过:

    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["me@mysite.com"]; /*/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";
    }
    

    &GT;

    以下是 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:'me@mysite.com',
                        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:'me@mysite.com'
    })
    });
    

2 个答案:

答案 0 :(得分:1)

这一行$owner_email = $_POST["me@mysite.com"]; /*/originally owner_email/*/很有趣。我很确定POST变量不存在。

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

或者你的意思是静态/永久地将$owner_email的值更改为“me@mysite.com”?如果是这样,你想将它设置为字符串$owner_email = "me@mysite.com";,而不是名为“me@mysite.com”的POST变量......

答案 1 :(得分:0)

Gima说:你最常做的就是让它发挥作用:

忘掉以前有人说的话,不要在代码中改变任何内容。

1)使用MailHandler.php&amp ;;插入文件夹邮件。您的themes / name-theme文件夹中的MailHandler.ashx。

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

之后执行以下操作:

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

2)在您的forms.js中,您必须在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)享受结果......