邮件不是在wordpress中发送的

时间:2015-06-05 06:48:15

标签: php wordpress

我想首先提一下我在这里找到的一个非常相似的问题,但我在那里提出了答案,但仍然没有用,所以我在这里发布了我的问题。

<?php
/**
 * Plugin Name: GCI Contact Form
 * Plugin URI: http://www.example.com
 * Description: A Simple Plugin To Implement Contact Form into your WordPress Site
 * Version: 0.0.1
 * Author: Parnasree Chowdhury
 * Author URI: http://www.example.com
 * License: GPL2
 */

 function html_form_code() {
 echo '<form method="post" action="' . esc_url( $_SERVER['REQUEST_URI'] ) . '">';
                            echo '<fieldset>';
                                    echo '<input type="text" name="cf-name" value="' .esc_attr( isset( $_POST["cf-name"] ) ? $_POST["cf-name"] : '' ) . '" placeholder="Name*" class="form-control form-dark" required/>';
                                    echo '<input type="email" name="cf-email" value="' . esc_attr( isset( $_POST["cf-email"] ) ?  $_POST["cf-email"] : '' ) . '" placeholder="Email*" class="form-control form-dark" required/>';
                                    echo '<textarea rows="6" name="cf-message" placeholder="Message*" class="form-control form-dark" required>' . esc_attr( isset( $_POST["cf-message"] ) ? $_POST["cf-message"]  : '' ) . '</textarea>';
                                    echo '<input name="cf-submitted" class="btn btn-border border-white" type="submit" value="Submit" />';
                                    //echo '<input type="hidden" name="action" value="gci_deliver_mail" />';
                                    echo '<div class="loading"></div>';
                            echo '</fieldset>';
                            echo '</form>';
 }

 function gci_deliver_mail() {

    // if the submit button is clicked, send the email
    if ( isset( $_POST['cf-submitted'] ) ) {

        // sanitize form values
        $name    = sanitize_text_field($_POST["cf-name"]);
        $email   = sanitize_email($_POST["cf-email"]) ;
        $subject = "Enquiry message submitted from iceindia";
        $message = esc_textarea($_POST["cf-message"]);

        // get the blog administrator's email address
        $to = 'mymailid@gmail.com';

        $headers = "From: $name <$email>" . "\r\n";

        // If email has been process for sending, display a success message
        if ( wp_mail( $to, $subject, $message, $headers ) ) {
            echo '<div>';
            echo '<p>Thanks for contacting me, expect a response soon.</p>';
            echo '</div>';
        } else {
            echo 'An unexpected error occurred';

        }
    }
}
function cf_shortcode() {
    ob_start();
    gci_deliver_mail();
    html_form_code();

    return ob_get_clean();
}
add_shortcode( 'gci_contact_form', 'cf_shortcode' );
?>

以上是我的联系表格插件代码。 我在主题的首页使用了短代码,如下所示: - &gt;

  <div class="contact-form"> 
      <?php echo do_shortcode('[gci_contact_form]');?>
  </div>

它工作得很完美,联系表格会出现在我的主题的首页,因为它应该是,甚至表单正在提交,但邮件没有被发送它触发错误,即回应gci_deliver_mail的else部分中的错误()函数。

以下是发生错误的屏幕截图 - &gt; http://tinyurl.com/omcp7zz 提前致谢

我在else部分添加了以下行: - &gt;

var_dump($to, $subject, $message, $headers);

现在输出:
string(23)“mymaildid@gmail.com”string(39)“从iceindia提交的查询消息”string(4)“test”string(27)“From:par”发生意外错误

4 个答案:

答案 0 :(得分:0)

更改此行

$headers = "From: $name <$email>" . "\r\n";

$headers = "From: " . $name . " <" . $email. ">" . "\r\n";

也许你在$ name

中有任何未转义的数据

答案 1 :(得分:0)

正如你提到你的输出。我认为你的标题有错误 只需删除或评论标题。然后它就会将邮件发送到您的邮件。

// $ headers =&#34;来自:$ name&#34; 。 &#34; \ r \ n&#34 ;; 谢谢。

答案 2 :(得分:0)

首先检查您的邮件服务器是否正常工作。 您可以安装Easy SMTP邮件插件Download From Here。 尝试发送测试邮件。

答案 3 :(得分:0)

仅使用在wordpress中创建博客时注册的博客管理员邮件ID。 例:  *

  

**如果您的博客名称是example.com,请使用您的邮件ID为admin@example.com *

**