パッケージ org.opengion.fukurou.mail

## クラス MailMessage

- java.lang.Object
- - org.opengion.fukurou.mail.MailMessage

-     public class MailMessage
      extends Object

  MailMessage は、受信メールを処理するためのラッパークラスです。 メッセージオブジェクトを引数にとるコンストラクタによりオブジェクトが作成されます。 日本語処置などを簡易的に扱えるように、ラッパクラス的な使用方法を想定しています。 必要であれば(例えば、添付ファイルを取り出すために、MailAttachFiles を利用する場合など) 内部のメッセージオブジェクトを取り出すことが可能です。 MailReceiveListener クラスの receive( MailMessage ) メソッドで、メールごとにイベントが 発生して、処理する形態が一般的です。
  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### コンストラクタの概要

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `MailMessage​(javax.mail.Message message, String host, String user)` | メッセージオブジェクトを指定して構築します。

  - ### メソッドの概要

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `void` | `deleteMessage​(boolean flag)` | メッセージをメールサーバーから削除するかどうかをセットします。
    `String` | `getContent()` | メールの本文(Content)を返します。
    `String` | `getHeader​(String key)` | メールのヘッダー情報を文字列に変換して返します。
    `String` | `getHeaders()` | メールの指定のヘッダー情報を文字列に変換して返します。
    `String` | `getHost()` | 内部の ホスト名を返します。
    `javax.mail.Message` | `getMessage()` | 内部の メッセージオブジェクトを返します。
    `String` | `getMessageID()` | メッセージID を取得します。
    `String` | `getNotificationTo()` | 受領確認がセットされている場合の 返信先アドレスを返します。
    `String` | `getSimpleMessage()` | メールの内容を文字列として表現します。
    `String` | `getSubject()` | メールのタイトル(Subject)を返します。
    `String` | `getUser()` | 内部の ユーザー名を返します。
    `static String` | `mimeDecode​(String text)` | エンコードされた文字列を、デコードします。
    `void` | `saveAttachFiles​(String dir, boolean useMsgId)` | メールの添付ファイルが存在する場合に、指定のフォルダにセーブします。
    `void` | `saveMessage​(String dir)` | メールの内容を文字列として指定のフォルダにセーブします。
    `void` | `saveSimpleMessage​(String dir)` | メールの内容と、あれば添付ファイルを指定のフォルダにセーブします。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### MailMessage

          public MailMessage​(javax.mail.Message message,
                             String host,
                             String user)

      メッセージオブジェクトを指定して構築します。
      パラメータ:
        `message` - メッセージオブジェクト
        `host` - ホスト
        `user` - ユーザー
      変更履歴:
        6.4.3.1 (2016/02/12) Collections.synchronizedMap で同期処理を行います。

  - ### メソッドの詳細

    - #### getMessage

          public javax.mail.Message getMessage()

      内部の メッセージオブジェクトを返します。
      戻り値:
        メッセージオブジェクト

    - #### getHost

          public String getHost()

      内部の ホスト名を返します。
      戻り値:
        ホスト名

    - #### getUser

          public String getUser()

      内部の ユーザー名を返します。
      戻り値:
        ユーザー名

    - #### getHeader

          public String getHeader​(String key)

      メールのヘッダー情報を文字列に変換して返します。 キーは、ヘッダー情報の取り出しと同一です。 例) Return-Path,Delivered-To,Date,From,To,Cc,Subject,Content-Type,Message-Id
      パラメータ:
        `key` - メールのヘッダーキー
      戻り値:
        キーに対するメールのヘッダー情報

    - #### getHeaders

          public String getHeaders()

      メールの指定のヘッダー情報を文字列に変換して返します。 ヘッダー情報の取り出しキーと同一の項目を リターンコードで結合しています。 Return-Path,Delivered-To,Date,From,To,Cc,Subject,Content-Type,Message-Id
      戻り値:
        メールの指定のヘッダー情報
      このメソッドは、nullを返しません

    - #### getSubject

          public String getSubject()

      メールのタイトル(Subject)を返します。 日本語文字コード処理も行っています。(JIS→unicode変換等)
      戻り値:
        メールのタイトル
      変更履歴:
        4.3.3.5 (2008/11/08) 日本語MIMEエンコードされた文字列を mimeDecode でデコードします。

    - #### getContent

          public String getContent()

      メールの本文(Content)を返します。 日本語文字コード処理も行っています。(JIS→unicode変換等)
      戻り値:
        メールの本文

    - #### getMessageID

          public String getMessageID()

      メッセージID を取得します。 基本的には、メッセージIDをそのまま(前後の >, <)は取り除きます。 メッセージIDのないメールは、"unknown." + SentData + "." + From という文字列を 作成します。 さらに、送信日やFrom がない場合、または、文字列として取り出せない場合、 "unknown" を返します。
      戻り値:
        メッセージID
      変更履歴:
        4.3.3.5 (2008/11/08) 送信時刻がNULLの場合の処理を追加

    - #### deleteMessage

          public void deleteMessage​(boolean flag)

      メッセージをメールサーバーから削除するかどうかをセットします。
      パラメータ:
        `flag` - 削除するかどうか [true:行う/false:行わない]

    - #### getSimpleMessage

          public String getSimpleMessage()

      メールの内容を文字列として表現します。 デバッグや、簡易的なメールの内容の取り出し、エラー時のメール保存に使用します。
      戻り値:
        メールの内容の文字列表現
      このメソッドは、nullを返しません

    - #### saveSimpleMessage

          public void saveSimpleMessage​(String dir)

      メールの内容と、あれば添付ファイルを指定のフォルダにセーブします。 saveMessage( dir )と、saveAttachFiles( dir,true ) を同時に呼び出しています。
      パラメータ:
        `dir` - メールと添付ファイルをセーブするフォルダ

    - #### saveMessage

          public void saveMessage​(String dir)

      メールの内容を文字列として指定のフォルダにセーブします。 メッセージID.txt という本文にセーブします。 デバッグや、簡易的なメールの内容の取り出し、エラー時のメール保存に使用します。
      パラメータ:
        `dir` - メールの内容をセーブするフォルダ

    - #### saveAttachFiles

          public void saveAttachFiles​(String dir,
                                      boolean useMsgId)

      メールの添付ファイルが存在する場合に、指定のフォルダにセーブします。 添付ファイルが存在する場合のみ、処理を実行します。 useMsgId にtrue を設定すると、メッセージID というフォルダを作成し、その下に、 連番 + "_" + 添付ファイル名 でセーブします。(メールには同一ファイル名を複数添付できる為) false の場合は、指定のディレクトリ直下に、連番 + "_" + 添付ファイル名 でセーブします。
      パラメータ:
        `dir` - 添付ファイルをセーブするフォルダ
        `useMsgId` - メッセージIDフォルダを作成してセーブ場合：true 指定のディレクトリ直下にセーブする場合：false
      変更履歴:
        4.3.3.5 (2008/11/08) ディレクトリ指定時のセパレータのチェックを追加

    - #### getNotificationTo

          public String getNotificationTo()

      受領確認がセットされている場合の 返信先アドレスを返します。 セットされていない場合は、null を返します。 受領確認は、Disposition-Notification-To ヘッダにセットされる事とし、 このヘッダの内容を返します。セットされていなければ、null を返します。
      戻り値:
        返信先アドレス(Disposition-Notification-To ヘッダの内容)

    - #### mimeDecode

          public static final String mimeDecode​(String text)

      エンコードされた文字列を、デコードします。 MIMEエンコード は、 =? で開始するエンコード文字列 ですが、場合によって、前のスペースが 存在しない場合があります。 また、メーラーによっては、エンコード文字列を ダブルコーテーションでくくる処理が入っている 場合もあります。 これらの一連のエンコード文字列をデコードします。
      パラメータ:
        `text` - エンコードされた文字列(されていない場合は、そのまま返します)
      戻り値:
        デコードされた文字列
      変更履歴:
        4.3.3.5 (2008/11/08) 日本語MIMEエンコードされた文字列をデコードします。