2011-10-18 161 views
0

當談到在php中處理電子郵件時,我很新。如何將電子郵件附件另存爲電子郵件?

基本上我需要閱讀一個pop3郵箱並將郵件保存到數據庫和附件到一個文件夾。然後將相同的郵件(輕微更改)郵寄回另一個電子郵件收件人。

我以爲我得到了這一切工作,然後我意識到,當附件是另一封郵件,我只接收身體作爲文本(後base64_decode)。

是否可以將附加電子郵件保存到文件中,然後將其作爲附件發送到其他郵件中?

任何幫助將不勝感激。

下面是一些代碼,把它放到觀點:

// This is the IMAP connection: imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass,OP_SILENT); 
$mailConnection = $this->Maildata->mail_login($host,$port,$user,$pass,$folder,$ssl); 

// This retrieves the list of mails in the current folder 
$messageList = $this->Maildata->mail_list($mailConnection,$message); 
foreach ($messageList as $messageId => $messageListData) { 

    // This reads the mail object into an array 
    $mailMessage = $this->Maildata->mail_mime_to_array($mailConnection,$messageId,true); 

    // This loops through each mail 
    foreach ($mailMessage as $tmpId => $tmpData) { 
     // Excluded save to database since it is unrelated 

     // This checks if item is an attachment and saves it. 
     if (isset($tmpData['is_attachment']) && $tmpData['is_attachment'] === true) { 
      $tmpName = date('Y-m-d H:i:s', strtotime('now')); 
      $this->Maildata->mail_attachment_save($tmpData['data'], $tmpName .$tmpData['name']); 
     } 
    } 
} 

附:這一切工作,但imap_fetchbody($mailConnection , $messageId, $prefix);似乎並沒有發送我需要的所有數據。

+0

請向我們顯示您的代碼。說它是「另一個消息」,你使用什麼MIME解析器是不正確的? – DaveRandom

+0

這可能有所幫助:http://php.net/manual/en/book.imap.php儘管它說'IMAP',我相信它也可以用於POP。 –

+0

@DaveRandom我正在使用IMAP連接到郵箱。我會添加一些代碼,但我不相信這會有所幫助。 – Nightwolf

回答

0

是的。

您可以將附加郵件保存爲文件,但不會採用Microsoft Office Outlook將理解的格式。有趣的是,如果您將該文件另存爲.eml,則Windows Live Mail將完美處理該消息。

沒有webmail服務處理附加的郵件項目,因爲outlook和windlows live郵件服務器和gmail完全忽略它們。