前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFXMailUtility
[内部的に利用されるクラスです] メールメッセージ作成・送信用ユーティリティクラスです。
#include <SFXMailUtility.h.hpp>
class SFXMailUtility;
SFMTYPEDEFCLASS(SFXMailUtility)

解説

SFXMailUtility クラスは、 RFC2822(Internet Message Format) に準拠したメッセージのヘッダーを解析するためのパーサー機能や、 Base64 や Quoted-Printable のエンコードとデコード、MD5 ハッシュ変換、日本語文字コード変換などのユーティリティ機能を提供します。

[Note] 注意

SFXMailUtility クラスは、 SFXSMTPSender / SFXMailMessage クラスを実装するときに使用される内部実装クラスです。

SFXSMTPSender / SFXMailMessage クラスに代わる開発者独自のメール送受信クラスやメールメッセージ作成クラスを実装する場合に使用します。

参照

SFXMailMessage

メンバ

パブリック関数
static
SFCError
DecodeBase64( ACharConstPtr in , UInt32 size , SFXBufferPtr out )
指定されたデータを Base64 デコードします。
static
SFCError
DecodeBase64( SFXBufferConstRef in , SFXBufferPtr out )
指定されたデータを Base64 デコードします。
static
SFCError
DecodeBase64( SFXAnsiStringConstRef in , SFXAnsiStringPtr out )
指定されたデータを Base64 デコードします。
static
SFCError
DecodeQuotedPrintable( ACharConstPtr in , UInt32 size , SFXBufferPtr out , Bool text = true )
指定されたデータを Quoted-Printable デコードします。
static
SFCError
DecodeQuotedPrintable( SFXBufferConstRef in , SFXBufferPtr out , Bool text = true )
指定されたデータを Quoted-Printable デコードします。
static
SFCError
DecodeQuotedPrintable( SFXAnsiStringConstRef in , SFXAnsiStringPtr out , Bool text = true )
指定されたデータを Quoted-Printable デコードします。
static
SFCError
EncodeBase64( ACharConstPtr in , UInt32 size , SFXBufferPtr out , UInt32 chars = 64 , SFXAnsiStringConstRef delimiter = "\r\n" )
指定されたデータを Base64 エンコードします。
static
SFCError
EncodeBase64( SFXBufferConstRef in , SFXBufferPtr out , UInt32 chars = 64 , SFXAnsiStringConstRef delimiter = "\r\n" )
指定されたデータを Base64 エンコードします。
static
SFCError
EncodeBase64( SFXAnsiStringConstRef in , SFXAnsiStringPtr out , UInt32 chars = 64 , SFXAnsiStringConstRef delimiter = "\r\n" )
指定されたデータを Base64 エンコードします。
static
SFCError
EncodeQuotedPrintable( ACharConstPtr in , UInt32 size , SFXBufferPtr out , UInt32 chars = 64 , Bool text = true )
指定されたデータを Quoted-Printable エンコードします。
static
SFCError
EncodeQuotedPrintable( SFXBufferConstRef in , SFXBufferPtr out , UInt32 chars = 64 , Bool text = true )
指定されたデータを Quoted-Printable エンコードします。
static
SFCError
EncodeQuotedPrintable( SFXAnsiStringConstRef in , SFXAnsiStringPtr out , UInt32 chars = 64 , Bool text = true )
指定されたデータを Quoted-Printable エンコードします。
static
Bool
FindNextBoundary( ACharConstPtr start , ACharConstPtr end , SFXAnsiStringConstRef boundary , ACharConstHandle found , ACharConstHandle next )
指定された文字列から指定された境界文字列を検索します。
static
UInt32
GetEncodedSizeBase64( UInt32 size , UInt32 chars , UInt32 delimiter )
指定されたサイズのデータを Base64 エンコードしたときのサイズを取得します。
static
UInt32
GetEncodedSizeQuotedPrintable( ACharConstPtr in , UInt32 size , UInt32 chars , Bool text )
指定されたデータを Quoted-Printable エンコードしたときのサイズを取得します。
static
SFCError
GetHMACMD5( VoidConstPtr in , UInt32 size , SFXBufferConstRef key , SFXBufferPtr out , Bool isXdigit )
指定されたデータの HMAC-MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetHMACMD5( SFXBufferConstRef in , SFXBufferConstRef key , SFXBufferPtr out , Bool isXdigit )
指定されたデータの HMAC-MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetHMACMD5( SFXAnsiStringConstRef in , SFXAnsiStringConstRef key , SFXAnsiStringPtr out , Bool isXdigit )
指定されたデータの HMAC-MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetKeyedMD5( VoidConstPtr datagram , UInt32 size , SFXBufferConstRef key , AChar keyfill , SFXBufferPtr out , Bool isXdigit )
指定されたデータの Keyed-MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetKeyedMD5( SFXBufferConstRef datagram , SFXBufferConstRef key , AChar keyfill , SFXBufferPtr out , Bool isXdigit )
指定されたデータの Keyed-MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetKeyedMD5( SFXAnsiStringConstRef datagram , SFXAnsiStringConstRef key , AChar keyfill , SFXAnsiStringPtr out , Bool isXdigit )
指定されたデータの Keyed-MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetMD5( VoidConstPtr in , UInt32 size , SFXBufferPtr out , Bool isXdigit )
指定されたデータの MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetMD5( SFXBufferConstRef in , SFXBufferPtr out , Bool isXdigit )
指定されたデータの MD5 ハッシュ値(128 ビット)を取得します。
static
SFCError
GetMD5( SFXAnsiStringConstRef in , SFXAnsiStringPtr out , Bool isXdigit )
指定されたデータの MD5 ハッシュ値(128 ビット)を取得します。
static
SInt16
HexToByte( AChar c1 , AChar c2 )
指定された 2 桁の 16 進数表記の文字列を整数に変換します。
static
SInt16
HexToNibble( AChar c )
指定された 1 桁の 16 進数文字を整数に変換します。
static
Bool
IsAtext( AChar c )
指定された文字が atext 文字かどうかを判定します。
static
Bool
IsCTL( AChar c )
指定された文字がコントロール文字かどうかを判定します。
static
Bool
IsTokenChar( AChar c )
指定された文字がトークンを構成する文字かどうかを判定します。
static
Bool
IsTspecials( AChar c )
指定された文字が TSPECIAL 文字かどうかを判定します。
static
Bool
IsValidFieldName( ACharConstPtr start , ACharConstPtr end = null )
指定された文字列がメールヘッダーのフィールド名として有効かどうかを判定します。
static
Bool
IsWSP( AChar c )
指定された文字が WSP 文字(空白文字または TAB 文字)かどうかを判定します。
static
SFCError
JISToShiftJIS( SFXAnsiStringConstRef in , SFXAnsiStringPtr out , AChar unconvChar = '\0' )
指定された JIS コード(iso-2022-jp)の文字列を Shift_JIS コードに変換します。
static
AChar
NibbleToHex( Byte nibble )
指定されたバイト値を 16 進数の文字に変換します。
static
SFCError
ParseAddrSpec( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列からメールアドレス(addr-spec)を取得します。
static
SFCError
ParseAtom( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列から atom を取得します。
static
SFCError
ParseContentType( SFXAnsiStringConstRef fieldValue , SFXAnsiStringPtr mainType , SFXAnsiStringPtr subType , SFXPropertyPtr paramList )
指定された文字列から Content-Type フィールドの値を取得します。
static
SFCError
ParseDate( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXDatePtr date , SInt16Ptr zone )
指定された文字列から日時を取得します。
static
SFCError
ParseDate( SFXAnsiStringConstRef str , SFXDatePtr date , SInt16Ptr zone )
指定された文字列から日時を取得します。
static
SFCError
ParseDotAtom( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列から dot-atom を取得します。
static
SFCError
ParseDotAtomText( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列から dot-atom-text を取得します。
static
SFCError
ParseHeaderLine( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value1 , SFXAnsiStringPtr value2 )
指定された文字列からメールヘッダーの 1 行を取得します。
static
SFCError
ParseMailbox( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr name , SFXAnsiStringPtr addr )
指定された文字列からメールアドレス(mailbox)を取得します。
static
SFCError
ParseMailbox( SFXAnsiStringConstRef str , SFXAnsiStringPtr name , SFXAnsiStringPtr addr )
指定された文字列からメールアドレス(mailbox)を取得します。
static
SFCError
ParseMailboxList( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , MailboxHandle mailboxes , SInt32Ptr mbxCount )
指定された文字列からメールアドレスのリスト (mailbox-list)を取得します。
static
SFCError
ParseMailboxList( SFXAnsiStringConstRef str , MailboxHandle mailboxes , SInt32Ptr mbxCount )
指定された文字列からメールアドレスのリスト (mailbox-list)を取得します。
static
SFCError
ParseParameter( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr name , SFXAnsiStringPtr value )
指定された文字列から "attribute = value" で表されるパラメータを取得します。
static
SFCError
ParseParameterList( ACharConstPtr start , ACharConstPtr end , SFXPropertyPtr paramList )
指定された文字列から "attribute1 = value2; attribute2 = value2; ..." で表されるパラメータリストを取得します。
static
SFCError
ParsePhrase( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列から phrase を取得します。
static
SFCError
ParseQuotedString( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列から quoted-string を取得します。
static
SFCError
ParseToken( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列から token を取得します。
static
SFCError
ParseWord( ACharConstPtr start , ACharConstPtr end , ACharConstHandle next , SFXAnsiStringPtr value )
指定された文字列から word を取得します。
static
SFCError
ShiftJISToJIS( SFXAnsiStringConstRef in , SFXAnsiStringPtr out , AChar unconvChar = '\0' )
指定された Shift_JIS コードの文字列を JIS コード(iso-2022-jp)に変換します。
static
Void
SkipUntilCRLF( ACharConstHandle start )
ポインタを次の CRLF の次の文字または '\0' 文字の位置まで進めます。
static
Void
SkipWSP( ACharConstHandle start , ACharConstPtr end )
ポインタを WSP(空白文字または水平タブ)以外の文字まで進めます。
Mailbox
メールアドレスを表す構造体です。

SFXMailUtility::DecodeBase64
指定されたデータを Base64 デコードします。
[ public, static ]
SFCError DecodeBase64(
    ACharConstPtr in   // [入力] Base64 エンコードされたデータへのポインタ
    UInt32 size        // [入力] Base64 エンコードされたデータのサイズ
    SFXBufferPtr out   // [出力] Base64 デコードされたデータが格納された場所へのポインタ
);
[ public, static ]
SFCError DecodeBase64(
    SFXBufferConstRef in   // [入力] Base64 エンコードされたデータへの参照
    SFXBufferPtr out       // [出力] Base64 デコードされたデータが格納された場所へのポインタ
);
[ public, static ]
SFCError DecodeBase64(
    SFXAnsiStringConstRef in   // [入力] Base64 エンコードされたデータへの参照
    SFXAnsiStringPtr out       // [出力] Base64 デコードされたデータが格納された場所へのポインタ
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 不正な文字があるとき(正確には 4 による剰余が 1 である位置にある文字が "=" のとき): SFERR_INVALID_FORMAT
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたデータを Base64 デコードします。

指定されたデータが Base64 でエンコードされたデータでない場合 (正確には 4 による剰余が 1 である位置にある文字が "=" のとき)、 SFERR_INVALID_FORMAT を返却します。

[Caution] 注意

指定されたデータが Base64 エンコードされていない場合も SFERR_NO_ERROR で終了する可能性があることに注意してください。

[Note] 注意

SFBWebUtil::DecodeBase64 関数と異なり、 in 引数に指定されたデータに含まれる 1 行を区切る文字(通常、CRLF 改行文字["\r\n"])は飛ばされて処理されます。

正確には 4 による剰余が 1 である位置にある文字が "=" 以外の Base64 で使用できない文字が出現した場合は飛ばされて処理されます。

[Note] Base64 について

Base64 とは、3 個の 1 バイト(8 ビット)の集合を 64 種類の印字可能な英数字 4 文字に変換し、 これらの文字以外の文字を扱えない通信環境においてマルチバイト文字やバイナリデータを処理するためのエンコード方式です。

Base64 の詳細は、 RFC2045: 6.8. Base64 Content-Transfer-Encoding を参照してください。

参照

SFXMailUtility::EncodeBase64 | SFXMailUtility::GetEncodedSizeBase64 | BREW API IWEBUTIL_DecodeBase64 | RFC2045: 6.8. Base64 Content-Transfer-Encoding


SFXMailUtility::DecodeQuotedPrintable
指定されたデータを Quoted-Printable デコードします。
[ public, static ]
SFCError DecodeQuotedPrintable(
    ACharConstPtr in   // [入力] Quoted-Printable エンコードされたデータへのポインタ
    UInt32 size        // [入力] Quoted-Printable エンコードされたデータのサイズ
    SFXBufferPtr out   // [出力] Quoted-Printable デコードされたデータが格納された場所へのポインタ
    Bool text = true   // [入力] テキストモードかバイナリモードか: デフォルトは true(テキストモード)
);
[ public, static ]
SFCError DecodeQuotedPrintable(
    SFXBufferConstRef in   // [入力] Quoted-Printable エンコードされたデータへの参照
    SFXBufferPtr out       // [出力] Quoted-Printable デコードされたデータが格納された場所へのポインタ
    Bool text = true       // [入力] テキストモードかバイナリモードか: デフォルトは true(テキストモード)
);
[ public, static ]
SFCError DecodeQuotedPrintable(
    SFXAnsiStringConstRef in   // [入力] Quoted-Printable エンコードされたデータへの参照
    SFXAnsiStringPtr out       // [出力] Quoted-Printable デコードされたデータが格納された場所へのポインタ
    Bool text = true           // [入力] テキストモードであるかどうか: デフォルトは true。基本的にテキストモードを指定する。
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 不正な文字があるとき(Quoted-Printable エンコードで使用しない文字が含まれる場合、但し CRLF 改行文字を除く): SFERR_INVALID_FORMAT
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたデータを Quoted-Printable デコードします。

[Note] テキストモードについて

in 引数に指定するテキストモードの内容は以下の通りです (基本的にデフォルト設定のテキストモードを指定します)。

  • テキストモードであるとき(true のとき): エンコード時にエンコード対象データに含まれる CRLF 文字は CRLF 文字のまま出力されます。
  • テキストモードでないとき(false のとき): エンコード時にエンコード対象データに含まれる CRLF 文字は Non-Printable 文字と同様に "=" でエスケープして出力されます。
[Caution] 注意

不正な文字は飛ばされて処理され、 SFERR_INVALID_FORMAT が返却されます。

エンコード時に追加された各行末にある '=' 文字、CR 文字、LF 文字の 3 文字は飛ばされて処理されます。 この場合、SFERR_INVALID_FORMAT は返却されません。

[Note] Quoted-Printable について

Quoted-Printable とは、 "=" を除くすべての印字可能な US-ASCII 文字(0x21 から 0x7E)はそのまま使い、 それ以外の文字と "=" は "=??" のような "=" と文字コードの16進数で表記するエンコード方式です。

デコードするとき、"=" を取り除き、 16進表記になっているコードを対応する文字に置き換えます。

Quoted-Printable の詳細は、 RFC2045: 6.7. Quoted-Printable Content-Transfer-Encoding を参照してください。

参照

SFXMailUtility::EncodeQuotedPrintable | SFXMailUtility::GetEncodedSizeQuotedPrintable | RFC2045: 6.7. Quoted-Printable Content-Transfer-Encoding


SFXMailUtility::EncodeBase64
指定されたデータを Base64 エンコードします。
[ public, static ]
SFCError EncodeBase64(
    ACharConstPtr in                           // [入力] Base64 エンコードするデータへのポインタ
    UInt32 size                                // [入力] Base64 エンコードするデータのサイズ
    SFXBufferPtr out                           // [出力] Base64 エンコードされたデータが格納された場所へのポインタ
    UInt32 chars = 64                          // [入力] 1 行の文字数
    SFXAnsiStringConstRef delimiter = "\r\n"   // [入力] 改行文字列
);
[ public, static ]
SFCError EncodeBase64(
    SFXBufferConstRef in                       // [入力] Base64 エンコードするデータへの参照
    SFXBufferPtr out                           // [出力] Base64 エンコードされたデータが格納された場所へのポインタ
    UInt32 chars = 64                          // [入力] 1 行の文字数
    SFXAnsiStringConstRef delimiter = "\r\n"   // [入力] 改行文字列
);
[ public, static ]
SFCError EncodeBase64(
    SFXAnsiStringConstRef in                   // [入力] Base64 エンコードするデータへの参照
    SFXAnsiStringPtr out                       // [出力] Base64 エンコードされたデータが格納された場所へのポインタ
    UInt32 chars = 64                          // [入力] 1 行の文字数
    SFXAnsiStringConstRef delimiter = "\r\n"   // [入力] 区切り文字列(1 行を区切る文字)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたデータを Base64 エンコードします。

[Note] 注意

SFBWebUtil::EncodeBase64 関数と異なり、 この関数は改行の処理を行います。

chars / delimiter 引数のデフォルト値は 64 / "\r\n"(CRLF) です。

[Note] Base64 について

Base64 とは、3 個の 1 バイト(8 ビット)の集合を 64 種類の印字可能な英数字 4 文字に変換し、 これらの文字以外の文字を扱えない通信環境においてマルチバイト文字やバイナリデータを処理するためのエンコード方式です。

Base64 の詳細は、 RFC2045: 6.8. Base64 Content-Transfer-Encoding を参照してください。

参照

SFXMailUtility::DecodeBase64 | SFXMailUtility::GetEncodedSizeBase64 | SFBWebUtil::EncodeBase64 | BREW API IWEBUTIL_EncodeBase64 | RFC2045: 6.8. Base64 Content-Transfer-Encoding


SFXMailUtility::EncodeQuotedPrintable
指定されたデータを Quoted-Printable エンコードします。
[ public, static ]
SFCError EncodeQuotedPrintable(
    ACharConstPtr in    // [入力] Quoted-Printable エンコードするデータへのポインタ
    UInt32 size         // [入力] Quoted-Printable エンコードするデータのサイズ
    SFXBufferPtr out    // [出力] Quoted-Printable エンコードされたデータが格納された場所へのポインタ
    UInt32 chars = 64   // [入力] 1 行の文字数
    Bool text = true    // [入力] テキストモードであるかどうか: デフォルトは true。基本的にテキストモードを指定する。
);
[ public, static ]
SFCError EncodeQuotedPrintable(
    SFXBufferConstRef in   // [入力] Quoted-Printable エンコードするデータへの参照
    SFXBufferPtr out       // [出力] Quoted-Printable エンコードされたデータが格納された場所へのポインタ
    UInt32 chars = 64      // [入力] 1 行の文字数
    Bool text = true       // [入力] テキストモードかバイナリモードか: デフォルトは true(テキストモード)
);
[ public, static ]
SFCError EncodeQuotedPrintable(
    SFXAnsiStringConstRef in   // [入力] Quoted-Printable エンコードするデータへの参照
    SFXAnsiStringPtr out       // [出力] Quoted-Printable エンコードされたデータが格納された場所へのポインタ
    UInt32 chars = 64          // [入力] 1 行の文字数
    Bool text = true           // [入力] テキストモードかバイナリモードか: デフォルトは true(テキストモード)
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたデータを Quoted-Printable エンコードします。

[Note] 注意

chars 引数に指定した長さで改行の処理を行います。 chars 引数には、4 以上の値を指定します。 メール送信用データの場合は仕様上 1000 を超える値を指定してはいけません。

デフォルト値は 64 です。

[Note] テキストモードについて

in 引数に指定するテキストモードの内容は以下の通りです (基本的にデフォルト設定のテキストモードを指定します)。

  • テキストモードであるのとき(true のとき): エンコード時にエンコード対象データに含まれる CRLF 文字は CRLF 文字のまま出力されます。
  • テキストモードでないとき(false のとき): エンコード時にエンコード対象データに含まれる CRLF 文字は Non-Printable 文字と同様に "=" でエスケープして出力されます。
[Note] Quoted-Printable について

Quoted-Printable とは、 "=" を除くすべての印字可能な US-ASCII 文字(0x21 から 0x7E)はそのまま使い、 それ以外の文字と "=" は "=??" のような "=" と文字コードの16進数で表記するエンコード方式です。

デコードするとき、"=" を取り除き、 16進表記になっているコードを対応する文字に置き換えます。

Quoted-Printable の詳細は、 RFC2045: 6.7. Quoted-Printable Content-Transfer-Encoding を参照してください。

参照

SFXMailUtility::DecodeQuotedPrintable | SFXMailUtility::GetEncodedSizeQuotedPrintable | RFC2045: 6.7. Quoted-Printable Content-Transfer-Encoding


SFXMailUtility::FindNextBoundary
指定された文字列から指定された境界文字列を検索します。
[ public, static ]
Bool FindNextBoundary(
    ACharConstPtr start              // [入力] 検索開始位置へのポインタ
    ACharConstPtr end                // [入力] 検索終了位置へのポインタ
    SFXAnsiStringConstRef boundary   // [入力] 境界文字列
    ACharConstHandle found           // [出力] 見つかった境界文字列の位置へのハンドル
    ACharConstHandle next            // [出力] 見つかった境界文字列の次の文字へのハンドル
);

引数

start

検索する文字列の先頭へのポインタを指定します。

end

検索する文字列の終端へのポインタを指定します。 このポインタが指す文字は、検索対象に含まれません。

boundary

検索する境界文字列を指定します。

found

見つかった境界文字列の位置(境界文字列の前にある CRLF の CR 文字)へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

next

見つかった境界文字列の後にある最初の CRLF の次の文字、または検索終了位置へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • "CRLF--境界文字列CRLF" が見つかったとき: true
  • "CRLF--境界文字列--CRLF"が見つかったとき、または境界文字列が見つからなかったとき: false

解説

この関数は、start 引数と end 引数で指定された範囲の文字列)内で boundary 引数に指定された境界文字列を検索します。

"CRLF--境界文字列CRLF" が見つかったときは、 true が返却されます。 "CRLF--境界文字列--CRLF"が見つかったとき、または境界文字列が見つからなかったときは、 false が返却されます。

境界文字列が存在した場合、 found 引数には境界文字列の前にある CRLF の CR 文字へのハンドル、 next 引数には境界文字列の後にある最初の CRLF の次の文字または検索終了位置へのハンドルが返却されます。

境界文字列が存在しなかった場合、 found 引数と next 引数には end 引数に指定した値が返却されます。

なお、取得する必要がない場合は found / next 引数に null を指定します。

[Note] 注意

通常、検索対象の文字列は MIME ドキュメントです。

[Note] 境界文字列について

MIME のマルチパート(multipart)のエンティティは、複数のエンティティを 1 つのエンティティにまとめて扱うことができます。

マルチパートのエンティティは、前置部分(preamble)、1 つ以上の本体部分(body-part)、後置部分(epilogue)から構成されます。 これらは境界文字列によって区切られます。

具体的には、 各本体部分(body-part)の前には境界行"CRLF--境界文字列CRLF"、 最後の本体部分(body-part)の後(終端)には境界行"CRLF--境界文字列--CRLF" が置かれて区切られます (境界行の行末の CRLF の前には任意の空白文字が含まれる可能性があります)。

なお、境界文字列は Content-Type フィールドの boundary パラメータに 1 文字以上 70 文字以下の文字列として設定します。

境界文字列についての詳細は、 RFC2046: 5.1. Multipart Media Type を参照してください

参照

RFC2046: 5.1. Multipart Media Type


SFXMailUtility::GetEncodedSizeBase64
指定されたサイズのデータを Base64 エンコードしたときのサイズを取得します。
[ public, static ]
UInt32 GetEncodedSizeBase64(
    UInt32 size        // [入力] Base64 形式にエンコードするデータのサイズ
    UInt32 chars       // [入力] 1 行の文字数
    UInt32 delimiter   // [入力] 改行文字列の長さ
);

戻り値

データを Base64 エンコードしたときのサイズ

解説

この関数は、指定されたサイズのデータを Base64 エンコードしたときのサイズを取得します。

chars / delimiter 引数には、1 行 / 区切り文字の長さを指定します。 delimiter 文字も含む長さが返却されます。

[Note] Base64 について

Base64 とは、3 個の 1 バイト(8 ビット)の集合を 64 種類の印字可能な英数字 4 文字に変換し、 これらの文字以外の文字を扱えない通信環境においてマルチバイト文字やバイナリデータを処理するためのエンコード方式です。

Base64 の詳細は、 RFC2045: 6.8. Base64 Content-Transfer-Encoding を参照してください。

参照

SFXMailUtility::EncodeBase64 | SFXMailUtility::DecodeBase64 | RFC2045: 6.8. Base64 Content-Transfer-Encoding


SFXMailUtility::GetEncodedSizeQuotedPrintable
指定されたデータを Quoted-Printable エンコードしたときのサイズを取得します。
[ public, static ]
UInt32 GetEncodedSizeQuotedPrintable(
    ACharConstPtr in   // [入力] Quoted-Printable エンコードするデータへのポインタ
    UInt32 size        // [入力] Quoted-Printable エンコードするデータのサイズ
    UInt32 chars       // [入力] 1 行の文字数
    Bool text          // [入力] テキストモードかどうか
);

戻り値

指定されたデータを Quoted-Printable エンコードしたときのサイズ

解説

この関数は、 指定されたデータを Quoted-Printable エンコードしたときのサイズを取得します。

chars 引数には、1 行の長さを指定します。 CRLF 改行文字(\r\n)も含む長さが返却されます。

[Note] Quoted-Printable について

Quoted-Printable とは、 "=" を除くすべての印字可能な US-ASCII 文字(0x21 から 0x7E)はそのまま使い、 それ以外の文字と "=" は "=??" のような "=" と文字コードの16進数で表記するエンコード方式です。

デコードするとき、"=" を取り除き、 16進表記になっているコードを対応する文字に置き換えます。

Quoted-Printable の詳細は、 RFC2045: 6.7. Quoted-Printable Content-Transfer-Encoding を参照してください。

参照

SFXMailUtility::EncodeQuotedPrintable | SFXMailUtility::DecodeQuotedPrintable | RFC2045: 6.7. Quoted-Printable Content-Transfer-Encoding


SFXMailUtility::GetHMACMD5
指定されたデータの HMAC-MD5 ハッシュ値(128 ビット)を取得します。
[ public, static ]
SFCError GetHMACMD5(
    VoidConstPtr in         // [入力] 入力データ
    UInt32 size             // [入力] 入力データのサイズ
    SFXBufferConstRef key   // [入力] キーへの参照
    SFXBufferPtr out        // [出力] HMAC-MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit           // [入力] 16 進数で出力するかどうか
);
[ public, static ]
SFCError GetHMACMD5(
    SFXBufferConstRef in    // [入力] 入力データ
    SFXBufferConstRef key   // [入力] キーへの参照
    SFXBufferPtr out        // [出力] HMAC-MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit           // [入力] 16 進数で出力するかどうか
);
[ public, static ]
SFCError GetHMACMD5(
    SFXAnsiStringConstRef in    // [入力] 入力データ
    SFXAnsiStringConstRef key   // [入力] キーへの参照
    SFXAnsiStringPtr out        // [出力] HMAC-MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit               // [入力] 16 進数で出力するかどうか
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたデータの HMAC-MD5 ハッシュ値(128 ビット)を取得します。

[Note] HMAC-MD5 について

詳細は RFC2104: HMAC: Keyed-Hashing for Message Authentication を参照してください。

参照

SFXMailUtility::GetMD5 | SFXMailUtility::GetKeyedMD5 | RFC2104: HMAC: Keyed-Hashing for Message Authentication | RFC1321: The MD5 Message-Digest Algorithm


SFXMailUtility::GetKeyedMD5
指定されたデータの Keyed-MD5 ハッシュ値(128 ビット)を取得します。
[ public, static ]
SFCError GetKeyedMD5(
    VoidConstPtr datagram   // [入力] 入力データ
    UInt32 size             // [入力] 入力データのサイズ
    SFXBufferConstRef key   // [入力] キーへの参照
    AChar keyfill           // [入力] パッド
    SFXBufferPtr out        // [出力] Keyed-MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit           // [入力] 16 進数で出力するかどうか
);
[ public, static ]
SFCError GetKeyedMD5(
    SFXBufferConstRef datagram   // [入力] 入力データ
    SFXBufferConstRef key        // [入力] キーへの参照
    AChar keyfill                // [入力] パッド(キーの次の 512 バイト境界までパディングする文字)
    SFXBufferPtr out             // [出力] Keyed-MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit                // [入力] 16 進数で出力するかどうか
);
[ public, static ]
SFCError GetKeyedMD5(
    SFXAnsiStringConstRef datagram   // [入力] 入力データ
    SFXAnsiStringConstRef key        // [入力] キー
    AChar keyfill                    // [入力] パッド(キーの次の 512 バイト境界までパディングする文字)
    SFXAnsiStringPtr out             // [出力] Keyed-MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit                    // [入力] 16 進数で出力するかどうか
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたデータの Keyed-MD5 ハッシュ値(128 ビット)を取得します。

[Note] Keyed-MD5 について

与えられた キー、キーパッド、データから文字列 "キー、キーパディング、データ、キー、MD5 パディング" を作成し、 この文字列から MD5(Message Digest Algorithm 5)を使用して 128 ビットのハッシュ値を計算するアルゴリズムです。

詳細は RFC1828: IP Authentication using Keyed MD5 を参照してください。

参照

SFXMailUtility::GetMD5 | SFXMailUtility::GetHMACMD5 | RFC1828: IP Authentication using Keyed MD5 | RFC1321: The MD5 Message-Digest Algorithm


SFXMailUtility::GetMD5
指定されたデータの MD5 ハッシュ値(128 ビット)を取得します。
[ public, static ]
SFCError GetMD5(
    VoidConstPtr in    // [入力] 入力データ
    UInt32 size        // [入力] 入力データのサイズ
    SFXBufferPtr out   // [出力] MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit      // [入力] 16 進数で出力するかどうか
);
[ public, static ]
SFCError GetMD5(
    SFXBufferConstRef in   // [入力] 入力データ
    SFXBufferPtr out       // [出力] MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit          // [入力] 16 進数で出力するかどうか
);
[ public, static ]
SFCError GetMD5(
    SFXAnsiStringConstRef in   // [入力] 入力データ
    SFXAnsiStringPtr out       // [出力] MD5 ハッシュ値(128 ビット)が格納された場所へのポインタ
    Bool isXdigit              // [入力] 16 進数で出力するかどうか
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定されたデータの MD5 ハッシュ値(128 ビット)を取得します。

[Note] 注意

この関数は、内部で SFBHash クラスを使用します。

[Note] MD5 について

MD5(Message Digest Algorithm 5)とは、 与えられた入力データの 128 ビットのハッシュ値を計算するアルゴリズムです。

詳細は RFC1321: The MD5 Message-Digest Algorithm を参照してください。

参照

SFXMailUtility::GetKeyedMD5 | SFXMailUtility::GetHMACMD5 | SFBHash | RFC1321: The MD5 Message-Digest Algorithm


SFXMailUtility::HexToByte
指定された 2 桁の 16 進数表記の文字列を整数に変換します。
[ public, static ]
SInt16 HexToByte(
    AChar c1   // [入力] 変換する 2 桁の 16 進数の上位桁の文字
    AChar c2   // [入力] 変換する 2 桁の 16 進数の下位桁の文字
);

戻り値

  • 成功したとき: 変換結果の整数値(0〜255)
  • 失敗したとき: -1

解説

この関数は、指定された 2 桁の 16 進数表記の文字列を整数に変換します。

例えば、1B( c1 = '1'、c2 = 'B' ) は 27 に変換します。

[Note] 注意

指定された文字が 16 進数の文字でない場合、変換に失敗します(-1 を返却します)。

参照

SFXMailUtility::HexToNibble


SFXMailUtility::HexToNibble
指定された 1 桁の 16 進数文字を整数に変換します。
[ public, static ]
SInt16 HexToNibble(
    AChar c   // [入力] 変換する 16 進数(文字)
);

戻り値

  • 成功したとき: 変換結果の整数値(0〜15)
  • 失敗したとき: -1

解説

この関数は、指定された 1 桁の 16 進数文字を整数に変換します。

例えば、'1' は 1 に、'B' は 11 に、'f' は 15 に変換します。

[Note] 注意

指定された文字が 16 進数の文字でない場合、変換に失敗します(-1 を返却します)。

参照

SFXMailUtility::HexToByte | SFXMailUtility::NibbleToHex


SFXMailUtility::IsAtext
指定された文字が atext 文字かどうかを判定します。
[ public, static ]
Bool IsAtext(
    AChar c   // [入力] 判定する文字
);

引数

c

判定する文字を指定します。

戻り値

  • atext 文字のとき: true
  • そうでないとき: false

解説

この関数は、指定された文字が atext 文字かどうかを判定します。

[Note] atext について

atext 文字とは、以下のように定義される英数字と "!"、"#"、"$"、"%" などの記号です。

atext       :=       ALPHA / DIGIT / ; Any character except controls,
                    "!" / "#" /     ;  SP, and specials.
                    "$" / "%" /     ;  Used for atoms
                    "&" / "'" /
                    "*" / "+" /
                    "-" / "/" /
                    "=" / "?" /
                    "^" / "_" /
                    "`" / "{" /
                    "|" / "}" /
                    "~"

ALPHA       :=  <any ASCII alphabetic character>  ; ( 0x41 - 0x5A )
DIGIT       :=  <any ASCII decimal digit>         ; ( 0x30 - 0x39 )

atext についての詳細は RFC2822: 3.2.4. Atom を参照してください。

参照

SFXMailUtility::ParseAtom | SFXMailUtility::ParseDate | SFXMailUtility::ParseDotAtom | SFXMailUtility::ParseDotAtomText | SFXMailUtility::IsCTL | SFXMailUtility::IsTokenChar | SFXMailUtility::IsTspecials | SFXMailUtility::IsWSP | RFC2822: 3.2.4. Atom


SFXMailUtility::IsCTL
指定された文字がコントロール文字かどうかを判定します。
[ public, static ]
Bool IsCTL(
    AChar c   // [入力] 判定する文字
);

引数

c

判定する文字を指定します。

戻り値

  • コントロール文字のとき: true
  • そうでないとき: false

解説

この関数は、指定された文字がコントロール文字かどうかを判定します。

[Note] 注意

コントロール文字とは、以下のように定義される "0x00" から "0x1F" までと "0x7F" の文字です。

CTL  =  <any ASCII control character and DEL>  ; ( 0x00 - 0x1F, 0x7F )

参照

SFXMailUtility::IsAtext | SFXMailUtility::IsTokenChar | SFXMailUtility::IsTspecials | SFXMailUtility::IsWSP


SFXMailUtility::IsTokenChar
指定された文字がトークンを構成する文字かどうかを判定します。
[ public, static ]
Bool IsTokenChar(
    AChar c   // [入力] 判定する文字
);

引数

c

判定する文字を指定します。

戻り値

  • トークンを構成する文字のとき: true
  • そうでないとき: false

解説

この関数は、指定された文字がトークンを構成する文字かどうかを判定します。

[Note] トークンを構成する文字

トークンは、以下のように TSPECAIL、スペース、コントロール以外の US-ASCII 文字で構成されます。 具体的には、0x21 から 0x7E までの文字で TSPECAIL でない文字がトークンを構成する文字になります。

token := 1*<any US-ASCII CHAR except SPACE, CTLs, or tspecials>

tspecials :=  "(" / ")" / "<" / ">" / "@" /
              "," / ";" / ":" / "\" / <">
              "/" / "[" / "]" / "?" / "="
              ; Must be in quoted-string,
              ; to use within parameter values
SPACE     :=  <ASCII SP, space> ; ( 32 )

トークンを構成する文字の詳細については RFC2045: Appendix A -- Collected Grammar を参照してください。

参照

SFXMailUtility::ParseToken | SFXMailUtility::IsAtext | SFXMailUtility::IsCTL | SFXMailUtility::IsTspecials | SFXMailUtility::IsWSP | RFC2045: Appendix A -- Collected Grammar


SFXMailUtility::IsTspecials
指定された文字が TSPECIAL 文字かどうかを判定します。
[ public, static ]
Bool IsTspecials(
    AChar c   // [入力] 判定する文字
);

引数

c

判定する文字を指定します。

戻り値

  • TSPECIAL 文字のとき: true
  • そうでないとき: false

解説

この関数は、指定された文字が TSPECIAL 文字かどうかを判定します。

[Note] TSPECIAL 文字

TSPECIAL 文字とは、メールヘッダーのフィールド値の中で使用する場合、 クオート(")しなければいけない記号であり、 以下の文字から構成されます。

tspecials :=  "(" / ")" / "<" / ">" / "@" /
              "," / ";" / ":" / "\" / <">
              "/" / "[" / "]" / "?" / "="
              ; Must be in quoted-string, to use within parameter values

TSPECIAL 文字の詳細については RFC2045: Appendix A -- Collected Grammar を参照してください。

参照

SFXMailUtility::IsAtext | SFXMailUtility::IsCTL | SFXMailUtility::IsTokenChar | SFXMailUtility::IsWSP | RFC2045: Appendix A -- Collected Grammar


SFXMailUtility::IsValidFieldName
指定された文字列がメールヘッダーのフィールド名として有効かどうかを判定します。
[ public, static ]
Bool IsValidFieldName(
    ACharConstPtr start        // [入力] 文字列の先頭へのポインタ
    ACharConstPtr end = null   // [入力] 文字列の終端へのポインタ: デフォルト値は '\0'(この場合、'\0' 文字が終端になる)
);

引数

start

文字列の先頭を指定します。

end

文字列の終端を指定します。 null を指定した場合は '\0' 文字を終端とします。

戻り値

  • 指定された文字列が "0x3A"(=":")を除く US-ASCII 値 "0x21" から "0x7E" の文字で構成されているとき: true
  • そうでないとき: false

解説

この関数は、 指定された文字列がメールヘッダーのフィールド名として有効かどうかを判定します。

[Note] 注意

メールヘッダーのフィールド名は、"0x3A"(=":")を除く US-ASCII 値 "0x21" から "0x7E" までの文字で構成される必要があります。

参照

SFXMailUtility::ParseHeaderLine


SFXMailUtility::IsWSP
指定された文字が WSP 文字(空白文字または TAB 文字)かどうかを判定します。
[ public, static ]
Bool IsWSP(
    AChar c   // [入力] 判定する文字
);

引数

c

判定する文字を指定します。

戻り値

  • 空白文字のとき: true
  • そうでないとき: false

解説

この関数は、指定された文字が WSP 文字(空白文字または TAB 文字)かどうかを判定します。

[Note] 注意

空白文字の US-ASCII コードは "0x20"、TAB 文字の US-ASCII コードは "0x09" です。

参照

SFXMailUtility::SkipWSP | SFXMailUtility::IsAtext | SFXMailUtility::IsCTL | SFXMailUtility::IsTokenChar | SFXMailUtility::IsTspecials | RFC2822: 2.2.2. Structured Header Field Bodies


SFXMailUtility::JISToShiftJIS
指定された JIS コード(iso-2022-jp)の文字列を Shift_JIS コードに変換します。
[ public, static ]
SFCError JISToShiftJIS(
    SFXAnsiStringConstRef in   // [入力] 変換元の JIS コード文字列への参照
    SFXAnsiStringPtr out       // [出力] 変換後の Shift_JIS コード文字列が格納された場所へのポインタ
    AChar unconvChar = '\0'    // [入力] 変換できない文字の代替文字: デフォルト値は '\0'(代替文字は使用されない)
);

引数

in

変換元の文字列です。JIS コード ( iso-2022-jp ) の文字列を指定します。

out

変換後の Shift_JIS コード文字列が格納された場所へのポインタが返却されます。

unconvChar

変換できない文字に関する代替文字を指定します。 引数を指定しない場合のデフォルト値は '\0' です(このとき、代替文字は使用されません)。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 変換できない文字があったとき: SFERR_INVALID_FORMAT
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 指定された JIS コード(iso-2022-jp)の文字列を Shift JIS コードに変換します。

unconvChar 引数を指定した場合、 変換できない文字は unconvChar 引数に指定した代替文字で置き換えられ、 戻り値は SFERR_NO_ERROR になります。

[Note] 注意

半角カナもサポートしています。

[Note] JIS コード(iso-2022-jp)について

JIS コード(iso-2022-jp)は、メールで使用される文字符号化方式です。

参照

SFXMailUtility::ShiftJISToJIS | RFC1468: Japanese Character Encoding for Internet Messages


SFXMailUtility::NibbleToHex
指定されたバイト値を 16 進数の文字に変換します。
[ public, static ]
AChar NibbleToHex(
    Byte nibble   // [入力] 変換する数値(0 〜 15)
);

戻り値

  • 成功したとき: 変換に成功した値(0 〜 15)
  • 失敗したとき: -1 を AChar でキャストした値

解説

この関数は、指定されたバイト値を 16 進数の文字に変換します。

例えば、1 は '1'、11 は 'B' に変換されます。

[Note] 注意

指定された数値が 16 以上である場合、変換に失敗します(-1 を AChar でキャストした値が返却されます)。

参照

SFXMailUtility::HexToNibble | SFXMailUtility::HexToByte


SFXMailUtility::ParseAddrSpec
指定された文字列からメールアドレス(addr-spec)を取得します。
[ public, static ]
SFCError ParseAddrSpec(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果のメールアドレス(addr-spec)が格納された場所へのポインタ
);

引数

start

解析する文字列の先頭へのポインタを指定します。

end

解析する文字列の終端へのポインタを指定します。 このポインタが指し示す文字自体は解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果のメールアドレス(addr-spec)が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列からメールアドレス(addr-spec)を取得します。

From: フィールドや To: フィールドのメールアドレスを解析する場合は、 SFXMailUtility::ParseMailbox 関数や SFXMailUtility::ParseMailboxList 関数を使う必要があります。

[Note] メールアドレス(addr-spec)について

メールアドレス(addr-spec)の詳細は、 RFC2822: 3.4.1. Addr-spec specification を参照してください。

参照

SFXMailUtility::ParseDotAtom | SFXMailUtility::SkipWSP | RFC2822: 3.4.1. Addr-spec specification


SFXMailUtility::ParseAtom
指定された文字列から atom を取得します。
[ public, static ]
SFCError ParseAtom(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果の atom が格納された場所へのポインタ
);

引数

start

解析する文字列の先頭へのポインタを指定します。

end

解析する文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の atom が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から atom を取得します。

[Note] atom について

atom の詳細は、 RFC2822: 3.2.4. Atom を参照してください。

参照

SFXMailUtility::ParseDotAtom | SFXMailUtility::ParseDotAtomText | SFXMailUtility::SkipWSP | SFXMailUtility::IsAtext | RFC2822: 3.2.4. Atom


SFXMailUtility::ParseContentType
指定された文字列から Content-Type フィールドの値を取得します。
[ public, static ]
SFCError ParseContentType(
    SFXAnsiStringConstRef fieldValue   // [入力] 解析対象文字列
    SFXAnsiStringPtr mainType          // [出力] 解析結果の Content-Type の type が格納された場所へのポインタ
    SFXAnsiStringPtr subType           // [出力] 解析結果の Content-Type の subType が格納された場所へのポインタ
    SFXPropertyPtr paramList           // [出力] 解析結果の パラメータリストが格納された場所へのポインタ
);

引数

fieldValue

解析対象文字列を指定します。

mainType

解析結果の Content-Type type が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

subType

解析結果の Content-Type subType が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

paramList

解析結果のパラメータリストへのポインタが格納されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から Content-Type フィールドの値を取得します。

[Note] Content-Type について

Content-Type の詳細は、 RFC2045: 5. Content-Type Header Field を参照してください。

参照

SFXMailUtility::ParseParameterList | SFXMailUtility::ParseParameter | SFXMailUtility::ParseToken | SFXMailUtility::SkipWSP | RFC2045: 5. Content-Type Header Field


SFXMailUtility::ParseDate
指定された文字列から日時を取得します。
[ public, static ]
SFCError ParseDate(
    ACharConstPtr start     // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end       // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next   // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXDatePtr date         // [出力] 日時が格納された場所へのポインタ
    SInt16Ptr zone          // [出力] タイムゾーンが格納された場所へのポインタ
);
[ public, static ]
SFCError ParseDate(
    SFXAnsiStringConstRef str   // [入力] 解析対象文字列
    SFXDatePtr date             // [出力] 解析結果の日時が格納された場所へのポインタ
    SInt16Ptr zone              // [出力] 解析結果のタイムゾーンが格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

dateTime

解析結果の日時が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

zone

解析結果の日時のタイムゾーン(UTC に対する時差)が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

str

解析対象文字列を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から日時を取得します。

[Note] 日時 について

日時の詳細は、 RFC2822: 3.3. Date and Time Specification を参照してください。

参照

SFXDate::Parse | SFXMailUtility::SkipWSP | SFXDate | RFC2822: 3.3. Date and Time Specification


SFXMailUtility::ParseDotAtom
指定された文字列から dot-atom を取得します。
[ public, static ]
SFCError ParseDotAtom(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果の dot-atom が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の dot-atom が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から dot-atom を取得します。

[Note] 注意

文字列の先頭と終端に空白を許す点においてのみ、dot-atom は dot-atom-text と異なります。

この関数は、文字列の初めの空白文字を読み飛ばします。

[Note] dot-atom について

dot-atom の詳細は、 RFC2822: 3.2.4. Atom を参照してください。

参照

SFXMailUtility::ParseAtom | SFXMailUtility::ParseDotAtomText | SFXMailUtility::IsAtext | RFC2822: 3.2.4. Atom


SFXMailUtility::ParseDotAtomText
指定された文字列から dot-atom-text を取得します。
[ public, static ]
SFCError ParseDotAtomText(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果の dot-atom-text が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の dot-atom-text が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から dot-atom-text を取得します。

[Note] 注意

dot-atom-text とは、atext と ピリオド '.' からなる文字列です。 ピリオドを 2 つ続けたり、文字列の先頭や終端に置けません。

この関数は、文字列の初めの空白文字を読み飛ばしません。

文字列の初めが空白文字の場合は SFERR_INVALID_FORMAT を返します。

[Note] dot-atom-text について

dot-atom-text の詳細は、 RFC2822: 3.2.4. Atom を参照してください。

参照

SFXMailUtility::ParseAtom | SFXMailUtility::ParseDate | SFXMailUtility::ParseDotAtom | SFXMailUtility::IsAtext | RFC2822: 3.2.4. Atom


SFXMailUtility::ParseHeaderLine
指定された文字列からメールヘッダーの 1 行を取得します。
[ public, static ]
SFCError ParseHeaderLine(
    ACharConstPtr start       // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end         // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next     // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value1   // [出力] 解析結果のフィールド名が格納された場所へのポインタ
    SFXAnsiStringPtr value2   // [出力] 解析結果のフィールド値が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value1

解析結果のフィールド名が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

value2

解析結果のフィールド値が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列からメールメッセージのヘッダーの 1 行を取得します。

[Note] 注意

ヘッダーが複数行に分割されている(2 行目以降が WSP から始まる)場合も正しく取得できます。

[Note] メールメッセージのヘッダーについて

メールメッセージのヘッダーの詳細は、 RFC2822: 2.2. Header Fields を参照してください。

参照

SFXMailUtility::SkipWSP | SFXMailUtility::IsValidFieldName | SFXMailUtility::IsWSP | RFC2822: 2.2. Header Fields


SFXMailUtility::ParseMailbox
指定された文字列からメールアドレス(mailbox)を取得します。
[ public, static ]
SFCError ParseMailbox(
    ACharConstPtr start     // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end       // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next   // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr name   // [出力] 解析結果の名前が格納された場所へのポインタ
    SFXAnsiStringPtr addr   // [出力] 解析結果のメールアドレス(mailbox)が格納された場所へのポインタ
);
[ public, static ]
SFCError ParseMailbox(
    SFXAnsiStringConstRef str   // [入力] 解析対象文字列
    SFXAnsiStringPtr name       // [出力] 解析結果の名前が格納された場所へのポインタ
    SFXAnsiStringPtr addr       // [出力] 解析結果のメールアドレス(mailbox)が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

name

解析結果の名前が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

addr

解析結果のメールアドレスが格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

str

解析対象文字列を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列からメールアドレス(mailbox)を取得します。

この関数は、次の (1)、(2) の addr-spec 形式、(3) の name-addr 形式を解析できます。

  1. my@example.com

  2. my@example.com (My Name)

  3. My Name <my@example.com>

(2)、(3)の場合、ディスプレイネーム(My Name)も取得できます。 この関数は単一の mailbox しか解析できません。

mailbox のリストを取得する場合は SFXMailUtility::ParseMailboxList 関数を使います。

[Note] メールアドレス(mailbox)について

メールアドレス(mailbox)の詳細は、 RFC2822: 3.4.1. Addr-spec specification を参照してください。

参照

SFXMailUtility::ParseMailboxList | SFXMailUtility::ParseAddrSpec | SFXMailUtility::ParsePhrase | SFXMailUtility::SkipWSP | RFC2822: 3.4.1. Addr-spec specification


SFXMailUtility::ParseMailboxList
指定された文字列からメールアドレスのリスト (mailbox-list)を取得します。
[ public, static ]
SFCError ParseMailboxList(
    ACharConstPtr start       // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end         // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next     // [出力] 次の解析対象文字列の先頭へのハンドル
    MailboxHandle mailboxes   // [出力] 解析結果のメールアドレスのリストが格納された場所へのハンドル
    SInt32Ptr mbxCount        // [出力] 解析結果のメールアドレスの数が格納された場所へのポインタ
);
[ public, static ]
SFCError ParseMailboxList(
    SFXAnsiStringConstRef str   // [入力] 解析対象文字列
    MailboxHandle mailboxes     // [出力] 解析結果のメールアドレスのリストが格納された場所へのハンドル
    SInt32Ptr mbxCount          // [出力] 解析結果のメールアドレスの数が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

mailboxes

解析結果のメールアドレスのリストが格納された場所へのハンドルが返却されます。 SFXMailUtility::Mailbox の配列が渡されます。

配列は、呼び出し側が "::delete[]" で解放する必要があります。 取得する必要がない場合は null を指定します。

mbxCount

解析結果のメールアドレスの数が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

str

解析対象文字列を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列からメールアドレスのリスト(mailbox-list)を取得します。

[Note] メールアドレスのリスト (mailbox-list)について

メールアドレスのリスト (mailbox-list)の詳細は、 RFC2822: 3.4.1. Addr-spec specification を参照してください。

参照

SFXMailUtility::ParseMailbox | SFXMailUtility::SkipWSP | RFC2822: 3.4.1. Addr-spec specification


SFXMailUtility::ParseParameter
指定された文字列から "attribute = value" で表されるパラメータを取得します。
[ public, static ]
SFCError ParseParameter(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr name    // [出力] 解析結果の属性名(attribute)が格納された場所へのポインタ
    SFXAnsiStringPtr value   // [出力] 解析結果の属性値(value)が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

name

解析結果の属性名(attribute)が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の属性値が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から "attribute = value" を表されるパラメータを取得します。

[Note] 注意

この関数は単一のパラメータしか解析できません。

パラメータのリストを取得する場合は SFXMailUtility::ParseParameterList 関数を使用します。

[Note] "attribute = value" で表されるパラメータについて

attribute = value を表すパラメータの詳細は、 RFC2045: 5. Content-Type Header Field を参照してください。

参照

SFXMailUtility::ParseParameterList | SFXMailUtility::ParseQuotedString | SFXMailUtility::ParseToken | SFXMailUtility::SkipWSP | RFC2045: 5. Content-Type Header Field


SFXMailUtility::ParseParameterList
指定された文字列から "attribute1 = value2; attribute2 = value2; ..." で表されるパラメータリストを取得します。
[ public, static ]
SFCError ParseParameterList(
    ACharConstPtr start        // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end          // [入力] 解析対象文字列の終端へのポインタ
    SFXPropertyPtr paramList   // [出力] 解析結果のパラメータリストが格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

paramList

解析結果のパラメータのリストが格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から "attribute1 = value2; attribute2 = value2; ..." で表されるパラメータリストを取得します。

[Note] "attribute1 = value2; attribute2 = value2; ..." で表されるパラメータについて

attribute = value を表すパラメータの詳細は、 RFC2045: 5. Content-Type Header Field を参照してください。

参照

SFXMailUtility::ParseParameter | SFXMailUtility::SkipWSP | RFC2045: 5. Content-Type Header Field


SFXMailUtility::ParsePhrase
指定された文字列から phrase を取得します。
[ public, static ]
SFCError ParsePhrase(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果の phrase が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の phrase が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から phrase を取得します。

[Note] 注意

phrase は、1 つ以上の word から構成されています。

この関数は、 全ての word をひとつの空白文字でつなげた、 クオートされていない文字列を返します。

[Note] phrase について

phrase の詳細は、 RFC2822: 3.2.6. Miscellaneous tokens を参照してください。

参照

SFXMailUtility::ParseMailbox | SFXMailUtility::ParseWord | SFXMailUtility::SkipWSP | RFC2822: 3.2.6. Miscellaneous tokens


SFXMailUtility::ParseQuotedString
指定された文字列から quoted-string を取得します。
[ public, static ]
SFCError ParseQuotedString(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果の quoted-string が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の quoted-string が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から quoted-string を取得します。

[Note] quoted-string について

quoted-string の詳細は、 RFC2822: 3.2.5. Quoted strings を参照してください。

参照

SFXMailUtility::SkipWSP | RFC2822: 3.2.5. Quoted strings


SFXMailUtility::ParseToken
指定された文字列から token を取得します。
[ public, static ]
SFCError ParseToken(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果の token が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の token が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から token を取得します。

[Note] トークンを構成する文字

トークンは、以下のように TSPECAIL、スペース、コントロール以外の US-ASCII 文字で構成されます。

token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,
            or tspecials>

tspecials :=  "(" / ")" / "<" / ">" / "@" /
              "," / ";" / ":" / "\" / <">
              "/" / "[" / "]" / "?" / "="
              ; Must be in quoted-string,
              ; to use within parameter values

トークンを構成する文字の詳細については RFC2045: Appendix A -- Collected Grammar を参照してください。

参照

SFXMailUtility::IsTokenChar | SFXMailUtility::ParseContentType | SFXMailUtility::SkipWSP | RFC2045: Appendix A -- Collected Grammar


SFXMailUtility::ParseWord
指定された文字列から word を取得します。
[ public, static ]
SFCError ParseWord(
    ACharConstPtr start      // [入力] 解析対象文字列の先頭へのポインタ
    ACharConstPtr end        // [入力] 解析対象文字列の終端へのポインタ
    ACharConstHandle next    // [出力] 次の解析対象文字列の先頭へのハンドル
    SFXAnsiStringPtr value   // [出力] 解析結果の word が格納された場所へのポインタ
);

引数

start

解析対象文字列の先頭へのポインタを指定します。

end

解析対象文字列の終端へのポインタを指定します。 このアドレスが指し示す文字自体は、解析対象に含まれません。

next

次の解析対象文字列の先頭へのハンドルが返却されます。 取得する必要がない場合は null を指定します。

value

解析結果の word が格納された場所へのポインタが返却されます。 取得する必要がない場合は null を指定します。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • start 引数の値が end 引数の値以上であるとき: SFERR_INVALID_PARAM
  • 文字列の書式が間違っているとき: SFERR_INVALID_FORMAT
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、指定された文字列から word を取得します。

[Note] word について

word の詳細は、 RFC2822: 3.2.6. Miscellaneous tokens を参照してください。

参照

SFXMailUtility::ParseAtom | SFXMailUtility::ParseQuotedString | SFXMailUtility::SkipWSP | RFC2822: 3.2.6. Miscellaneous tokens


SFXMailUtility::ShiftJISToJIS
指定された Shift_JIS コードの文字列を JIS コード(iso-2022-jp)に変換します。
[ public, static ]
SFCError ShiftJISToJIS(
    SFXAnsiStringConstRef in   // [入力] 変換元の Shift_JIS コード文字列への参照
    SFXAnsiStringPtr out       // [出力] 変換後の JIS コード文字列が格納された場所へのポインタ
    AChar unconvChar = '\0'    // [入力] 変換できない文字の代替文字: デフォルト値は '\0'(代替文字は使用されない)
);

引数

in

変換元の Shift_JIS コード文字列を指定します。

out

変換後の JIS コード文字列が格納された場所へのポインタが返却されます。

unconvChar

変換できない文字に関する代替文字を指定します。 引数を指定しない場合のデフォルト値は '\0' です(このとき、代替文字は使用されません)。

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 変換できない文字があったとき: SFERR_INVALID_FORMAT
  • out 引数が null であるとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY

解説

この関数は、 指定された Shift_JIS コードの文字列を JIS コード(iso-2022-jp)に変換します。

unconvChar 引数を指定した場合、 変換できない文字は unconvChar 引数に指定した代替文字で置き換えられ、 戻り値は SFERR_NO_ERROR になります。

[Note] 注意

半角カナもサポートしています。

[Note] JIS コード(iso-2022-jp)について

JIS コード(iso-2022-jp)は、メールで使用される文字符号化方式です。

参照

SFXMailUtility::JISToShiftJIS | RFC1468: Japanese Character Encoding for Internet Messages


SFXMailUtility::SkipUntilCRLF
ポインタを次の CRLF の次の文字または '\0' 文字の位置まで進めます。
[ public, static ]
Void SkipUntilCRLF(
    ACharConstHandle start   // [入力] 探索のスタート位置へのポインタ、[出力] 次の CRLF の次の文字または '\0' 文字の位置へのポインタ
);

解説

この関数は、ポインタを start 引数に格納された位置からスタートして、 次の CRLF の次の文字または '\0' の位置まで進めます。

start 引数には、LF の 1 つ後ろの文字、 または '\0' を指すポインタが返却されます。

[Note] 注意

次の CRLF がない場合は、 入力文字列の終端である '\0' 文字を指すポインタが返却されます。


SFXMailUtility::SkipWSP
ポインタを WSP(空白文字または水平タブ)以外の文字まで進めます。
[ public, static ]
Void SkipWSP(
    ACharConstHandle start   // [入力] 探索のスタート位置へのポインタ、[出力] WSP(空白文字または水平タブ)以外の文字の位置または探索対象の文字列の終端へのポインタ
    ACharConstPtr end        // [入力] 探索対象の文字列の終端へのポインタ
);

解説

この関数は、ポインタを start 引数に格納された位置からスタートして、次の WSP(空白文字または水平タブ)以外の文字の位置まで進めます。

start 引数には、次の WSP(空白文字または水平タブ)以外の文字を指すポインタが返却されます。

WSP(空白文字または水平タブ)以外の文字が見つからなかった場合、 start 引数には探索対象の文字列の終端へのポインタ(end 引数と同じ値)が返却されます。

[Note] 注意

探索のスタート位置が終了位置(end 引数に格納されている位置)よりも右にある場合は何も行いません。

参照

SFXMailUtility::IsWSP


SFXMailUtility::Mailbox
メールアドレスを表す構造体です。
struct Mailbox {
    SFXAnsiString   name;  // ディスプレイネーム
    SFXAnsiString   addr;  // メールの addr-spec
};

解説

name はメールのディスプレイネームを、addr はメールの addr-spec を表します。

SFXMailUtility::Mailbox 構造体のデータは SFXMailUtility::ParseMailbox 関数と SFXMailUtility::ParseMailboxList 関数を使用して取得できます。

参照

SFXMailUtility::ParseMailbox | SFXMailUtility::ParseMailboxList