メールメッセージを処理するための Module です。
このプログラムは Ruby ライセンスに従います。
require "mailparser" File.open("/tmp/hoge.eml") do |f| m = MailParser.parse_message f m[:from] # Fromへッダのメールアドレスの配列 m[:to] # Toへッダのメールアドレスの配列 m[:subject] # Subjectへッダの内容 m[:body] # メール本文 m[:parts] # 添付ファイルに対応する Hash の配列 m[:parts][0][:filename] # 一番目の添付ファイルのファイル名 m[:parts][0][:body] # 一番目の添付ファイルの内容 end
キー | 値 |
---|---|
:from | Fromへッダのメールアドレスの配列 |
:to | Toへッダのメールアドレスの配列 |
:cc | Ccへッダのメールアドレスの配列 |
:date | Dateへッダを解析した結果のTimeオブジェクト(Dateへッダがない場合やパースできない場合は nil) |
:subject | Subjectへッダの文字列(デコード済) |
:type | Content-Typeへッダのメインタイプ |
:subtype | Content-Typeへッダのサブタイプ |
:charset | Content-Typeへッダのcharsetパラメータの値(小文字) |
:encoding | Content-Transfer-Encodingへッダの値(小文字) |
:multipart | メインタイプが multipart の場合 true |
:boundary | パート毎の区切り文字列(マルチパート時) |
:filename | ファイル名 |
:header | "へッダ名(小文字)"=>"へッダ値(デコード済)"のハッシュ |
:rawheader | 生のへッダ部 |
:body | メール本文(デコード済) |
:parts | 各パートの配列(マルチパート時)。各パートはこれと同じ形式の Hash オブジェクト |
:message | メインタイプが message の場合、本文部を解析した結果の Hash オブジェクト |
これ以降は parse_message が内部で使用しているメソッドですが、個々に使用することもできます。
MailParser.b64_decode("aG9nZWhvZ2U=") # => "hogehoge"
MailParser.b64_hdecode("aG9nZWhvZ2U=") # => "hogehoge"
MailParser.qp_decode("=A4=DB=A4=B2_=A4=CF=A4=B2")' # => "ほげ_はげ"
MailParser.qp_hdecode("=A4=DB=A4=B2_=A4=CF=A4=B2")' # => "ほげ はげ"
MailParser.mdecode_token("=?iso-2022-jp?b?GyRCJFUkLCRVJCwbKEI=?=") # => "ふがふが"
MailParser.mime_header_decode("foo =?iso-2022-jp?b?GyRCJFUkLCRVJCwbKEI=?= bar") # => "foo ふがふが bar"
MailParser.trunc_comment("aaa (bbb (ccc)) ddd") # => "aaa ddd"
MailParser.split_address('aaa@example.jp, hoge <bbb@example.jp>, "fuga,hage" <ccc@example.com>') # => ["aaa@example.jp", "hoge <bbb@example.jp>", "\"fuga,hage\" <ccc@example.com>"]
MailParser.get_mail_address('aaa@example.jp, hoge <bbb@example.jp>, "fuga,hage" <ccc@example.com>') # => ["aaa@example.jp", "bbb@example.jp", "ccc@example.com"]
キー | 値 |
---|---|
:type | メインタイプ |
:subtype | サブタイプ |
:parameter | パラメータ名と値の Hash |
MailParser.parse_content_type("Text/Plain; CharSet=euc-jp") # => {:type=>"text", :subtype=>"plain", :parameter=>{"charset"=>"euc-jp"}}
Last modified: Wed Jun 8 18:56:45 JST 2005