引言:因为业务需求,需要获取订单的往来邮件,其中涉及到下载邮件功能。由于腾讯企业邮箱API接口不支持下载邮件功能,只能自己写。
获取邮件内容,保存到数据库
步骤略:网上有很多现成的,利用imap来获取
将获取到的邮件内容保存为eml格式
如下为从数据库中取的的数据:
代码实现:
$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);test.eml内容
将test.eml用foxmail打开
以下问题待修复:
邮件附件没有加进去