![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1 |
RFC2045 ( MIME Part One : Format of Internet Message Bodies ) の Base64 エンコード ( B エンコード ) と Quoted-Printable エンコード ( Q エンコード ) がサポートされます。
| コンストラクタ/デストラクタ |
|---|
|
SFXMailField( Void ) SFXMailField クラスのコンストラクタです。
|
|
~SFXMailField( Void ) SFXMailField クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| SFCError |
Add(
SFXAnsiStringConstRef charset
, SFXAnsiStringConstRef text
) エンコーディングを指定して、文字列をメール ヘッダーに追加します。
|
| Void |
Clear( Void ) メール ヘッダーの文字列をクリアします。
|
| SFCError |
Decode(
SFXAnsiStringConstRef string
) 指定したメール ヘッダー文字列を解析します。
|
| SFCError |
Encode(
SFXAnsiStringPtr string
) 内部表現をメール ヘッダー文字列としてエンコードします。
|
| CharsetTextPtr |
GetCharsetText(
SInt32 index
) 内部表現のデータを取得します。
|
| SInt32 |
GetSize( Void ) ヘッダー文字列の内部表現の断片の数を取得します。
|
| プロテクト関数 | |
|---|---|
| SFCError |
AddNonEncodedText(
ACharConstPtr start
, ACharConstPtr end
) AddNonEncodedText( SFXAnsiStringConstRef text ) エンコードされていない文字列をメール ヘッダー文字列に追加します。
|
| SFCError |
DecodeTextB(
SFXAnsiStringPtr decoded
, ACharConstPtr start
, ACharConstPtr end
) Base64 エンコードされた文字列をデコードします。
|
| SFCError |
DecodeTextQ(
SFXAnsiStringPtr decoded
, ACharConstPtr start
, ACharConstPtr end
) Quoted-Printable エンコードされた文字列をデコードします。
|
| static Bool |
IsLWSP(
AChar c
) 文字が LWSP ( 空白文字、水平タブ、改行文字、または 復帰文字 ) であるかどうかを判定します。
|
| static Void |
SkipLWSP(
ACharConstHandle start
, ACharConstPtr end
) ポインターを LWSP ( 空白文字、水平タブ、改行文字、または復帰文字 ) 以外の文字まで進めます。
|
| 型 |
|---|
|
CharsetText SFXMailField の内部表現です。
|
[ public, explicit ] SFXMailField(Void);
[ public ] ~SFXMailField(Void);
[ public ] SFCError Add( SFXAnsiStringConstRef charset // エンコーディング SFXAnsiStringConstRef text // 追加する文字列 );
エンコーディングを指定します。
メール ヘッダーに追加する文字列を指定します。
charset 引数で指定するエンコーディングは "US-ASCII" や "ISO-2022-JP" など IANA に登録された文字列を指定します。 また、text 引数で指定する文字列はこのエンコーディングでエンコードされている必要があります。
例えば、"ISO-2022-JP" の文字列をメール ヘッダーに追加する場合、その文字列を SFXMailUtility::ShiftJISToJIS 関数などを使って JIS コードに変換してから text 引数に渡します。
SFXMailField::Encode の使用例
[ protected ] SFCError AddNonEncodedText( ACharConstPtr start // 追加する文字列の先頭へのポインター ACharConstPtr end // 追加する文字列の終端へのポインター );
[ protected ] SFCError AddNonEncodedText( SFXAnsiStringConstRef text // 追加する文字列 );
追加する文字列を指定します。
追加する文字列の先頭へのポインターを指定します。
追加する文字列の終端へのポインターを指定します。
"US-ASCII" の文字列を指定します。
[ public ] Void Clear(Void);
[ public ] SFCError Decode( SFXAnsiStringConstRef string // 解析する文字列 );
解析する文字列を指定します。
RFC2047 ( MIME : Message Header Extensions for Non-ASCII Text ) でエンコードされた文字列を解析し、内部表現に変換します。
文字列を各エンコードの断片毎に「エンコード名と文字列」の組で保持します。
断片の数は SFXMailField::GetSize 関数、断片の文字列は SFXMailField::GetCharsetText 関数を使って取得します。
メール ヘッダー文字列の "US-ASCII" と "ISO-2022-JP" を認識し、Shift JIS の文字列にして返します。厳密には SFXMailField::Decode 関数の戻り値をチェックする必要があります。
SFXAnsiString DecodeHeader(SFXAnsiStringConstRef str) {
SFXAnsiString result;
SFXMailField decoder;
// デコードする
decoder.Decode(str);
for (SInt32 i = 0; i < decoder.GetSize(); ++i) {
// 内部表現のデータを取得する
SFXMailField::CharsetTextConstPtr f = decoder.GetCharsetText(i);
文字コードが JISコード( iso-2022-jp )の場合
if (f->charset.Equals("iso-2022-jp", false)) {
SFXAnsiString temp;
// JIS コード ( iso-2022-jp ) の文字列を Shift JIS コードに変換する
SFXMailUtility::JISToShiftJIS(f->text, &temp, '\0');
// result への追加
result += temp;
}
else if (f->charset.Equals("us-ascii", false)) { // ascii
result += f->text;
}
else { // other .. skip it
/* IMPLEMENT HERE ERROR CHECK */
}
}
return result;
}
SFXMailField::Encode | SFXMailField::CharsetText | SFXMailField::GetSize | SFXMailField::GetCharsetText
[ protected, const ] SFCError DecodeTextB( SFXAnsiStringPtr decoded // デコード後の文字列 ACharConstPtr start // デコードする文字列の先頭へのポインター ACharConstPtr end // デコードする文字列の終端へのポインター );
![]() |
Base64 エンコードについて |
|---|---|
詳細情報 : RFC2045 ( MIME Part One : Format of Internet Message Bodies ) | |
[ protected, const ] SFCError DecodeTextQ( SFXAnsiStringPtr decoded // デコード後の文字列 ACharConstPtr start // デコードする文字列の先頭へのポインター ACharConstPtr end // デコードする文字列の終端へのポインター );
![]() |
Quoted-Printable エンコードについて |
|---|---|
詳細情報 : RFC2045 ( MIME Part One : Format of Internet Message Bodies ) | |
[ public, const ] SFCError Encode( SFXAnsiStringPtr string // 出力先 );
出力先の文字列を指定します。
Shift_JIS の文字列をメール ヘッダー文字列に変換します。 厳密には SFXMailField::Encode 関数の戻り値をチェックする必要があります。
// Shift_JIS から JIS へ変換してから B エンコードする // EncodeHeader 関数は ASCII 文字を含む文字は未対応 SFXAnsiString EncodeHeader(SFXAnsiStringConstRef str) { SFXAnsiString jis; SFXAnsiString result; SFXMailField encoder; // SJIS -> JIS に変換する SFXMailUtility::ShiftJISToJIS(str, &jis, '\0'); encoder.Add("ISO-2022-JP", jis); encoder.Encode(&result); return result; }
[ public, const ]
CharsetTextPtr GetCharsetText(
SInt32 index // インデックス番号
);内部表現のインデックス番号を指定します。
SFXMailField::CharsetText で表された内部表現を返します。
SFXMailField::CharsetText で表された内部表現を取得します。 インデックス番号は、0 から SFXMailField::GetSize 関数の戻り値まで指定できます。
[ public, const ] SInt32 GetSize(Void);
内部表現の断片数を取得します。
内部表現の断片数を取得します。
[ protected, static ] Void SkipLWSP( ACharConstHandle start // 進めるポインターへのポインター ACharConstPtr end // 終了位置 );
引数で指定したポインターを次の LWSP ( 空白文字、水平タブ、改行文字、または復帰文字 ) 以外の文字、または終了位置 ( end ) まで進めます。
ポインターが終了位置 ( end ) よりも右にある場合は何もしません。
SFMTYPEDEFCLASS(CharsetText)
struct CharsetText {
SFXAnsiString charset;
SFXAnsiString text;
};
SFXMailField クラスの内部表現です。 キャラクタ セットを保持する charset と、データを保持する text から構成されます。
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|