引言:由於業務需求,須要獲取訂單的往來郵件,其中涉及到下載郵件功能。因爲騰訊企業郵箱API接口不支持下載郵件功能,只能本身寫。php
獲取郵件內容,保存到數據庫
步驟略:網上有不少現成的,利用imap來獲取html
將獲取到的郵件內容保存爲eml格式
以下爲從數據庫中取的的數據:數據庫
{ "id": "135", "sender": "sender@qq.com", "sender_name": "我是發件人", "to_name": "收件人1,收件人2,ymy", "to_list": "wusong@qq.com,liangso@qq.com,ymy@qq.com", "cc_list": "抄送人", "cc_name": "cc1@qq.com", "title": "我是主題", "content": "<p>測試一下!!!{43575}<br></p>", "email_time": "2018-09-15 09:56:05", "create_time": "2018-09-15 09:56:05", "update_time": "2018-09-15 09:56:05" }
代碼實現:json
$mailDetail = json_decode($json, true); $str = ""; // 郵件日期(後面的+0800是北京時間的時區) $str .= "Date: {$mailDetail['email_time']} +0800".PHP_EOL; // 處理收件人 $str .= "To: "; $toName = explode(',', $mailDetail['to_name']); $toEmail = explode(',', $mailDetail['to_list']); foreach ($toName as $k => $name){ $str .= "$name <$toEmail[$k]>"; if($k+1 != count($toName)){ $str .= ", "; }else{ $str .= PHP_EOL; } } // 處理抄送人 $ccName = explode(',', $mailDetail['cc_name']); $ccEmail = explode(',', $mailDetail['cc_list']); if(!empty($ccName)){ $str .= "Cc: "; foreach ($ccName as $k => $name){ $str .= "$name <$ccEmail[$k]>"; if($k+1 != count($ccName)){ $str .= ", "; }else{ $str .= PHP_EOL; } } } // 發件人 $str .= "From: {$mailDetail['sender_name']} <{$mailDetail['sender']}>".PHP_EOL; // 郵件主題 $str .= "Subject: {$mailDetail['title']}". PHP_EOL; // 郵件輸出格式 $str .= "MIME-Version: 1.0". PHP_EOL; $str .= "Content-Type: text/html; charset=UTF-8". PHP_EOL; $str .= "Content-Transfer-Encoding: 8bit". PHP_EOL; // 郵件內容 $str .= PHP_EOL . "{$mailDetail['content']}".PHP_EOL; // 保存 file_put_contents('test.eml', $str);