メールメッセージを処理するための 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へッダのメールアドレスの配列 |
| :subject | Subjectへッダの文字列(デコード済) |
| :type | Content-Typeへッダのメインタイプ |
| :subtype | Content-Typeへッダのサブタイプ |
| :charset | Content-Typeへッダのcharsetパラメータの値(小文字) |
| :encoding | Content-Transfer-Encodingへッダの値(小文字) |
| :multipart | メインタイプが multipart の場合 true |
| :boundary | パート毎の区切り文字列(マルチパート時) |
| :filename | ファイル名 |
| :header | [へッダ名, へッダ値(デコード済)]の配列 |
| :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: Tue Nov 2 23:25:07 JST 2004