2015-06-05 59 views
1

我想首先提到一個我已經在這裏找到的非常類似的問題,但是我在那裏提出了答案,但仍然沒有工作,所以我在這裏發佈我的問題。郵件不在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 = '[email protected]'; 

     $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'); 
?> 

以上是我的contact-form插件代碼。 我用短代碼在我的主題的頭版像以下內容: - >

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

它的工作完美地與接觸形式越來越出現在我的主題的頭版所應當,甚至形式得到提交,但郵件不發送它觸發錯誤,即在gci_deliver_mail()函數的else部分回顯錯誤。

下面是截圖,其中的錯誤是發生 - > http://tinyurl.com/omcp7zz 預先感謝

我添加了其他部分的下面一行: - >

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

現在輸出:
字符串(23)「[email protected]」字符串(39)「從iceindia提交的查詢消息」字符串(4)「test」字符串(27)「From:par」發生意外錯誤

+0

拜託你'的var_dump( $ to,$ subject,$ message,$ headers)'在你的else子句中編輯輸出到你的問題中? – Siguza

+0

在當地工作得很好。 –

+0

@Siguza我照你所說的去做了。編輯問題 –

回答

0

改變這一行

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

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

也許你已經在$名稱

+0

我試過了。還是行不通。 –

0

當你有提到你output.I覺得你的頭有一個錯誤的任何轉義數據 只是刪除或評論標題。然後它將郵件發送到您的郵件。

// $ headers =「From:$ name」。爲 「\ r \ n」 個; 謝謝。

0

首先檢查您的郵件服務器是否正常工作。 您可以安裝Easy SMTP郵件插件Download From Here。 嘗試發送測試郵件。

0

只使用在wordpress中創建博客時註冊的博客管理員郵件標識。 例如: *

**如果你的博客名稱是example.com然後使用你的郵件ID作爲[email protected]*

**