マルチパート形式のメール本文のContent-Typeを取得したいと思い、下記のメールが届いたときにPHPスクリプトを自動起動させて、Content-Typeを取得したのですが、思うような結果が得られませんでした。
マルチパート形式のメールだと、添付ファイルが増える度にContent-Typeが追加されているようで、
確実に本文のContent-Typeを取得する方法を探しています。
下記PHPスクリプトでは、⓵のContent-Type、multipart/mixedを取得してしまいます。
⓶のContent-Type、text/plainを取得するにはどのようにしたらいいですか?
どなたか、力をお貸しください。
よろしくお願いします。
Return-Path: <aaaa.namae@server_a.com> X-Original-To: bbbb@server_b.com Delivered-To: bbbb@server_b.com Received: from yahoouser (unknown [123.123.123.20] by server_b.com (Postfix) with ESMTP id C016655C20 for <bbbb@server_b.com>; Mon, 10 Apr 2017 18:01:25 +0900 (JST) Received: from yahoouser (localhost [127.0.0.1]) by yahoouser (Proxmox) with ESMTP id 094F110FC521 for <bbbb@server_b.com>; Mon, 10 Apr 2017 18:01:36 +0900 (JST) Received: from mg2.mail.ctc.jp (mg2.mail.ctc.jp [111.222.111.20]) by yahoouser (Proxmox) with SMTP id 1F7F010FC504 for <bbbb@server_b.com>; Mon, 10 Apr 2017 18:01:32 +0900 (JST) X-MailGates: (flag:3,DYNAMIC,RELAY,NOHOST:PASS)(compute_score:DELIVER,40 ,3) Received: from 172.162.152.142 by mg1.mail.ctc.jp with Mail2000 ESMTP Server V6.00(4475:0:AUTH_LOGIN) (envelope-from <aaaa.namae@server_a.com>); Mon, 10 Apr 2017 18:01:09 +0900 (JST) Received: from 132.122.112.12 by mail-cm04.bk.mail.cl.dc.ctc.ad.jp with Mail2000 ESMTP Server V6.00(28611:1:AUTH_LOGIN) (envelope-from <aaaa.namae@server_a.com>); Mon, 10 Apr 2017 18:01:08 +0900 (JST) Subject: =?UTF-8?B?44K144Oz44OA44O844OQ44O844OJ44Oh44O844Op44CA5pel5pys6Kqe?= =?UTF-8?B?44CA5re75LuY44GC44KK44CB44Gq44GX44CAMjAxNzA0MTDjgIAxNzU5?= From: =?UTF-8?B?5Lit5aSu6Zu75rCX5bel5LqL44CA57Gz5bGxVA==?= <aaaa.namae@server_a.com> To: user_c@server_b.com, =?UTF-8?B?5o+W5paQ5bed55S65b255aC044O75pS+6YCB6YCa5L+h44K744Oz44K/44CA5aCA?= =?UTF-8?B?5LqV5qeY?= <user_c@town.home.com>, bbbbdip <bbbb@server_b.com>, bbbb <bbbb@town.home.com>, =?UTF-8?B?6YWS5ZCRIOanmOOAgA==?= =?UTF-8?B?44K344K544OG44Og6ZaL55m6?= <yahoouser@yahoo.co.jp> References: <1ca51062-79ed-18b4-d61b-21495113eabc@server_a.com> <faa489ed-9c97-6f69-ec37-0817493c341d@server_a.com> Message-ID: <af2ad3f9-aa94-837a-8aee-dc7e91795e17@server_a.com> Date: Mon, 10 Apr 2017 18:01:01 +0900 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.0 MIME-Version: 1.0 In-Reply-To: <67f5d87d-231a-e4db-4cb9-be696fd52711@server_a.com> Content-Type: multipart/mixed; --⓵ boundary="------------B087A3FEB0C6B70E45DE8C18" Content-Language: en-US X-Proxmox-CTCH-Refid: str=0001.0A150205.58EB49F0.0036:SCFSTAT25972443,ss=1,re=-4.000,recu=0.000,reip=0.000,vtr=str,vl=0,cl=1,cld=1,fgs=0 X-SPAM-LEVEL: This is a multi-part message in MIME format. --------------B087A3FEB0C6B70E45DE8C18 Content-Type: text/plain; charset=utf-8; format=flowed --⓶ Content-Transfer-Encoding: 8bit 本文のContent-Type、text/plainが取得出来ない。 署名欄 --------------B087A3FEB0C6B70E45DE8C18 Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation; --⓷ name="ppt-sample.pptx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ppt-sample.pptx" UEsDBBQABgAIAAAAIQAgR+mufwIAAGgXAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIo oAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (省略) AB0YAAAq4AYAAAA= --------------B087A3FEB0C6B70E45DE8C18--
<?php $stdin = fopen("php://stdin", "r"); $header = ""; $_header_write = true; $raw_mail = ""; $ketasuu = array(); do { $line = fread($stdin, 4096); if (strlen($line) == 0) break; if ( $n = strpos($line, "\n\n")){ //空行を見つけた $header .= substr($line, 0, $n); $_header_write = false; } if ($_header_write) $header .= $line; $raw_mail .= $line ;//. PHP_EOL; } while(true); fclose($stdin); require_once('/usr/local/bin/ReceiptMailDecoder.class.php'); $decoder =& new ReceiptMailDecoder($raw_mail); //X-Original-Toを取得する $deliveredto = $decoder->getDeliveredTo( 'x-original-to' ); //Content-Typeを取得する $contenttype = $decoder->getDeliveredTo( 'content-type' ); $contenttype = strstr($contenttype,';',TRUE); //本文を取得する //ドメインによって処理を分岐する if ($contenttype == 'text/plan'){ //text/planなメール本文を取得する $body = mb_convert_encoding($decoder->body['text'],'UTF-8','auto'); $body .= "\n"; }else{ //text/htmlなメール本文を取得する $body = mb_convert_encoding($decoder->body['html'],'UTF-8','auto'); $body = mb_convert_encoding($body,'UTF-8',mb_detect_encoding($body, 'ASCII,JIS,UTF-8,CP51932,SJIS-win,iso-2022-jp','auto')); $body .= "\n"; }; ?>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/11 02:05
2017/04/11 16:25