2

我正在尝试使MailHandler.php与 Wordpress 一起使用。我尝试了十几种解决方案,但都没有奏效。以下是我尝试过的“ forms.js ”文件的解决方法:

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

  1. ) 以下是一些我也更改过的原始代码:

mailHandlerURL:'../mail/mailhandler.php'改为

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

然后还尝试了:

mailHandlerURL:' /mail/ <?php echo get_template_directory_uri(); ?>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";
}

?>

这是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'
})
});
4

2 回答 2

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 变量...

于 2012-09-14T04:21:34.847 回答
0

Gima 说:你最常这样做是为了让它发挥作用:

忘记之前有人说过的话,不要更改代码中的任何内容。

1) 在您的主题/名称主题文件夹中插入带有 MailHandler.php 和 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)享受结果......

于 2013-06-14T11:19:50.587 回答