WordPress联系人表单消息没有发送,尽管它说使用此php代码已成功发送消息

时间:2020-05-30 作者:social

这是一个有效的联系表单代码,当我提交消息时,它会说谢谢,消息发送成功,但很遗憾,我没有收到任何消息。我在本地主机上的wordpress上使用它。

我应该改变什么才能得到这些信息??请帮忙

<?php
if(isset($_POST[\'submitted\'])) {
    if(trim($_POST[\'contactName\']) === \'\') {
        $nameError = \'Please enter your name.\';
        $hasError = true;
    } else {
        $name = trim($_POST[\'contactName\']);
    }


    if(trim($_POST[\'email\']) === \'\')  {
        $emailError = \'Please enter your email address.\';
        $hasError = true;
    } else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\\.[a-z]{2,4}$/i", trim($_POST[\'email\']))) {
        $emailError = \'You entered an invalid email address.\';
        $hasError = true;
    } else {
        $email = trim($_POST[\'email\']);
    }


    if(trim($_POST[\'subject\']) === \'\') {
        $subjectError = \'Please enter a subject.\';
        $hasError = true;
    } else {
        $subject = trim($_POST[\'subject\']);
    }


    if(trim($_POST[\'comments\']) === \'\') {
        $commentError = \'Please enter a message.\';
        $hasError = true;
    } else {
        if(function_exists(\'stripslashes\')) {
            $comments = stripslashes(trim($_POST[\'comments\']));
        } else {
            $comments = trim($_POST[\'comments\']);
        }
    }

    if(!isset($hasError)) {
        $emailTo = get_option(\'tz_email\');
        if (!isset($emailTo) || ($emailTo == \'\') ){
            $emailTo = get_option(\'admin_email\');
        }
        $subject = \'[PHP Snippets] From \'.$name;
        $body = "Name: $name \\n\\nEmail: $email \\n\\nComments: $comments";
        $headers = \'From: \'.$name.\' <\'.$emailTo.\'>\' . "\\r\\n" . \'Reply-To: \' . $email;

        wp_mail($emailTo, $subject, $body, $headers);
        $emailSent = true;
    }

} ?>




        <hr class="no-margin" />

        <div class="blog-container section-content">
            <div class="container">
                <div class="row">
            <div class="col-md-8">
                <div class="box-layer custom-padding">





    <div id="container">
        <div id="content">



<div class="align-center">

                    <div class="entry-content">
                        <?php if(isset($emailSent) && $emailSent == true) { ?>
                            <div class="thanks">
                                <p>Thanks, your email was sent successfully.</p>
                            </div>
                        <?php } else { ?>
                            <?php the_content(); ?>
                            <?php if(isset($hasError) || isset($captchaError)) { ?>
                                <p class="error">Sorry, an error occured.<p>
                            <?php } ?>

                        <form action="<?php the_permalink(); ?>" id="contactForm" method="post" class="general-form">
                            <div class="contactform">
                            <p>

                                <input type="text" name="contactName" class="form-control" id="contactName" placeholder="Your Name.." value="<?php if(isset($_POST[\'contactName\'])) echo $_POST[\'contactName\'];?>" class="required requiredField" />
                                <?php if($nameError != \'\') { ?>
                                    <span class="error"><?=$nameError;?></span>
                                <?php } ?>
                            </p>



                            <p>
                                <input type="text" name="email" id="email" class="form-control" placeholder="Your Email.." value="<?php if(isset($_POST[\'email\']))  echo $_POST[\'email\'];?>" class="required requiredField email" />
                                <?php if($emailError != \'\') { ?>
                                    <span class="error"><?=$emailError;?></span>
                                <?php } ?>
                            </p>


                                <p>
                                <input type="text" name="subject" id="subject" class="form-control" placeholder="Your Subject.." value="<?php if(isset($_POST[\'subject\']))  echo $_POST[\'subject\'];?>" class="required requiredField subject" />
                                <?php if($subjectError != \'\') { ?>
                                    <span class="error"><?=$subjectError;?></span>
                                <?php } ?>
                            </p>



                            <p>
                                <textarea name="comments" id="commentsText" class="form-control" placeholder="Your Message" rows="4" cols="100" class="required requiredField"><?php if(isset($_POST[\'comments\'])) { if(function_exists(\'stripslashes\')) { echo stripslashes($_POST[\'comments\']); } else { echo $_POST[\'comments\']; } } ?></textarea>
                                <?php if($commentError != \'\') { ?>
                                    <span class="error"><?=$commentError;?></span>
                                <?php } ?>
                            </p>

                            <p>
                                <input type="submit" class="btn btn-primary no-border" value="Send Message"></input>
                            </p>
                        </div>
                        <input type="hidden" name="submitted" id="submitted" value="true" />
                    </form>
                <?php } ?>
                </div>
            </div>



                    </div>
                </div></div>





                </div>





1 个回复
SO网友:Rick Hellewell

mail()函数(由wp\\u mail()函数使用,假设没有其他邮件插件添加到您的站点)将邮件发送到域的邮件服务器。它只知道邮件服务器是否收到了邮件。它不知道邮件是否真的是由您的邮件服务器发送的。

可能导致问题的原因之一是,通过mail()函数发送的“发件人”电子邮件必须是您域中的电子邮件地址。它不必存在,只需来自您的域。

例如,如果您的域是www.example。com,则“发件人”电子邮件需要为[email protected]\'。不可能是\'[email protected]\'。这将被您的邮件服务器阻止。

因此,重要的是,您的邮件的发件人必须在您的域中。如果不是,您的电子邮件服务器(或收件人的邮件服务器)将感觉到该邮件可能是垃圾邮件,并将拒绝/阻止/不发送您的邮件。

您可以将“答复”标题值设置为任何内容,即使是不在您域中的电子邮件,但发件人必须是与您域匹配的电子邮件地址。

请注意,wp\\u mail()函数从“默认Wordpress电子邮件”帐户发送邮件。您必须确保此设置正确。此设置位于设置、常规、管理帐户中。该值必须设置为[email protected],替换您的域名。