2015-09-06 120 views
3

我試圖用php回覆郵件。我使用php imap從郵件服務器獲取電子郵件,並獲得message-id ..我試圖回覆電子郵件,但電子郵件仍顯示爲新消息,而不是帶有線索消息的回覆?PHP,回覆電子郵件不工作

$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to email: ' . imap_last_error()); 
$emails = imap_search($inbox,'ALL'); 

if($emails) { 

rsort($emails); 

foreach($emails as $email_number) { 
$overview = imap_fetch_overview($inbox,$email_number,0); 
$message_id = $overview[0]->message_id; 
$references[] = $overview[0]->message_id; 

} 

$references = implode(" ",$references); 

$headers = "From: <[email protected]> \r\n"; 
$headers .= "In-Reply-To: $message_id\r\n"; 
$headers .= "References: $references\r\n"; 
$headers .= "Content-Type: text/html;\r\n"; 
$subject = "testing"; 
$message = "test message2"; 
mail("[email protected]", $subject, $message, $headers); 

我用頭In-Reply-Tohttp://www.jwz.org/doc/threading.htmlReferences。主題也是一樣的。我如何解決?

+0

它不清楚兄弟:) – aimme

回答

0

我看着你的代碼,發現幾件事情,可能是問題的原因。不確定是否造成問題。

  1. if($emails)將永遠是真實的它是否爲空或不作爲數組並已成功設置。執行print_r($emails)來檢查imap_search()是否返回空數組。

  2. 在行$message_id = $overview[0]->message_id;消息ID將永遠是最後$overview[0]->message_id,無論是它的一個foreach裏面,因爲它只是一個變量,將被派往新的每一輪循環,最後只有最後將被保留。

  3. 不確定,但我認爲在行$references[] = $overview[0]->message_id;我認爲這是一個錯字,它實際上應該是$references[] = $overview[0]->references;。關於$references[]還有一件事是,就像現在一樣,在foreach結尾,它將攜帶所有電子郵件的所有消息ID。

  4. 不明白爲什麼,但我看你有沒有從收件箱中的所有電子郵件中獲取概述,但只有一直被認爲是最後用來回復一個郵件。

不知道肯定,但試圖幫助:)代碼會是這樣的,沒有經過測試。但希望它有效。

$inbox = imap_open($hostname,$username,$password) or die('Cannot connect to email: ' . imap_last_error()); 
$emails = imap_search($inbox,'ALL'); 

if(count($emails)>0) 
{ 

     rsort($emails); 

     foreach($emails as $email_number) { 
      $overview = imap_fetch_overview($inbox,$email_number,0); 
      foreach($overview as $result){ 
       $message_id = $result->message_id; 
       $references = $result->references; 
      } 
      //REMEMBER THIS WILL REPLY TO ALL YOUR INBOX EMAILS 
      //NEED TO EDIT BEFORE USING 
      reply($message_id,$references); 
     } 
} 
function reply($message_id,$references){ 
     $headers = "From: <[email protected]> \r\n"; 
     $headers .= "In-Reply-To: ".$message_id."\r\n"; 
     $headers .= "References: ".$references."\r\n"; 
     $headers .= "Content-Type: text/html;\r\n"; 
     $subject = "testing"; 
     $message = "test message2"; 
     mail("[email protected]", $subject, $message, $headers); 
}