2017-03-26 38 views
0

我想爲我的網站上的每個帖子/帖子製作一個表單。它從每個帖子後面發現郵件(每篇文章都有獨特的電子郵件),但我不會發送它。我的表單卡在某處。

<?php 

global $wpdb; 
global $post; 
global $current_user; 
global $wp_query; 

$author_ID = get_query_var('post_author'); 
$to=the_author_meta('user_email',$author_ID); 

//searching and showing up the email on the screen. working fine until here. 

if(isset($_POST['submit'])){ 

$from = get_option('admin_email'); //getting admin email 

$first_name = $_POST['first_name']; 
$last_name = $_POST['last_name']; 

$subject = "Form submission"; 

$message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message']; 

$headers = "From:" . $from; 

// mail($to,$subject,$message,$headers); 

if (mail($to,$subject,$message,$headers)) { 
     echo '<p>Your message has been sent!</p>'; 
    } else { 
     echo '<p>Something went wrong, go back and try again!</p>'; 
    } 

//email is not send. "something went wrong" popping up. 

} 

?> 

每個帖子/帖子後面都有一個電子郵件,調用它,它顯示得很好。 但電子郵件沒有發送到地址。

<!DOCTYPE html> 
<head> 
<title>Form submission</title> 
</head> 
<body> 

<form action="" method="post"> 
First Name: <input type="text" name="first_name"><br> 
Last Name: <input type="text" name="last_name"><br> 
Email: <input type="text" name="email"><br> 
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 
+0

你知道你發送同樣的郵件2次,第二個是從if條件發送,並且當你使用wordpress時,你可以在'mail();' –

+0

@ArshSingh的地方使用'wp_mail();'這就是我的最後一個問題。它不是首先發送。 –

回答

0

首先,你需要調用mail()兩次。它將被執行,並且在if子句中它將被第二次執行。

第二點,你有沒有調試過,你$to=the_author_meta('user_email',$author_ID);返回爲$to

另一件事,我個人使用PHP庫發送郵件,因爲mail()函數在任何情況下都很難做到,一個錯誤和一切都搞砸了。我會推薦你​​PHPMailer。

編輯:可能的,這可以去錯的普通郵件()函數的東西:

  • 錯誤的字符集
  • 編碼(你有沒有編碼的郵件)
  • 郵件實際上是不活躍在你的系統上(例如在PHP中啓用它,對於Windows你必須配置一個替代品等)
+0

我看到,我稱它兩次,我修復它。它會在帖子後面返回郵件。已經檢查過了。 –

+0

如果我把它手動$to='[email protected]';它工作得很好。我已經迴應「$ to」,它似乎採取正確的電子郵件。所以我的問題是爲什麼不發送它。 –

+0

對於調試,我建議使用'var_dump()'而不是'echo'。還要看看生成的源代碼,也許電子郵件周圍有一些奇怪的標籤,瀏覽器不會顯示,但郵件將被拒絕。 –