MBOX (.mbox)
MBOX (.mbox)
- Importはすべての一般的なMBOXファイル形式の派生型をサポートする.
予備知識
-
- MIMEタイプ:application/mbox
- Unixメールボックス形式.
- 電子メールメッセージコレクションを保管する.
- Unix mail,Thunderbird等の多くの電子メールクライアントのネイティブアーカイブ形式.
- ASCII形式
- 符号化されたバイナリデータを伴うテキスト形式.
- メッセージを区切り行で連結されたEML形式で保存する.
- RFC 4155をサポートする.
Import
- Import["file.mbox"]はMBOXファイルをインポートし,連想で与えられたメッセージの概要のリストを返す.
- Import["file.mbox"]は{msg1,msg2,…}という形式の式を返す.msgi は個々の電子メールメッセージの基本要素を与える連想である.
- Import["file.mbox",elem]はMBOXファイルから指定の要素をインポートする.
- Import["file.mbox",{elem,suba,subb,…}]は子要素をインポートする.
- Import["file.mbox",{{elem1,elem2,…}}]は複数の要素をインポートする.
- インポート形式はImport["file","MBOX"] またはImport["file",{"MBOX",elem,…}]で指定できる.
- 一般的な情報は,以下の関数ページを参照のこと.
-
Import ファイルからインポートする CloudImport クラウドオブジェクトからインポートする ImportString 文字列からファイルからインポートする ImportByteArray バイト配列からインポートする
要素
- 一般的なImport要素:
-
"Elements" ファイル中の有効な要素とオプションのリスト "Summary" ファイルの概要 "Rules" 使用可能なすべての要素の規則のリスト - メールボックス全体の要素:
-
"MessageSummaries" 各メッセージの基本要素を与える連想のリスト "MessageElements" 各メッセージの主要素を与える連想のリスト "FullMessageElements" 各メッセージの利用可能な全要素を与える連想のリスト "MessageCount" メールボックスにあるメッセージの数 - Importはデフォルトで"MessageSummaries"要素を使用する.
- 概要要素:
-
"From" 差出人の名前と電子メールアドレス "ToList" 受信者の名前とアドレスのリスト "CcList" カーボンコピー受信者の名前とアドレスのリスト "BccList" ブラインドカーボンコピー受信者の名前とアドレスのリスト "OriginatingDate" 電子メールヘッダからのクライアントの日付と時間 "Subject" 電子メールの件名 "BodyPreview" メッセージ本文の短いプレビューのリスト "HasAttachments" 各メッセージが添付ファイルを含んでいるかどうか "MessageID" 各メッセージのメッセージID - "MessageSummary"にはすべての概要要素が含まれる.
- その他のメッセージ要素:
-
"FromAddress" 差出人の生の電子メールアドレス "FromName" 差出人の氏名 "ToAddressList" 受信者のアドレスのリスト "ToNameList" 受信者の氏名のリスト "CcAddressList" カーボンコピー受信者のアドレスのリスト "CcNameList" カーボンコピー受信者の氏名のリスト "BccAddressList" ブラインドカーボンコピー受信者の名前のリスト "BccNameList" ブラインドカーボンコピー受信者の氏名のリスト "ReplyToList" 返信先の名前とアドレスのリスト "ReplyToAddressList" 返信先のアドレスのリスト "ReplyToNameList" 返信先の氏名のリスト "Body" 文字列で表されたメッセージ本文 "AttachmentList" 式で表された処理済み添付ファイルリスト - "MessageElements"には "BodyPreview"と"HasAttachments"を除くすべての概要とメッセージの要素が含まれる.
- 各電子メールのより詳細な情報は以下のカテゴリからインポートできる.
- メッセージ本文の要素:
-
"BodyPreview" メッセージ本文の短いプレビューのリスト "Body" 文字列で表されたメッセージ本文 "NewBodyContent" 本文の返信または転送ではない部分 "QuotedContent" 本文の引用された部分 - スレッド要素:
-
"ThreadCount" メールボックス内のスレッドの番号 "ThreadGraph" Graphとして表されるメールボックス内のスレッド "ThreadEmailCount" 各スレッドごとのメールの数 "ThreadTimeInterval" 各スレッドで最初のメールから最後のメールまでの間隔 "ThreadDuration" 各スレッドで最初のメールから最後のメールまでの期間 "ThreadMessageIDList" 各スレッド内の全てのメールのメッセージIDのリスト "ThreadFromList" 各スレッドの送信者のリスト "ReferenceMessageIDGraph" 「参照」メッセージへの接続のGraph - メッセージルーティング要素:
-
"Precedence" 宣言された電子メール優先度 "ReturnPath" メールに対して宣言された差戻し先 "ReturnReceiptRequested" 開封確認が要求されているかどうか "DeliveryChainHostnames" 電子メール配信チェーンのホスト名のリスト "DeliveryChainRecords" 電子メール配信チェーンのホスト名のリスト - 電子メールヘッダ要素:
-
"Plaintext" 文字列で表された完全な生の電子メール "HeaderString" 文字列で表された電子メールの全ヘッダ "HeaderRules" すべてのヘッダの規則のリスト "CharacterEncoding" 電子メールコンテンツの文字コード "ContentType" 電子メール本文のMIMEコンテントタイプ "MIMEVersion" MIME標準のバージョン "ReplyToMessageID" 各返信のもとのメッセージのすべてのIDのリスト "ReferenceMessageIDList" 「参照」メッセージ(通常はスレッド内のもの)のID - メッセージ発信元要素:
-
"OriginatingMailClient" 発信元の電子メールクライアントのタイプ "OriginatingIPAddress" 発信元のクライアントマシンのIPアドレス "OriginatingHostname" 発信元のクライアントマシンのホスト名 "OriginatingCountry" geoIPから推測される発信元の国 "OriginatingDate" 電子メールヘッダからのクライアントの日時 "OriginatingTimeZone" 電子メールヘッダに基づくクライアントの時刻帯 "ServerOriginatingDate" 発信元サーバの日時 "ServerOriginatingTimeZone" 発信元サーバの時刻帯 - 添付ファイル要素:
-
"HasAttachments" 各メッセージが添付ファイルを含んでいるかどうか "AttachmentNames" 添付ファイル名のリスト "AttachmentList" 式で著された処理済み添付ファイルのリスト "AttachmentSummaries" 基本的な添付ファイル要素を与える連想のリスト "AttachmentData" 添付ファイルの生の符号化データとメタデータを与える連想のリスト "AttachmentDecodedData" 添付ファイルの生の復号化データとメタデータを与える連想のリスト "AttachmentDetails" 添付ファイルの内容とメタデータを与える連想のリスト - 要素"AttachmentDetails"は各添付ファイルについて連想を与えるリストである.この連想の要素は通常以下のものである:
-
"Name" 添付ファイルに割り当てられた名前 "MIMEType" コンテンツのMIMEタイプ "Content" インポートされたコンテンツ "ContentDisposition" 添付ファイルのContent-Disposition "ModificationDate" 添付ファイルに記録された編集日 "ByteCount" 復号化されたコンテンツのバイト数 - 要素"AttachmentDecodedData"は各添付ファイルについて連想を与えるリストである.この連想の要素は通常以下のものである:
-
"Name" 添付ファイルに割り当てられた名前 "MIMEType" コンテンツのMIMEタイプ "DecodedContent" バイト配列で表された,復号化された生のコンテンツ "ContentDisposition" 添付ファイルのContent-Disposition "ModificationDate" 添付ファイルに記録された編集日 "ByteCount" 生の復号化コンテンツのバイト数 - 要素"AttachmentAssociations"は各添付ファイルについて連想を与えるリストである.この連想の要素は通常以下のものである:
-
"Name" 添付ファイルに関連付けられた名前 "MIMEType" コンテンツのMIMEタイプ "RawContent" 文字列で表された,生の符号化コンテンツ "ContentTransferEncoding" "RawContent"のContent-Transfer-Encoding "ContentDisposition" 添付ファイルのContent-Disposition "ModificationDate" 添付ファイルに記録された編集日 "ByteCount" 生の符号化コンテンツのバイト数 - "AttachmentSummaries"には各添付ファイルの復号化されたコンテンツの"Name","MIMEType","ByteCount"が含まれる.
- 要素 elem の部分データのインポートのための部分要素は,{elem,msgs}という形式の行と列を取ることができる.ここで msgs は,以下のいずれでもよい:
-
n n 番目の電子メール -n 最後から数えた順番 messageid 特定の電子メールの messageID {spec1,spec2,…} 電子メール指標またはメッセージIDのリスト - 部分要素は"FullMessageElements","MessageElements","MessageSummaries"に対しては{elem,msgs,keys}という形式で与えることもできる.ここでキーは,連想のどの要素でもよい.
- {elem,spec}という形式でスレッド要素 elemの一部を利用するための部分要素は,以下の形式の specを取る:
-
n 開始データに基づく n 番目のスレッド messageid 特定のメッセージIDを含むスレッド
オプション
- Importオプション:
-
"AttachmentRules" <||> 添付ファイルのインポート方法を制御する規則 - "AttachmentRules"に可能な設定は,以下のものを含む連想である:
-
fmtNone 形式 fmt の添付ファイルをNoneとしてインポートする fmtelem fmt の添付ファイルのインポート時に要素 elem をImportする fmtfun 純関数 fun を復号化されたバイト配列に適用する
形式指定 fun には,$ImportFormatsがサポートするすべての形式とMIMEタイプが使用できる.
例題
すべて開く すべて閉じる例 (3)
スコープ (6)
Import["ExampleData/conv.mbox", "MessageCount"]Import["ExampleData/in.mbox"]特定のメッセージについて,"MessageID"を使って詳細情報を抽出する:
Import["ExampleData/in.mbox", {"OriginatingMailClient", "<200703141655.l2EGtfL3002494@docex.wolfram.com>"}]メールボックス内の位置を使って指定したメッセージをインポートする:
Import["ExampleData/in.mbox", {"MessageElements", 2}]Import["ExampleData/in.mbox", {"FullMessageElements", All, {"From", "ToList", "Subject"}}]Import["ExampleData/attach.mbox", "MessageElements"]Import要素 (62)
データ表現 (10)
"MessageSummaries" (2)
Import["ExampleData/in.mbox", "MessageSummaries"]メッセージの概要をTabularとして見る:
Tabular[Import["ExampleData/conv.mbox", "MessageSummaries"]]"MessagesElements" (2)
"FullMessages" (1)
"Subject" (1)
"Plaintext" (1)
"BodyPreview" (2)
内容の解析 (2)
"NewBodyContent" (1)
スレッド要素 (8)
"ThreadCount" (1)
"ThreadGraph" (1)
"ThreadEmailCount" (1)
"ThreadTimeInterval" (1)
"ThreadDuration" (1)
"ThreadMessageIDList" (1)
"ThreadFromList" (1)
電子メールアドレスのヘッダ要素 (19)
"FromAddress" (1)
"ToList" (1)
"ToAddressList" (1)
"ToNameList" (1)
"CcList" (1)
"CcAddressList" (1)
"CcNameList" (1)
"BccList" (1)
"BccAddressList" (1)
"BccNameList" (1)
"ReplyToList" (1)
"ReplyToAddressList" (1)
"ReplyToNameList" (1)
"MessageID" (1)
"ReplyToMessageID" (1)
一般的なヘッダ要素 (4)
"HeaderString" (1)
"HeaderRules" (1)
"CharacterEncoding" (1)
高度なヘッダ要素 (11)
"Precedence" (1)
"ReturnReceiptRequested" (1)
"DeliveryChainHostnames" (1)
"DeliveryChainRecords" (1)
配信チェーンの記録をAssociationとしてインポートする:
Import["ExampleData/conv.mbox", {"DeliveryChainRecords", 1}]"OriginatingMailClient" (1)
"OriginatingIPAddress" (1)
"OriginatingHostname" (1)
"OriginatingDate" (1)
"OriginatingTimezone" (1)
"ServerOriginatingDate" (1)
添付ファイル要素 (7)
"HasAttachments" (1)
"AttachmentNames" (1)
"AttachmentList" (1)
"AttachmentSummaries" (1)
"AttachmentData" (1)
"AttachmentDecodedData" (1)
Importオプション (3)
"AttachmentRules" (3)
Import["ExampleData/attach.mbox", "AttachmentList", "AttachmentRules" -> <|"WAV" -> "Length"|>]Import["ExampleData/attach.mbox", "AttachmentList", "AttachmentRules" -> <|"GIF" -> None|>]Import["ExampleData/attach.mbox", "AttachmentList", "AttachmentRules" -> <|"GIF" -> (ColorNegate@ImportByteArray[#, "GIF"] &)|>]アプリケーション (6)
基本的なアプリケーション (2)
"Alice Johnson"からのすべてのメッセージの件名をインポートする:
pos = Flatten[Position[Import["ExampleData/conv.mbox", {"FromName"}], "Alice Johnson"]]Import["ExampleData/conv.mbox", {"Subject", pos}]特定の日付より後に送信されたすべてのメッセージの位置を求める:
dates = Import["ExampleData/conv.mbox", "OriginatingDate"]Flatten[Position[dates, d_DateObject /; (d > DateObject[{2016, 5, 12}, TimeObject[{14, 0, 0.}, TimeZone -> -5.], TimeZone -> -5.])]]内容の解析 (1)
MBOX内で,引用部分以外で「lunch」という単語が述べられたすべての事例を求める:
Cases[StringCases[#, ___ ~~ "lunch" ~~ ___, IgnoreCase -> True]& /@ Import["ExampleData/conv.mbox", "NewBodyContent"], _String, Infinity]MBOX内で,「lunch」という単語が述べられたすべての事例を,引用部分内での重複も含めて求める:
Cases[StringCases[#, ___ ~~ "lunch" ~~ ___, IgnoreCase -> True]& /@ Import["ExampleData/conv.mbox", "Body"], _String, Infinity]添付ファイルの操作 (2)
50000バイトより大きい添付ファイルを含むメッセージをインポートする:
maxSize = Max@@Lookup[#, "ByteCount", 0]& /@ Import["ExampleData/conv.mbox", "AttachmentSummaries"]Import["ExampleData/conv.mbox", {"MessageElements", #}]& /@ Flatten[Position[ maxSize, d_ /; d > 50000]]ASCII符号化の生の文字列から,2つ目のメッセージの最初の添付ファイルを手作業でインポートする:
attach = First[Import["ExampleData/in.mbox", {"AttachmentData", 2}]];Lookup[attach, {"ContentTransferEncoding", "MIMEType"}]ImportString[attach["RawContent"], {"Base64", "JPEG"}]電子メールスレッドの分析 (1)
MBOXの各電子メールからいくつかの基本要素を敦恵,各メッセージIDを表示する:
mboxData = Association[(#MessageID -> #)& /@ Import["ExampleData/conv.mbox", {"FullMessageElements", All, {"MessageID", "From", "ReplyToMessageID", "NewBodyContent"}}]];
messageIds = Keys[mboxData];
Short[messageIds]messageEdges = Values[Map[DirectedEdge[#ReplyToMessageID, #MessageID]&, Select[mboxData, #ReplyToMessageID =!= None && MemberQ[messageIds, #ReplyToMessageID]&]]];
Short[messageEdges]メッセージIDが頂点で,返信先への接続が辺であるグラフを構築し,各メッセージに送信者の名前のラベルを付ける:
Graph[messageIds, messageEdges, GraphLayout -> {"LayeredDigraphEmbedding", "Orientation" -> Left}, VertexLabels -> Map[# -> First[StringSplit[mboxData[#, "From"]]]&, messageIds]]Graph[messageIds, messageEdges, GraphLayout -> {"LayeredDigraphEmbedding", "Orientation" -> Left}, VertexLabels -> Map[# -> Placed[HoldForm[Evaluate[mboxData[#, "NewBodyContent"]]], Tooltip]&, messageIds]]関連するガイド
-
▪
- 日付と時刻 ▪
- インポートとエキスポート ▪
- 全形式のリスト ▪
- システム・ユーティリティ形式