メールデータ本文の改行コードの注意点


Java アプリケーションは、MailDataインタフェースのメソッドによって受信または送信したメールデータを取得することができます。

受信メールボックスまたは送信メールボックスから取得したメールデータの本文の文字列は、改行を CR + LF ('\r' + '\n')で表します。 そのため、メールボックスから取得したメールデータの本文の文字列を Java アプリケーションで使用する場合は、注意が必要です。

改行を LF ('\n')で処理している Java アプリケーションの場合、取得した文字列の改行を LF に置換するなどの処理が必要となります。 以下に CR + LF や CR を LF に置換する例を示します。


    /*
     * CR + LF、CR を LF に置換
     */
    static String removeCR(String str) {
        int i = str.indexOf('\r');
        if (i >= 0) {
            StringBuffer sb = new StringBuffer(str.length());
            sb.append(str.substring(0, i));
            try {
                for (; true; i++) {
                    char c = str.charAt(i);
                    if (c == '\r') {
                        sb.append('\n');
                        if (str.charAt(i + 1) == '\n') {
                            i++;
                        }
                    } else {
                        sb.append(c);
                    }
                }
            } catch (IndexOutOfBoundsException e) {};
            str = sb.toString();
        }
        return str;
    }