メインコンテンツまでスキップ

4. データ形式 (Data Formats)

アトム (Atom) は、1つ以上の非特殊文字で構成されます。

4.2. 数値 (Number)

数値 (Number) は、1つ以上の数字文字で構成され、数値を表します。

4.3. 文字列 (String)

文字列 (String) には2つの形式があります。リテラル (Literal) または引用符付き文字列 (Quoted String) です。リテラル形式は文字列の一般的な形式です。引用符付き文字列形式は、使用可能な文字の制限というコストと引き換えに、リテラル処理のオーバーヘッドを回避する代替手段です。

リテラルは、0個以上のオクテット (CR および LF を含む) のシーケンスであり、開き波括弧 (")、オクテット数、閉じ波括弧 (")、および CRLF の形式でオクテット数を前置引用符で囲みます。サーバーからクライアントに送信されるリテラルの場合、CRLF の直後にオクテットデータが続きます。クライアントからサーバーに送信されるリテラルの場合、クライアントは必須 (MUST) オクテットデータ (およびコマンドの残り) を送信する前に、コマンド継続リクエスト (このドキュメントの後半で説明) を受信するまで待機する必要があります。

引用符付き文字列は、CR および LF を除く、0個以上の7ビット文字のシーケンスであり、両端に二重引用符 (<">) 文字があります。

空文字列は、"" (二重引用符の間に0文字の引用符付き文字列) または CRLF に続く 0 (オクテット数が0のリテラル) のいずれかで表されます。

注記: オクテット数が0の場合でも、リテラルを送信するクライアントは必須 (MUST) コマンド継続リクエストを受信するまで待機する必要があります。

4.3.1. 8ビットおよびバイナリ文字列 (8-bit and Binary Strings)

8ビットテキストおよびバイナリメールは、[MIME-IMB] コンテンツ転送エンコーディング (Content Transfer Encoding) の使用を通じてサポートされます。IMAP4rev1 実装は可能 (MAY) リテラルで8ビットまたはマルチオクテット文字を送信できますが、[CHARSET] が識別されている場合にのみ推奨 (SHOULD) します。

BINARY 本文エンコーディング (Body Encoding) が定義されていますが、エンコードされていないバイナリ文字列は許可されていません。「バイナリ文字列 (Binary String)」は、NUL 文字を含む任意の文字列です。実装は必須 (MUST) データを送信する前に、バイナリデータを BASE64 などのテキスト形式にエンコードする必要があります。過剰な量の CTL 文字を含む文字列は可能 (MAY) バイナリと見なされる場合があります。

4.4. 括弧付きリスト (Parenthesized List)

データ構造 (Data Structures) は、「括弧付きリスト (Parenthesized List)」として表されます。これは、スペースで区切られ、両端が括弧で囲まれたデータ項目のシーケンスです。括弧付きリストには、入れ子を示すために複数レベルの括弧を使用して、他の括弧付きリストを含めることができます。

空のリストは () として表されます。これは、メンバーのない括弧付きリストです。

4.5. NIL

特殊形式 "NIL" は、文字列または括弧付きリストとして表される特定のデータ項目の非存在を表します。これは、空文字列 "" または空の括弧付きリスト () とは異なります。

注記: NIL は、アトムの形式を取る任意のデータ項目には決して使用されません。例えば、"NIL" のメールボックス名は、存在しないメールボックス名ではなく、NIL という名前のメールボックスです。これは、メールボックスがアトムまたは文字列である "astring" 構文を使用するためです。逆に、NIL の addr-name は存在しない個人名です。これは、addr-name が NIL または文字列であるが決してアトムではない "nstring" 構文を使用するためです。