2015-09-06 134 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); 
}