CommuniGate Pro
Version 5.1
アプリケーション
 
 
 
XIMSS

XIMSS プロトコル

CommuniGate Pro サーバーは、XIMSS インターフェイス( メッセージング/ スケジューリング/ シグ ナリングに対するXML インターフェイス) 用のプロトコル(XIMSS プロトコル) をサポートしています。

XIMSS インターフェイスは、XIMSS モジュール (TCP/IP ネットワークをサポート) によって実装されます。

以下では、XIMSS プロトコルセッションの例を掲載してあります。例ではいずれも、S: マーカー は、サーバーから送信されたデータを表します。また、C: マーカーは、クライアントから送信され たデータを表します。

プロトコルとメッセージのシンタックス

XML API クライアントからは、クリアテキスト接続またはセキュアTCP 接続でCommuniGate Pro サーバーのXML モジュールに接続しなければなりません。接続の確立後、XML API クライアントと XML モジュールとの間でメッセージの送受信が可能になります。

送受信されるメッセージはいずれもテキスト文字列でなければならず、また末尾は2 進数0 バイト (NULL 終端文字) で終わらなければなりません。送受信されるメッセージは、XML ドキュメントと してフォーマットされていなければなりません。

何らかの処理を行う場合、またはデータを取り出す場合、クライアントからサーバーに要求メッセー ジを送信します。この要求メッセージには属性id を格納しなければなりません。

サーバーで要求された処理が完了すると、サーバーから応答メッセージがクライアントに返されま す。このときの応答コマンドは次の通りです。

response

属性:
id
応答の属性id で、要求メッセージの属性id の値と同じです。
errorText
オプションの属性。処理が失敗したときに付加されます。エラーメッセージのテキス トが格納されています。
errorNum
オプションの属性。処理が失敗したときに付加されます。エラーメッセージコード (数値)が格納されています。
例:
C:<noop id="A001"/>
S:<response id="A001"/>
C:<myCommand id="A002" myParam="user1@example.dom" />
S:<response id="A002" errorText="unknown command" errorNum="500" />

クライアント側では、カレントの要求の応答を待たずに次の要求メッセージを送信できます(パイプ ライン処理)。

次の場合、サーバーからクライアントにデータメッセージ(データが格納されたメッセージ)が送信 されます。
例:
C:<noop id="A001"/>
S:<alert>Account is over quota</alert>
S:<response id="A001"/>
S:<alert>Please logout, as we are shutting down.</alert>

注意: クライアント側では、少なくても10 分に一度はサーバーにコマンドを送信しなければなりま せん。そうでない場合、サーバーによって接続が閉じられます。


ログイン処理

クライアントからログイン処理が可能です。ログイン処理は、サーバーとの接続の確立後、すぐに行 わなければなりません。

When a connection is established, the Server takes the IP Address the client has connected to and selects the ドメイン this IP address is assigned to.

Operations in this section can explicitly specify an alternative target Domain: if it is found, the new target Domain is set and it is used in the next operations.

listFeatures
This operation tells the server to return a features message containing available communication and authentication options.
属性:
domain
optional target ドメイン name.
readStrings
This operation reads the vocabulary (words, tags, button names, etc.) stored on the Server. The Server sends a strings data message with the dictionary data (see below).
属性:
language
the vocabulary language. If the attribute is missing, the Account Language preference string is used.
starttls
This operation tells the server to establish SSL/TLS security on this connection.
属性:
domain
optional target ドメイン name.

If the server returns a positive response, the client should start SSL/TLS negotiations immediately.

recoverPassword
This operation asks the server to E-mail the password of the specified Account to the E-mail address the Account user has specified.
属性:
domain
optional target ドメイン name.
userName
the Account name.

If the server returns a positive response, the Account password has been E-mailed.
注意: this operation introduces a delay before returning a response.

signup
This operation tells the Server to create a new Account.
属性:
domain
optional target ドメイン name.
userName
the new Account name.
password
the new Account password.
realName
a Real Name of the new Account owner (オプション).
recoverPassword
an E-mail address that can be used to recover a forgotten password (オプション).

If the server returns a positive response, the Account has been created.
注意: this operation does not log user into a newly created Account.
注意: this operation introduces a delay before returning a response.

login
属性:
domain
optional target ドメイン name.
method
この属性の値は、使用するSASL 方式です。この属性がない場合、認証方式としては クリアテキスト(パスワード) 方式が使用されます。
authData
認証方式がクリアテキスト方式の場合、この属性の値はユーザー名(アドレス) です。 クリアテキスト方式以外の認証方式の場合、値は、base64 エンコードSASL プロトコ ルデータです。
password
この属性は、認証方式がクリアテキスト方式のときにのみ必要です。ユーザーのパス ワード(クリアテキスト形式) です。
例:
C:<login id="A001" authData="user1@example.dom" password="123rtu" />
S:<session id="A001" urlID="12-skejlkieuoiuoi-dnciru" userName="user1@example.dom" realName="User J. Smith"/>
S:<response id="A001"/>

The Server sends the following data messages:

features
This synchronous data message is sent when the Server processes the listFeatures operation.
ボディ:
a set of XML elements:
domain
the target Domain name.
sasl
the text body of this element is the name of the SASL mechanism enabled for the target Domain.
starttls
if this element is present, the client can perform the starttls operation.
language
the text body of this element contains the default language selected for the target Domain. If this element is absent, the default (English) language is selected.
signup
if this element is present, the client can perform the signup operation with the target Domain.
session
このメッセージには、新規に生成されたセッションに関する情報が格納されています。
属性:
urlID
セッションID 文字列。このセッションID を使って、アップロード済みファイルセットを介してセッションデータにアクセスできます。
userName
認証済みのアカウントの正式名(accountName@domainName の形式)。
realName
the authenticated Account user Real Name (this attribute is absent if the Real Name is not specified in the Account Settings).
例:
C:<login id="A001" authData="user1@example2.dom" password="rrr123" />
S:<response id="A001" errorCode="account has been moved to a remote system" errorNum="518" />

使用されるSASL 方式で、サーバーからクライアントにチャレンジが送信される場合、自動的にチャ レンジデータメッセージがクライアントに送られます。このチャレンジデータメッセージには、属性 value (値は、base64 エンコードSASL プロトコルチャレンジデータ) が格納されています。
クライアントでチャレンジデータメッセージが受信されたときには、auth 要求を応答としてサー バーに返さなければなりません。このauth 要求には、属性id (値は、login 要求の属性id の値 と同じ)、属性value (値は、base64 エンコードSASL プロトコル応答データ) を格納します。

Example (see RFC2195):
C:<login id="A001" method="CRAM-MD5" />
S:<challenge value="PDE4OTYuNjk3MTcwOTUyQHBvc3RvZmZpY2UucmVzdG9uLm1jaS5uZXQ+" />
C:<auth id="A001" value="dGltIGI5MTNhNjAyYzdlZGE3YTQ5NWI0ZTZlNzMzNGQzODkw" />
S:<session id="A001" urlID="12-skejlkieuoiuoi-dnciru" userName="user1@example.dom" realName="User J. Smith"/>
S:<response id="A001"/>

サービス処理

以下は、サービス処理に関するコマンドです。クライアント/ サーバー間の接続の制御が可能です。

noop
このコマンドでは、サーバー側では何も実行されません。処理は必ず成功します。
bye
この処理は必ず成功します。このコマンドをサーバーに送信すると、サーバーから応答メッ セージが返った後、サーバーにより接続が閉じられます。同時に、カレントのセッションが 削除されます。
passwordModify
This operation modifies the Account Password and/or the Password Recovery E-mail Address.
属性:
oldPassword
the current Account password. The operation verifies this password before attempting any modification.
newPassword
this optional attribute specifies the new password. The password modification operation must be allowed for this Account.
recoveryEMail
this optional attribute specifies the new password recovery E-mail.
SMIMEUnlock
サーバーに保存されているアカウントの秘密鍵(プライベートキー) のロックを解除できます。
秘密鍵のロックの解除後、サーバーによりメッセージ(readFolder で取り出されたメッ セージ) の暗号化パートが復号化されます。
サーバーではまた、クライアントから送信されたメッセージの暗号化やデジタル署名の付加 も可能です。
注意: このコマンドでは、ロック解除文字列(パスワード) がクリアテキストでサーバーに 渡されます。したがって、クライアントアプリケーションでは、このコマンドをセキュア (TLS) 接続で使用しなければなりません。
注意: 秘密鍵のロックは、カレントのセッションに限って解除されます。そのため、同じア カウントについて再度セッションを開く場合、そのセッションでロックをもう一度解除しな ければなりません。秘密鍵は、一定時間(属性duration で指定可) が経過すると自動的に 再ロックされます。
属性:
password
ロック解除文字列(パスワード)
duration
時間の長さ(秒)。この時間の長さだけ秘密鍵のロックが解除されます。この属 性がない場合、秘密鍵のロックは180 秒間(3 分間) 解除されます。
SMIMEModifyPassword
このコマンドを使って、アカウントの秘密鍵の保護に使われているパスワード( ロック解除 文字列) を変更できます。このコマンドを実行する前にまず、既存のパスワードを使って秘 密鍵のロックを解除しておくことが必要です。
注意: このコマンドでは、パスワードがクリアテキストでサーバーに渡されます。したがっ て、クライアントアプリケーションでは、このコマンドをセキュア(TLS) 接続で使用しな ければなりません。
属性:
password
新規(変更後)のロック解除文字列(パスワード)
SMIMELock
このコマンドでは、サーバーに保存されているアカウントの秘密鍵をロックできます。
clearUploaded
アップロード済みファイルセットのいずれかのファイルまたは全ファイルを削除できます。
属性:
uploadID
オプションの属性。ファイルID を指定しておくと、そのファイルだけがアップロード 済みファイルセットから削除されます。
この属性が指定されていない場合、アップロード済みファイルセットの中のファイル がすべて削除されます。
readStrings
このコマンドでは、サーバーに格納されている語彙(語、タグ、ボタン名など) を読み取る ことができます。サーバーからは、語彙を格納した文字列データメッセージが返ります。
属性:
language
オプションの属性。語彙の言語です。
readTime
このコマンドを使って、サーバーのカレントの時刻を読み取れます。
readStatus
This operation reads the current Account status. The Server sends a currentStatus message.
listKnownValues
This operation causes the Server to send a knownValues message. This message contains sets of "known values": known Time Zone names, character set names, etc.
cliExecute
This operation executes a Network CLI command.
ボディ:
the CLI command text
If the CLI command produces a result, the Server sends a cliResult message.
retrieveXML
リモートサーバーからXML ドキュメントを取り出せます。
属性:
url
XML ドキュメントのURL (http: またはhttps:) です。このXML ドキュメントが 取り出されます。
XML ドキュメントの取り出しに成功した場合、サーバーからretrievedXML メッ セージが返ります。このメッセージには、取り出されたドキュメントの内容が格納さ れています。
spellerList
This operation causes the Server to send speller messages, containing the names of installed spell checkers.
spellerCheck
This operation checks the spelling of an arbitrary text. For each spelling error found, the Server sends a spellerReport message.
属性:
speller
the spell checker name.

ボディ:
the text to check.

The Server can send the following service data messages at any time:

alert
認証済みのアカウントでアラートが受信された場合、このメッセージがクライアントに送信 されます。アラートメッセージの送信後、そのアラートメッセージには「確認」とマークさ れます。
ボディ:
( コマンドの内容)

以下は、サーバーからクライアントに送信されるデータメッセージです。

strings
クライアントからreadStrings 要求(語彙の読み取り)が送信され、その要求がサーバー で正常に処理された場合、このメッセージがクライアントに送られます。
属性:
language
the selected langauge.

ボディ:
サブ要素strings とサブ要素string のセット。どちらの要素にもそれぞれ属性 name があります。属性name の値は、語彙(語、タグ、ボタン名など) の名前(キー) です。
語彙が文字列(単一)の場合、サブ要素string を使って示されます。サブ要素 string のボディは、その要素(語彙)の値です。
語彙が辞書の場合、サブ要素strings を使って示されます。サブ要素strings のボ ディは、サブ要素string のセットです。
例:
下記は、サーバーからデフォルトの語彙(英語) を読み取る場合の例です。
C:<readStrings id="A001">
S:<strings id="A001" language="" >
    <string name="AppendButton">Append</string>
    <strings name="AppendModes">
      <string name="simple">Simple Mode</string>
      <string name="advanced">Advanced Mode</string>
    </strings>
  </strings>

S:<response id="A001"/>
currentTime
サーバーでクライアントからのreadTime 要求が処理された場合、このメッセージがクライ アントに送信されます。
属性:
gmtTime
カレントのサーバータイム(GMT)。
localTime
カレントのサーバータイム(選択されているタイムゾーンの時刻)。
currentStatus
These messages are sent when the Server processes the readStatus request.
ボディ:
a set of XML elements:
messageStore
The information about the Account Message Storage.
属性:
used
the currently used storage (in bytes).
limit
the storage quota. This attribute is absent if the quota is set to Unlimited.
PrevLogin
The information about the previous successful login.
属性:
gmtTime
the login time (GMT).
localTime
the login time (in the selected time zone).
ip
the network address from which the user logged in.
LastFailedLogin
The information about the last failed login.
属性:
gmtTime
the time of the last failed login attempt (GMT).
localTime
the time of the last failed login attempt (in the selected time zone).
ip
the network address from which the failed attempt to log in was made.
RulesAllowed, SignalRulesAllowed, RPOPAllowed, PWDAllowed
The effective Account settings data. These elements do not have attributes, and their text body is the setting value.
option
zero, one, or several XML elements. The element body is a string, specifying an option enabled for the current Account:
S/MIME
Secure Mail services are enabled.
SMIMEActive
Secure Mail services are unlocked.
SMIMEInactive
Secure Mail services are locked (but the Account does have a Private PKI key).
WebCAL
Calendaring services are enabled.
WebSite
Web access to File Storage is enabled.
knownValues
These messages are sent when the Server processes the listKnownValues request.
ボディ:
a set of XML elements:
tzid
the element name attribute specifies a known Time Zone name;
charset
the element name attribute specifies a known character set name;
mailRuleAllowed
the element name attribute specifies a supported Allowed Mail Rule mode. Each mode defines which Mail Rule actions the user is allowed to modify; Elements are sorted, with the "most restrictive" mode listed first.
mailRuleCondition
the element name attribute specifies a supported Mail Rule condition.
mailRuleAction
the element name attribute specifies a supported Mail Rule action; the element allowedSet attribute specifies the enabling Allowed Mail Rule name. The user can modify a Rule containing this operation only if the user Account RulesAllowed setting value is the specified or a less restrictive Allowed Mail Rule mode.
signalRuleAllowed, signalRuleCondition, signalRuleAction
the same elements as the mailRuleAllowed, mailRuleCondition, mailRuleAction elements, but for the Signal Rules.
cliResult
These messages are sent when the Server processes the cliExecute request.
ボディ:
text presentation of the CLI command output.
retrievedXML
サーバーでクライアントからのretrieveXML 要求が処理された場合、このメッセージがク ライアントに送信されます。
属性:
url
ドキュメントのURL。

ボディ:
取り出されたドキュメントを格納したサブ要素。
speller
These messages are sent when the Server processes the spellerList request.
属性:
speller
the spell checker name; usually - the language name or the dialect name (such as English-US or French-CA).
spellerReport
These messages are sent when the Server processes the spellerCheck request and detects a spelling error.
属性:
position
the misspelled word position in the supplied text.
size
the misspelled word size in the supplied text (in bytes).

ボディ:
zero, one, or more guess XML elements. The text body of each element is a suggested replacement for the misspelled word.

注意: the supplied text is XML-decoded first, and the attributes specify the word position and size in the resulting decoded text (which must use UTF-8 character set).

メールボックスの管理

クライアントから、次のコマンドを使って認証済みのアカウントのメールボックスの管理が可能で す。また、他のアカウントのメールボックスの管理も可能です(正規のメールボックス名、つまり~ アカウント名@ ドメイン名/ メールボックス名の形式でメールボックスを指定します)

注意: コマンドでは、メールボックス名に非ASCII 文字がある場合、UTF-8 キャラクタセットを 使ってメールボックス名を指定しなければなりません(IMAP UTF-7 エンコーディングは使用できま せん)。 

mailboxCreate
このコマンドを使って、新規のメールボックスを作成できます。
属性:
mailbox
この属性の値は、新規の(作成する)メールボックスの名前です。
mailboxClass
メールボックスのクラスです。
mailboxRename
このコマンドでは、メールボックスの名前の変更が可能です。
属性:
mailbox
既存のメールボックスの名前です。
newName
メールボックスの新規(変更後)の名前です。
children
オプションの属性。メールボックスの子メールボックス(入れ子のメールボックス) の名前もすべて変更されます。
mailboxRemove
このコマンドを使ってメールボックスの削除が可能です。
属性:
mailbox
既存のメールボックスの名前。このメールボックスが削除されます。
children
オプションの属性。メールボックスの子メールボックス(入れ子のメールボックス) もすべて削除されます。
mailboxList
このコマンドでは、サーバーからメールボックスデータメッセージが返ります。メッセージ には、「可視」のメールボックス(認証済みアカウントがlookup アクセス権を所有している メールボックス) の名前が格納されています。
属性:
filter
オプションの属性。フィルタ文字列です(IMAP プロトコルフォーマット)。
mailboxClass
if this optional attribute is specified, only the Mailboxes of the specified class are listed. Specify an empty string value to list only "mail"-class Mailboxes.
mailboxSubList
This operation makes the Server send a mailboxSubscription data message (see below) for each element in the Account mailbox subscription set. Note that Mailboxes in this set may or may not exist.
属性:
filter
this optional attribute specifies the filter string in the IMAP protocol format.
mailboxSubUpdate
This operation modifies Account mailbox subscription set.
ボディ:
a set of mailboxSubscription elements.
属性:
mailbox
a Mailbox name in the UTF-8 character set.
mode
if this attribute value is add the mailbox name is added to the mailbox subscription set (unless the set already contains this name).
otherwise, the mailbox name is removed from the mailbox subscription set.
mailboxRightsGet
This operation makes the Server send a mailboxRight data message (see below) with the user access rights for the specified Mailbox.
属性:
mailbox
an existing Mailbox name.
mailboxACLList
This operation makes the Server send a mailboxACL data message (see below) with the Mailbox Access Control List data.
属性:
mailbox
an existing Mailbox name.
mailboxACLUpdate
This operation modifies the Mailbox Access Control List for the specified Mailbox.
属性:
mailbox
an existing Mailbox name.

ボディ:
A set of aclElem XML elements:
属性:
pattern
the ACL element "name". It can be an Account name, a name with "+" or "-" prefix, etc. See the Mailbox Access Control Lists section for more details.
mode
if this optional attribute value is add, the specified rights are added to the right set already specified for this ACL element. If the ACL element did not exist, it is created.
if this optional attribute value is sub, the specified rights are removed from the right set specified for this ACL element.
if this optional attribute value is clear, this ACL element is removed.
if this optional attribute has any other value, or if this attribute is absent, the specified rights replace the right set already specified for this ACL element. If the ACL element did not exist, it is created.

ボディ:
a string; each symbol specifies a Mailbox Access Right.

以下は、サーバーからクライアントに送信されるデータメッセージです。

mailbox
クライアントからlistMailboxes 要求が送信され、その要求がサーバーで処理された場 合、このメッセージが返送されます。
属性:
mailbox
メールボックスの名前。
UIDVALIDITY, MESSAGES, UIDNEXT, UNSEEN, INTERNALSIZE, OLDEST, CLASS, MEDIA, UNSEENMEDIA
標準/ 拡張IMAP メールボックス属性。
pureFolder
メールボックスが純粋のフォルダ( メッセージではなくサブメールボックスが格納さ れるフォルダ) の場合、この属性(値はYES) がメッセージに格納されます。
mailboxSubscription
These messages are sent when the Server processes the mailboxSubList request.
属性:
mailbox
the Mailbox name in the UTF-8 character set.
mailboxRights
This message is sent when the Server processes the mailboxRightsGet request.
属性:
mailbox
the Mailbox name.

ボディ:
a string; each symbol specifies an effective Mailbox Access Right granted to the current user.
mailboxACL
This message is sent when the Server processes the mailboxACLList request.
属性:
mailbox
the Mailbox name.

ボディ:
A set of aclElem XML elements, one element for each Mailbox Access Control List element:
属性:
pattern
the ACL element "name". It can be an Account name, a name with "+" or "-" prefix, etc. See the Mailbox Access Control Lists section for more details.

ボディ:
a string; each symbol specifies a Mailbox Access Right granted to or revoked from the "name".
例:
C:<mailboxCreate id="A001" mailbox="MyNotes" mailboxClass="IPF.StickyNote" />
S:<response id="A001"/>

C:<mailboxRename id="A002" mailbox="MyNotes" newName="SharedNotes" />
S:<response id="A002"/>

C:<mailboxACLUpdate id="A003" mailbox="SharedNotes">
    <aclElem pattern="user1">lr</aclElem>
    <aclElem pattern="user2">lr</aclElem>
  </mailboxACLUpdate>

S:<response id="A003"/>

C:<mailboxACLUpdate id="A004" mailbox="SharedNotes">
    <aclElem pattern="user1" mode="add">di</aclElem>
    <aclElem pattern="user2" mode="sub">r</aclElem>
  </mailboxACLUpdate>

S:<response id="A004"/>

C:<mailboxACLList id="A005" mailbox="SharedNotes"/>
S:<mailboxACL id="A005" mailbox="SharedNotes">
    <aclElem pattern="user1">lrdi</aclElem>
    <aclElem pattern="user2">l</aclElem>
  </mailboxACL>

S:<response id="A005"/>

メールボックスの操作

クライアントでは、次の各コマンドを使って認証済みのアカウントのメールボックスを操作できま す。また、他のアカウントのメールボックスの操作も可能です(正規のメールボックス名、つまり~ アカウント名@ ドメイン名/ メールボックス名の形式でメールボックスを指定します)

folderOpen
このコマンドでは、メールボックスを指定し、そのメールボックスを「フォルダ」として開 くことができます。
ここでフォルダとは、サーバーのメールボックスをいいます。メッセージはすべてソートさ れて、このメールボックスに格納されます。ソートの方法は指定できます。オプションで、 フィルタリングも可能です。
フォルダはそれぞれ名前で識別されます。同一のセッションでは、同一の名前のフォルダを 2 つ扱うことはできません。ただし、同一のセッションで、同じメールボックスを異なる フォルダ(名前は別) として扱うことができます。例えば、アプリケーションで、単一の フォルダを使ってメールボックスの内容をDate フィールドでソートして表示し、同時に別 のウィンドウ(フォルダ) を使って同じメールボックスの内容を表示できます。この場合、 別のウィンドウには、Keywords フィールドにBusiness タグが格納されているメッセージ だけをFrom フィールドでソートして表示するといった処理が可能です。
メールボックスのメッセージの追加、削除、更新が実行された場合、そのメールボックスを フォルダとして開いているクライアントすべてに対して、その更新が通知されます。
更新情報は各フォルダに別々に自動的に通知されるため、クライアントで、異なる2 つの ビューを同時に監視する必要はありません。
属性:
folder
フォルダの名前。この名前でフォルダが開かれます。このフォルダ名としては任意の 名前(文字列)を指定できます。
mailbox
メールボックスの名前。このメールボックスがフォルダとして開かれます。この属性 が指定されていない場合、フォルダ名(上記の属性folder で指定した名前)が使用 されます(属性folder にメールボックス名を指定できます)
mailboxClass
an optional attribute. If the specified Mailbox does not exist and this optional attribute is specified, the specified Mailbox is created.
If this attribute value is a non-empty string, that value is assigned as the
Mailbox Class to the newly created Mailbox.
sortField
メッセージのRFC822 フィールドの名前。この名前を使ってメッセージのソートが実 行されます。
sortOrder
オプションの属性。値をdesc にしておくと逆順(降順)でメッセージがソートされ ます。
filter
オプションの属性(フィルタ)。この属性の値と一致するメッセージだけがフォルダに 取り込まれます。
filterField
オプションの属性(フィルタフィールド)。属性の値は、メッセージのヘッダフィール ドです。ここで指定されている値が属性filter の値と比較されます。つまり、メッ セージのうち、ここで指定したヘッダフィールドの値が属性filter の値と一致する メッセージがフォルダに取り込まれます。
この属性の値をbody に設定しておくと、メッセージのうち、そのボディ(本文)部 に属性filter で指定されている値が含まれているメッセージがサーバービュー (フォルダ)に取り込まれます。
この属性がない場合、 メッセージのボディ(本文)またはいずれかのヘッダフィール ドに属性filter で指定した値が含まれているメッセージがサーバービュー(フォル ダ)に取り込まれます。

ボディ:
要求のボディには 要素(単一または複数) を指定しなければなりません。
要素のボディには、ヘッダフィールドの名前(From など) を指定しなければなりません。
要素は、「ビュアーフィールド」とも呼びます。特殊名(メタデータ 属性名)INTERNALDATE、UID、SIZE、FLAGS を使って、メッセージのメタデータ属性を 取り出すことができます。それぞれ、内部日付、メッセージID、サイズ、フラグを表しま す。

The following sortField and viewer fields can be specified:
  • From, To, Cc, Bcc, Reply-To, Sender, Return-Path, or other Email-field name. If a message header contains the specified Email-field, it is parsed. If the field contains a "comment" (i.e. a "real name"), it is used. Otherwise, the parsed E-mail address is used.
  • Date, Resent-Date. The field date value is converted to GMT. When elements with these field values are sent within a folderReport message, they contain the localTime attribute specifying the field value in the Time Zone selected for the current user.
  • any other E-mail header field name (Subject, X-Mailer, etc). The field MIME-decoded value is used.
  • E-From, E-To, or other E-Email-field name. If a message header contains the specified Email-field, it is parsed, and the parsed E-mail address is used.
  • Pty. The X-Priority field value is converted to the strings High, Low, or to an empty string.
  • UID. The message metadata - its UID (unique ID) in the Mailbox.
  • SIZE. The message metadata - its "raw" size in the Mailbox.
  • INTERNALDATE. The message metadata - its "timestamp". It is formatted in the same way as the Date element.
  • FLAGS the message metadata attribute values are used.
    See the Mailboxes section for more information on the Mailbox message flags.

A session can use several open Folders at the same time.

A client should maintain an internal view of the Folder - an array or a table with one element for each Folder message. A client should keep that view synchronized with the Server view (implemented with that Folder).

When a Folder is opened, the Server sends a folderReport data message containing the total number of messages in the Folder. The client uses this number to create the initial internal view table, filling it with empty elements.

To display the Mailbox content on the screen, the client checks which elements of its internal view table it should use. If some of those elements are empty, the client should ask the Server to send it the information about the Folder messages specified by their index values (positions) in the sorted view (in the Folder).

Some Mailbox operations use a message set to specify the Mailbox messages to apply the operation to. Messages can be specified either by their UIDs, or by their index numbers (their positions in the folder view).

To specify messages by their UIDs, use one or more UID elements.
Each UID element can include one message, in this case the message UID is specified as the element ボディ: <UID>12377</UID>.
An UID element can include a range of message UIDs specified as the from and till attributes: <UID from="12377" till="12455" />. The operation is applied to all Mailbox messages with UIDs not smaller than the from attribute value and not larger than the till attribute value. Please remember that Folder messages are not sorted by their UIDs, unless the sortField="UID" attribute was used in the folderOpen operation.

To specify messages by index, use one or more index elements.
Each index element can include one message, in this case the message index is specified as the element ボディ: <index>14</index>.
An index element can include an index range specified as the from and till attributes: <index from="12" till="10000" />. The operation is applied to all Folder messages with position (index) not smaller than the from attribute value and not larger than the till attribute value.

A message set can include one or more UID element, or it can include one or more index elements, but it cannot include both UID and index elements.

folderBrowse
このコマンドでは、オープンしているフォルダの中のメッセージ(複数) を指定し、その メッセージを送信するようにサーバーに指示できます。メッセージは、インデックス範囲を 使って指定します。
属性:
folder
フォルダの名前。

ボディ:
a message set (see above). Only index elements are allowed in this message set.
サーバーからは、指定した範囲のメッセージについて一つずつfolderReport データメッ セージが送信されます。folderReport の属性は、フォルダ名、インデックス(位置)、メッセージID です。
folderReport データメッセージのボディには、各ビュアーフィールド( 要素) の値 (フラグなど) が格納されています。

メールボックスの操作では、「オンデマンド」クライアント/ サーバー同期モデルが使われます。つ まり、フォルダのメッセージに変更や追加、削除が発生した場合、サーバーから属性mode(値は notify)が格納されたfolderReport データメッセージがクライアントに送信されます。

メールボックスにメッセージが追加された場合、そのままでは、そのメッセージはフォルダ内( クラ イアント側) では見えません。また、メールボックスからメッセージが削除されても、そのメッセー ジはフォルダ(ビュー) から削除されません。その結果、クライアントから、削除されたメッセージ のデータの取り出しを要求した場合、そのデータは送信されないか、または空白のデータが返りま す。

サーバーから、属性mode が格納されたfolderReport データメッセージがクライアントに送信さ れた場合、クライアントではsynchFolder 要求をサーバーに送信しなければなりません。その後、 サーバーからの応答をもとに内部ビューの更新を行います。

folderSync
このコマンドの送信後、サーバーからメールボックスの更新情報(追加、削除、変更)が返 ります。
属性:
folder
フォルダ名。

コマンドの送信後、サーバーからfolderReport データメッセージが送信されます。この 場合、データメッセージの属性mode の値は、更新の種類に応じてremoved(削除)、 added(追加)、updated(変更/ 更新)のいずれかが設定されています。

なお、サーバーからfolderReport データメッセージ(値がnotify の属性mode を格納) が送信された後、クライアントからのsynchFolder 要求がサーバーで受信される前に、さ らにメールボックスのメッセージに更新が発生することがあります。この場合、新たに発生 した更新は通常、synchFolder 要求がサーバーで受信された後にデータメッセージ(属性 mode の値はnotify)がクライアントに送信されます。

更新情報(メッセージの削除など)によっては、browseFolder を使ってクライアントから問い合 わせが可能で、その情報をもとに内部ビューを更新することもできます。ただし、サーバーから実際 の更新を知らせるfolderReport データメッセージ(値がremoved などの属性mode を格納した メッセージ)の受信後にクライアントで内部ビューの更新を行うのが基本です。

注意: unlike UIDs, Folder message index can change any time when the folderSync operation is performed. Before you start any operation using an index-based message set, make sure that you have correctly updated the internal view with all folderReport data messages generated with the previously sent folderSync operation.

注意: when a message has been removed from or added to a Mailbox, the Server only sends folderReport data messages with the mode="notify" attribute. The Server-side "view" of the modified Folder (the logical Folder) is not updated, and it is safe to use an index-based message set to start a Folder operation.

messageCopy
このコマンドでは、オープンしているフォルダのメッセージを別のメールボックス( ター ゲット) にコピーできます。
注意: ターゲットとしては、フォルダではなくメールボックスを指定します。
属性:
folder
ソース(コピー元)のフォルダの名前。
targetMailbox
ターゲット(コピー先)のメールボックスの名前。
encrypt
an optional parameter. If set to yes, the messages are copied encrypted, using the current user S/MIME certificate.

ボディ:
UID のセット(下記を参照)。
messageMove
This operation is the same as the messageCopy operation, but if the messages have been copied successfully, the operation deletes the original messages.

This operation can also be used to implement the "encrypt message" functionality: the selected messages should be moved to the same Mailbox using the encrypt operation attribute.

messageMark
このコマンドでは、開いているメールボックスの中のメッセージのフラグ を変更できます。
属性:
folder
フォルダ名。
flags
この属性には、メールボックスのメッセージのフラグを指定します。追加または削除 が可能です。フラグは複数指定でき、その場合、各フラグをコンマで区切ります。フ ラグについては、詳しくは「メールボックス」 のセクションを参照してください。

ボディ:
コマンドのボディは、UID セットです(下記を参照)。
messageRemove
This operation removes messages from an open Folder.
属性:
folder
フォルダ名。

ボディ:
a message set (see above).
The operation checks the DeleteMode Account preference and acts depending on its value:
  • Immediately - the messages are physically removed from the Folder Mailbox.
  • Move To Trash - the messages are moved to the Trash Mailbox (its name is specified with the TrashBox Account preference). If the specified Folder is the Trash Mailbox itself, the messages are physically removed.
  • Mark - the messages are marked with the Deleted flag.
folderExpunge
このコマンドでは、フォルダ(属性folder) として指定したメールボックスのメッセージ のうち、フラグがDeleted のメッセージをすべて削除できます。
注意: このコマンドでは、指定したフォルダで「見える」メッセージの(ビューで表示され るメッセージ) ほか、メールボックスでDeleted とマークされているメッセージもすべて 削除されます。
属性:
folder
フォルダ名。
folderClose
このコマンドで、オープンしているフォルダを閉じることができます。
属性:
folder
フォルダ名。
folderReopen
This operation re-builds an open Folder by re-scanning its Mailbox using different sorting and filtering parameters.
属性:
folder
フォルダ名。
sortField, sortOrder, filter, filterField
these attributes have the same meaning as the same folderOpen operation attributes.

ボディ:
the request body should contains at least one <field> element, these elements specify the new viewer fields set. If no <field> element is specified, the viewer fields set is not modified.

When a client uses this command, the Server sends the folderReport message with the mode attribute set to init, notifying the client about the new Folder size.
The client should clear its internal Folder view, and re-populate it again.

注意:if a Client receives a folderReport message with the mode attribute set to notify when the Client has already sent the folderReopen command, the Client should use the folderSync command after it receives response for the folderReopen command.

The Server sends the following data messages:

folderReport
このメッセージは、フォルダのオープン時(クライアントがopenFolder を送信)、フォル ダのステータスが変わった(メッセージの追加、削除、更新が発生した)場合、クライアン トからbrowseFolder 要求またはsynchFolder 要求が送信された場合、サーバーからク ライアントに送信されます。
属性:
folder
フォルダ名。
mode
オプションの属性。通知のタイプが示されます。
  • この属性の値がinit の場合、属性messages の値は、フォルダに格納されて いるメッセージの総数です。
    このデータメッセージは、フォルダがオープンされるとき(クライアントから openFolder が送信されたとき)に送信されます。
  • この属性の値がremoved の場合、メッセージにはindex とUID の各属性が格 納されます。値はそれぞれ、フォルダから削除されたメッセージのインデック スとUID です。
    このデータメッセージは、クライアントからsynchFolder 要求が送信された 場合、その応答としてクライアントに送信されます。
    クライアント側では、このデータメッセージの受信後、すぐに内部ビューを更 新しなければなりません。具体的には、メッセージのうち、そのインデックス が、このデータメッセージに格納されている属性index の値により大きい メッセージのインデックスをすべて1 だけ減らします。
  • この属性の値がaddedの場合、メッセージにはindexとUID の各属性が格納さ れます。値はそれぞれ、フォルダに追加されたメッセージのインデックスと UID です。
    このデータメッセージは、クライアントからsynchFolder 要求が送信された 場合、その応答としてクライアントに送信されます。
    クライアント側では、このデータメッセージの受信後、すぐに内部ビューを更新しなければなりません。具体的には、メッセージのうち、そのインデックス が、このデータメッセージに格納されている属性index の値と等しいか、ま たは大きいメッセージのインデックスをすべて1 だけ増やします。
  • この属性の値がupdated の場合、または、この属性がない場合、メッセージ にはindex とUID の各属性が格納されます。値はそれぞれ、更新されたメッ セージのインデックスとUID です。また、応答のボディには、そのメッセー ジのビュアーフィールドの値が格納されています。
  • この属性の値がnotify の場合、メールボックスのメッセージに更新(追加、 変更、削除)が発生したことを示します。このデータメッセージがクライアントに送信された場合、クライアントでは、 synchFolder 要求をサーバーに送信しなければなりません。
index
メッセージのインデックス。
この属性は、属性mode の値がinit のデータメッセージにはありません。
UID
メッセージのUID (一意のID)。
この属性は、属性mode の値がinit のデータメッセージにはありません。
messages
folder で指定されているフォルダの中にあるメッセージの総数。
この属性は、属性mode の値がinit、removed、added のいずれかのデータメッ セージにはありません。

ボディ:
属性mode の値がinit またはremove の場合、そのデータメッセージにはボディは ありません。
上記以外の場合、データメッセージのボディには、ビュアーフィールドの値を格納し た要素のセットが格納されます。
例 1:
C:<folderOpen id="A001" folder="INBOX" mailbox="INBOX" sortField="INTERNALDATE" sortOrder="asc">
   <field>FLAGS</field><field>From</field><field>Subject</field>
  </folderOpen>

S:<folderReport id="A001" folder="INBOX" mode="init" messages="234" />
S:<response id="A001"/>

C:<folderBrowse id="A002" folder="INBOX"><index from="0" till="3" /></folderBrowse>
S:<folderReport id="A002" folder="INBOX" index="0" UID="123">
    <FLAGS>Seen,Deleted</FLAGS><From>John H. Smith</From>
    <Subject>Hello - just a test</Subject>
  </folderReport>

S:<folderReport id="A002" folder="INBOX" index="1" UID="543">
    <FLAGS>Seen,Answered</FLAGS><From>Jim Spammer</From>
    <Subject>This is the best offer!</Subject>
  </folderReport>

S:<folderReport id="A002" folder="INBOX" index="2" UID="343">
    <FLAGS>Seen,Media</FLAGS><From>user@example.com</From>
    <Subject>Meeting reminder</Subject>
  </folderReport>

S:<folderReport folder="INBOX" mode="notify" />
S:<folderReport id="A002" folder="INBOX" index="3" UID="512">
    <FLAGS>Seen,Flagged</FLAGS><From>Admin@hq.example.com</From>
    <Subject>Shutdown @ 4:45AM</Subject>
  </folderReport>

S:<response id="A002" />

S:<folderReport folder="INBOX" mode="notify" />

C:<folderBrowse id="A003" folder="INBOX"><index from="0" till="3" /></folderBrowse>
S:<folderReport id="A003" folder="INBOX" index="0" UID="123">
    <FLAGS>Seen,Deleted</FLAGS><From>John H. Smith</From>
    <Subject>Hello - just a test</Subject>
  </folderReport>

S:<folderReport id="A003" folder="INBOX" index="1" UID="543">
    <FLAGS>Seen,Answered</FLAGS><From>Jim Spammer</From>
    <Subject>This is the best offer!</Subject>
  </folderReport>

S:<folderReport id="A003" folder="INBOX" index="2" UID="343">
    <FLAGS>Seen,Media</FLAGS><From></From>
    <Subject></Subject>

  </folderReport>

S:<folderReport id="A003" folder="INBOX" index="3" UID="512">
    <FLAGS>Seen,Flagged</FLAGS><From>Admin@hq.example.com</From>
    <Subject>Shutdown @ 4:45AM</Subject>
  </folderReport>

S:<response id="A003" />

C:<folderSync id="A004" folder="INBOX" />
S:<folderReport id="A004" folder="INBOX" index="35" UID="117" mode="deleted" messages="233" />
S:<folderReport id="A004" folder="INBOX" index="2" UID="343" mode="deleted" messages="232" />
S:<folderReport id="A004" folder="INBOX" index="1" UID="976" mode="added" messages="233" >
    <FLAGS>Recent</FLAGS><From>CGatePro Discussions</From>
    <Subject>[CGP] Re: Session Timer?</Subject>
  </folderReport>

S:<response id="A004" />

C:<folderBrowse id="A005" folder="INBOX"><index from="0" till="3" /></folderBrowse>
S:<folderReport id="A005" folder="INBOX" index="0" UID="123">
    <FLAGS>Seen,Deleted</FLAGS><From>John H. Smith</From>
    <Subject>Hello - just a test</Subject>
  </folderReport>

S:<folderReport id="A005" folder="INBOX" index="1" UID="976">
    <FLAGS>Recent</FLAGS><From>CGatePro Discussions</From>
    <Subject>[CGP] Re: Session Timer?</Subject>
  </folderReport>

S:<folderReport id="A005" folder="INBOX" index="2" UID="543">
    <FLAGS>Seen,Answered</FLAGS><From>Jim Spammer</From>
    <Subject>This is the best offer!</Subject>
  </folderReport>

S:<folderReport id="A005" folder="INBOX" index="3" UID="512">
    <FLAGS>Seen,Flagged</FLAGS><From>Admin@hq.example.com</From>
    <Subject>Shutdown @ 4:45AM</Subject>
  </folderReport>

S:<response id="A005" />

例 2:

C:<messageCopy id="A010" folder="INBOX" targetMailbox="Archive">
    <UID>512</UID><UID>123</UID><UID>976</UID>
  </messageCopy>

S:<folderReport folder="Archive" mode="notify" />
S:<response id="A010"/>

例 3:

C:<messageMark id="A020" folder="INBOX" flags="Deleted">
    <UID>512</UID><UID>123</UID><UID>976</UID>
  </messageMark>

S:<folderReport folder="INBOX" mode="notify" />
S:<response id="A020"/>

C:<folderSync id="A021" folder="INBOX" />
S:<folderReport id="A021" folder="INBOX" index="1" UID="976" mode="updated" >
    <FLAGS>Recent,Deleted</FLAGS><From>CGatePro Discussions</From>
    <Subject>[CGP] Re: Session Timer?</Subject>
  </folderReport>

S:<folderReport id="A021" folder="INBOX" index="3" UID="512" mode="updated" >
    <FLAGS>Seen,Deleted,Flagged</FLAGS><From>Admin@hq.example.com</From>
    <Subject>Shutdown @ 4:45AM</Subject>
  </folderReport>

S:<response id="A021"/>

C:<folderExpunge id="A022" folder="INBOX" />
S:<folderReport folder="INBOX" mode="notify" />
S:<response id="A022"/>

C:<folderSync id="A023" folder="INBOX" />
S:<folderReport id="A023" folder="INBOX" index="0" UID="123" mode="deleted" messages="232" />
S:<folderReport id="A023" folder="INBOX" index="0" UID="976" mode="deleted" messages="231" />
S:<folderReport id="A023" folder="INBOX" index="29" UID="446" mode="deleted" messages="230" />
S:<folderReport id="A023" folder="INBOX" index="123" UID="756" mode="deleted" messages="229" />
S:<folderReport id="A023" folder="INBOX" index="1" UID="512" mode="deleted" messages="228" />
S:<response id="A023"/>

C:<closeMailbox id="A024" folder="INBOX" />
S:<response id="A024"/>

メッセージの操作

クライアントでは、次のコマンドを使ってメールボックスのメッセージの操作が可能です。

folderRead
このコマンドでは、サーバーからメッセージまたはメッセージのパートを取り出すことがで きます。
属性:
folder
フォルダ名。
UID
メッセージのUID。
totalSizeLimit
取り出すメッセージ(各パートの合計) の最大サイズ。このサイズを上限としてメッ セージが取り出されます。
messageAppend
このコマンドを使ってメッセージを作成し、そのメッセージを既存のメールボックスに追加 できます。
属性:
folder
the target Folder name. If specified, the targetMailbox attribute is ignored.
targetMailbox
ターゲット(作成されたメッセージの追加先) のメールボックスの名前。
mailboxClass
オプションの属性。メールボックスのクラスを指定できます。ターゲットを指定し、 またクラスを指定した場合、そのターゲットのメールボックスが存在しなかったとき には、自動的にターゲットのメールボックスが作成されます。そのメールボックスに は、この属性で指定したメールボックスのクラス が割り当てられます。
flags
オプションの属性。作成されたメッセージのフラグを指定できます。メッセージは、 このフラグとともにメールボックスに格納されます。フラグは複数指定でき、その場 合、各フラグをコンマで区切ります。詳しくは、「メールボックス」 のセクションを参 照してください。
internalDate
オプションの属性。作成されたメッセージの「内部タイムスタンプ」を指定できます。 この属性を指定しなかった場合、カレントの時刻が使用されます。
replacesUID
this optional attribute can be specified if the folder attribute is specified.
If the message has been successfully composed and appended to the Folder, the message with the replacesUID UID is removed from the Folder Mailbox.
report
this optional attribute can be specified if the folder attribute is specified. If this attribute is specified, it should have the uid value.
If the message has been successfully composed and appended to the Folder, the Server sends the synchronous messageAdded message containing the UID of the newly appended message.

ボディ:
メッセージのXML プレゼンテーション (EMail データ)
メッセージのXML プレゼンテーションのテキストパートでは、EOL (行の終わり) 文 字としてラインフィールド(0x0A) 文字を使用しなければなりません。
XML プレゼンテーションにMessage-ID フィールドまたはDate フィールドが存在し なかった場合、サーバーにより自動的に付加されます。

例:
下記は、appendMessage コマンドを使ってメールボックス"Sent" に簡単なテキスト メッセージを追加する場合の例です。フラグとしては、Seen とAnswered を指定してい ます。指定したメールボックスが存在しなかった場合、自動的に作成されます。

C:<messageAppend id="A001" targetMailbox="Sent" flags="Seen,Answered" mailboxClass="" >
    <EMail>
      <From realName="Sender Name">fromName@domain</From><Subject>I'll be there!</Subject>
      <To realName="Recipient Name">toName@domain</To><X-Mailer>SuperClient v7.77</X-Mailer>
      <MIME type="text" subtype="plain">Dear Susan,&#x0A;&#x0A;I will come to your place tomorrow, thank you for the invitation!&#x0A;Mary.&#x0A;</MIME>
    </EMail>
  </messageAppend>

S:<response id="A001"/>
上記の例では、次のようなメッセージがメールボックスに追加されます。
From: "Sender Name" <fromName@domain>
Subject: I'll be there!
To: "Recipient Name" <toName@domain>
X-Mailer: SuperClient v7.77
Date: Wed, 21 Jun 2006 21:51:24 -0800
Message-ID: <ximss-38150012@this.server.dom>
Content-Type: text/plain; charset="utf-8"

Dear Susan,

I will come to your place tomorrow, thank you for the invitation!
Mary.

添付ファイル付きのメッセージを作成する場合、まず、添付ファイルをアップロード済みファイルセット にアップロードします。その後、MIME 要素で属性uploadID を使って添付ファイルを指定 します。

例:
まず、クライアントで、test.gif(uploadID はatt01)とsample.pdf(uploadID は att02)の2 つのファイルをアップロードします。続いて、クライアントでappendMessage コマンドを使って、"Drafts" メールボックスにメッセージを追加します。メッセージのフラ グは"Draft" とします。
メッセージには、テキストを2 種類の代替フォーム(plain とhtml) を使って格納します。ま た、アップロード済みのファイル(上記の2 ファイル) を添付ファイルとして指定します。 最後に、clearUploaded コマンドを使ってアプリケーション済みファイルセットを削除し ます。
C:<messageAppend id="A001" folder="Drafts" flags="Draft" replacesUID="578" report="uid" >
    <EMail>
      <From realName="Sender Name">fromName@domain</From><Subject>Text with attachments</Subject>
      <To realName="Recipient Name">toName@domain</To><X-Mailer>SuperClient v7.77</X-Mailer>
      <MIME type="multipart" subtype="mixed">
        <MIME type="multipart" subtype="alternative">
          <MIME type="text" subtype="plain">Dear Susan,&#x0A;&#x0A;I will come to your place tomorrow, thank you for the invitation!&#x0A;Mary.&#x0A;</MIME>
          <MIME type="text" subtype="html">&lt;html&gt;&lt;body&gt;&lt;i&gt;Dear Susan,&lt;/i&gt;&lt;p&gt;I will come to your place tomorrow, thank you for the invitation!&lt;p&gt;&lt;i&gt;Mary.&lt;/i&gt;</MIME>
        </MIME>
        <MIME uploadID="att01" />
        <MIME uploadID="att02" type="application" subtype="pdf" />
      </MIME>
    </EMail>
  </messageAppend>

S:<folderReport folder="Drafts" mode="notify" />
S:<messageAdded id="A001" folder="Drafts" UID="756" />
S:<response id="A001"/>
C:<clearUploaded id="A002" />
S:<response id="A002"/>
C:<folderSync id="A003" folder="Drafts"/>
S:<folderReport id="A003" folder="Drafts" index="17" UID="578" mode="removed" messages="301"/>
S:<folderReport id="A003" folder="Drafts" index="127" UID="755" mode="added" messages="302">
    <UID>755</UID>
    <From>Other Name</From>
  </folderReport>

S:<folderReport id="A003" folder="Drafts" index="17" UID="756" mode="added" messages="303">
    <UID>756</UID>
    <From>Sender Name</From>
  </folderReport>

S:<response id="A003"/>

上記の例では、次のようなメッセージがメールボックスに追加されます。
From: "Sender Name" <fromName@domain>
Subject: Text with attachments
To: "Recipient Name" <toName@domain>
X-Mailer: SuperClient v7.77
Date: Wed, 21 Jun 2006 21:59:55 -0800
Message-ID: <ximss-38330025@my.server.domain>
Content-Type: multipart/mixed; boundary="_===38330025====my.server.domain===_"

--_===38330025====my.server.domain===_
Content-Type: multipart/alternative; boundary="_===38330025-X====my.server.domain===_"


--_===38330025-X====my.server.domain===_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

Dear Susan,

I will come to your place tomorrow, thank you for the invitation!
Mary.

--_===38330025-X====my.server.domain===_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: 8bit

<html><body><i>Dear Susan,</i><p>I will come to your place tomorrow, thank you for the invitation!<p><i>Mary.</i>
--_===38330025-X====my.server.domain===_--

--_===38330025====my.server.domain===_
Content-Type: image/gif; name="test.gif"
Content-Disposition: attachment; filename="test.gif"
Content-Transfer-Encoding: base64

R0lGODlhCgAMAPf/AP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+Z
zP+Zmf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8A
zP8Amf8AZv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZ
zMyZmcyZZsyZM8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wA
zMwAmcwAZswAM8wAAJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZ
zJmZmZmZZpmZM5mZAJlm/5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kA
zJkAmZkAZpkAM5kAAGb//2b/zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZ
zGaZmWaZZmaZM2aZAGZm/2ZmzGZmmWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YA
zGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZ
zDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNmMzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMA
zDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZ
zACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz/wAzzAAzmQAzZgAzMwAzAAAA/wAA
zAAAmQAAZgAAM+4AAN0AALsAAKoAAIgAAHcAAFUAAEQAACIAABEAAADuAADdAAC7AACqAACI
AAB3AABVAABEAAAiAAARAAAA7gAA3QAAuwAAqgAAiAAAdwAAVQAARAAAIgAAEe7u7t3d3bu7
u6qqqoiIiHd3d1VVVURERCIiIhEREQAAACH+HUdpZkJ1aWxkZXIgMC40IGJ5IFl2ZXMgUGln
dWV0ACH5BAUEALkALAAAAAAKAAwAAAg1AHPlG0gw379cAgEoXHgw4UKFDfM9hIhQ4sSIEwFg
vCiQ4L+PIC1m/Cfx34qQGkVeBMkSZEAAOw==

--_===38330025====my.server.domain===_
Content-Type: application/pdf; name="sample.pdf"
Content-Disposition: attachment; filename="sample.pdf"
Content-Transfer-Encoding: base64

JVBERi0xLjIgDSXi48/TDQogDTggMCBvYmoNPDwNL0xlbmd0aCA5IDAgUg0vRmlsdGVyIC9G
bGF0ZURlY29kZSANPj4Nc3RyZWFtDQpIic2X3VLjuBaFn6DfQXfDuaCP5X9fJiQEpkNI2eFQ
[......skipped......]
Ug0vSUQgWzxjNjIyNzFiYzY4YmFlYjY3YzBkM2ViNTk4MjJiZTA4Nz48YzYyMjcxYmM2OGJh
ZWI2N2MwZDNlYjU5ODIyYmUwODc+XQ0+Pg1zdGFydHhyZWYNODc1NA0lJUVPRg0=

--_===38330025====my.server.domain===_--

サーバーに置かれているメッセージからMIME パート(添付ファイル) をコピーし、その MIME パートを付加したメッセージを作成することもできます。その場合、MIME 要素の代 わりにcopyMIME 要素を使用します。

copyMIME
Attributes:
folder または calendar
オープンしているフォルダまたはカレンダーの名前。このフォルダから、属性UID で指定したメッセージ(またはパート) がコピーされます。
UID
メッセージのUID。
partID
オプションの属性。メッセージのパートです。このパートがコピーされます。指 定されていない場合、メッセージ全体がコピーされます。
例:
appendMessage コマンドを使って、"Notes" という名前のメールボックスにメッセー ジ( メモ) を作成します。その後、INBOX フォルダに格納されているメッセージ156 のパート3 とパート4 (添付データ) を、そのメモに追加します。
C:<messageAppend id="A001" targetMailbox="Notes" flags="Seen">
    <EMail>
      <From realName="Sender Name">fromName@domain</From>
      <Subject>Vacation Pictures</Subject>
      <MIME type="multipart" subtype="mixed">
        <MIME type="text" subtype="plain">The first part of the underwater shots.</MIME>
        <copyMIME folder="INBOX" UID="156" partID="3"/>
        <copyMIME folder="INBOX" UID="156" partID="4"/>
      </MIME>
    </EMail>
  </messageAppend>

S:<response id="A001"/>

You can attach files stored in the Personal File Storage. Specify the full file name in the MIME elements by using the fileName attribute. You must explicitly specify the type and subtype attributes, and you should specify the disposition-filename attribute, as the fileName attribute is not used to form the attachment name.

例:
The Client stores a note in the "Notes" Mailbox, appending the file private/MyFile.jpg as the photo.jpg attachment:
C:<messageAppend id="A001" targetMailbox="Notes" flags="Seen">
    <EMail>
      <From realName="Sender Name">fromName@domain</From>
      <Subject>Vacation Pictures</Subject>
      <MIME type="multipart" subtype="mixed">
        <MIME type="text" subtype="plain">Atatched please find the images I have stored as files.</MIME>
        <MIME type="image" subtype="jpeg" fileName="private/MyFile.jpg" disposition-filename="photo.jpg" />
      </MIME>
    </EMail>
  </messageAppend>

S:<response id="A001"/>

Note: if a <MIME /> element has the disposition attribute value none, the Content-Disposition: header field is not created, and the Content-Type field is stored without the name parameter.

Note: the text MIME parts should use a single LineFeed (0x0A, decimal 10) symbol as the line separator.

You can ask the Server to use the "flowed" format for text MIME parts.

例:
C:<messageAppend id="A001" targetMailbox="Notes" flags="Seen">
    <EMail>
      <Subject>Test text</Subject>
      <MIME type="text" subtype="plain" format="flowed">This is a very long long long long long long long long long long superlong long long long long long long line, followed with a shorter line:
This is a shorter line.</MIME>
    </EMail>
  </messageAppend>

S:<response id="A001"/>
This operation adds the following message to the Mailbox:
Subject: Test text
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; format="flowed"; charset="utf-8"

This is a very long long long long long long long long long long superlong
long long long long long long line, followed with a shorter line:
This is a shorter line.
(there is a trailing space after the "superlong" word)

To create a signed message, make sure that S/MIME Private key is unlocked, and specify the sign attribute in the topmost EMail element.

C:<messageAppend id="A001" targetMailbox="Sent" flags="Seen,Answered" >
    <EMail sign="yes">
      <From realName="Sender Name">fromName@domain</From><Subject>I'll be there!</Subject>
      <To realName="Recipient Name">toName@domain</To><X-Mailer>SuperClient v7.77</X-Mailer>
      <MIME type="text" subtype="plain">Dear Susan,&#x0A;&#x0A;I will come to your place tomorrow, thank you for the invitation!&#x0A;Mary.&#x0A;</MIME>
    </EMail>
  </messageAppend>

S:<response id="A001"/>
This operation adds the following message to the Mailbox:
From: "Sender Name" <fromName@domain>
Subject: I'll be there!
To: "Recipient Name" <toName@domain>
X-Mailer: SuperClient v7.77
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="SHA1"; boundary="_===signed==2610002====my.server.domain===_"

This is a signed S/MIME message

--_===signed==2610002====my.server.domain===_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

Dear Susan,

I will come to your place tomorrow, thank you for the invitation!
Mary.

--_===signed==2610002====my.server.domain===_
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"

MIIE6wYJKoZIhvcNAQcCoIIE3DCCBNgCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCC
ArkwggK1MIICX6ADAgECAgcAk9RF+n/7MA0GCSqGSIb3DQEBBAUAMIG6MQswCQYDVQQGEwJV
UzELMAkGA1UECBMCQ0ExFDASBgNVBAcTC01pbGwgVmFsbGV5MSIwIAYDVQQKExlDb21tdW5p
.............
gIbXNT64QJ+gEYkI9mnePiS1TUOOzGYfXaLy1pqm6jmzBUt7/3UY8ZNHVIwM0Fzj7NwzqM1U
Esbkyi3WHNxTZ4HSCs8J2enGQEZjNWHOuX96xQojYGLV0m5Z/FatV9GQ8jNVBmQ9xYGKxmlY
jT9ze/oHyKuj7KR8QrgQSYiJVnn7

--_===signed==2610002====my.server.domain===_--
messageSubmit
このコマンドを使って、サーバー上でメッセージを作成し、そのメッセージをキューに格納 できます。メッセージは、その後、配信されます。オリジナルのメッセージをメールボック スに残すこともできます。
属性:
useDSN
オプションの属性。この属性を指定した場合、メッセージの配信時、または配信が失 敗したときに配信レポートが生成されます。
この属性を指定しておかなかったときには、メッセージの配信が失敗したときにだけ 配信レポートが生成されます。
targetMailbox, mailboxClass, flags, internalDate
いずれもオプションの属性。targetMailbox 属性を指定しておくと、作成された メッセージが、この属性で指定したメールボックスに追加されます。他の3 つの属性 はすべて、appendMessage コマンドの場合と同じです。

ボディ:
メッセージのXML プレゼンテーション (EMail 要素)とEnvelope-To 要素(なし、 単一または複数)。Envelope-To 要素のボディは、テキスト(メッセージの送信先の 電子メールアドレス)です。
Envelope-To 要素が指定されていない場合、メッセージは、EMail 要素のサブ要素 To、Cc、Bcc に指定されているアドレスすべてに送信されます。
メッセージのMIME テキストが生成される場合、EMail 要素のサブ要素Bcc はすべて 無視されます。
例:
下記は、クライアントからsubmitMessage を使って簡単なテキストメッセージをア ドレスtoName@domain に送信し、そのBcc コピーをアドレスbccName@domain に 送る場合の例です。ここでは、配信通知を要求しています(useDSN の値はyes)。
C:<messageSubmit id="A001" useDSN="yes" >
    <EMail>
      <From realName="Sender Name">fromName@domain</From>
      <Subject>I'll be there!</Subject>
      <To realName="Recipient Name">toName@domain</To>
      <X-Mailer>SuperClient v7.77</X-Mailer>
      <Bcc>bccName@domain</Bcc>
      <MIME type="text" subtype="plain">Dear Susan,&#x0A;&#x0A;I will come to your place tomorrow, thank you for the invitation!&#x0A;Mary.&#x0A;</MIME>
    </EMail>
  </messageSubmit>

S:<response id="A001"/>

例:
下記は、簡単なテキストメッセージをa1@domain とa2@domain の各アドレスに送 信するときの例です。
この例では、メッセージのコピーが"Sent Items" メールボックスに格納されます (targetMailbox を指定しています)。フラグは"Seen" です。また、配信通知を要求 しています(useDSN の値はyes)。

C:<messageSubmit id="A001" targetMailbox="Sent Items" flags="Seen" >
    <Envelope-To>a1@domain address</Envelope-To>
    <Envelope-To>a2@domain address</Envelope-To>
    <EMail>
      <From realName="Sender Name">fromName@domain</From>
      <Subject>I'll be there!</Subject>
      <To realName="Recipient Name">toName@domain</To>
      <X-Mailer>SuperClient v7.77</X-Mailer>
      <Cc>ccName@domain</Cc>
      <MIME type="text" subtype="plain">Dear Susan,&#x0A;&#x0A;I will come to your place tomorrow, thank you for the invitation!&#x0A;Mary.&#x0A;</MIME>
    </EMail>
  </messageSubmit>

S:<response id="A001"/>

例:
次の例では、INBOX フォルダに格納されているメッセージ156 がアドレス a1@domain に転送されます(copyMIME コマンドを使用)

C:<messageSubmit id="A001">
    <EMail>
      <From realName="Sender Name">fromName@domain</From>
      <Subject>Fwd: Sorry, I cannot make it :-(</Subject>
      <To realName="Recipient Name">a1@domain</To>
      <X-Mailer>SuperClient v7.77</X-Mailer>
      <MIME type="multipart" subtype="mixed">
        <MIME type="text" subtype="plain">Dear Susan,&#x0A;&#x0A;Attached please find the message I received this morning...&#x0A;Mary.&#x0A;</MIME>
        <copyMIME folder="INBOX" UID="156" />
    </EMail>
  </messageSubmit>

S:<response id="A001"/>

上記の例では、次のメッセージがメールボックスに追加されます。

From: "Sender Name" <fromName@domain>
Subject: Fwd: Sorry, I cannot make it :-(
To: "Recipient Name" <toName@domain>
X-Mailer: SuperClient v7.77
Date: Wed, 21 Jun 2006 22:55:24 -0800
Message-ID: <ximss-38150012@this.server.dom>
Content-Type: multipart/mixed; boundary="_===38330025====my.server.domain===_"

--_===38330025====my.server.domain===_
Content-Type: text/plain; charset="utf-8"

Dear Susan,

Attached please find the message I received this morning...
Mary.

--_===38330025====my.server.domain===_
Content-Type: message/rfc822

From: "Barbara Smith" <barbara@domain>
Subject: Sorry, I cannot make it :-(
To: "Sender Name" <fromName@domain>
X-Mailer: OtherClient v8.88
Date: Wed, 21 Jun 2006 21:51:24 -0800
Message-ID: <zzzzzzzzz@other.server.dom>
Content-Type: text/plain; charset="utf-8"

Mary,

Sorry, but I will be out of town tomorrow...

Barbara.

--_===38330025====my.server.domain===_--
messageRedirect
This operation tells the Server to compose a copy of a message stored in a Mailbox, and to submit it to the Queue for delivery.
属性:
folder
フォルダ名。
UID
メッセージのUID。

ボディ:
A set of one or more To elements specifying the recipient address(es).

例:
The Client redirects the message 156 stored in the INBOX folder to the a1@domain and a2@domain addresses:

C:<messageRedirect id="A001" folder="INBOX" UID="156">
    <To realName="Recipient Name">a1@domain</To>
    <To realName="Recipient-2">a2@domain</To>
  </messageRedirect>

S:<response id="A001"/>
messageForward
This operation tells the Server to compose a copy of a message stored in a Mailbox, and to submit it to the Queue for delivery. The operation uses the same attributes as the messageRedirect operation.
messageConfirm
This operation tells the Server to compose an MDN (Message Disposition Notification) report for a message stored in a Mailbox, and to submit it to the Queue for delivery.
Client applications should use this operation when:
  • the message has been displayed to the user, and
  • the message has the Disposition-Notification header field, and
  • the message does not have the $MDNSent Message Flag, and
  • the user Preference SendMDNMode is set to Automatically or it is set to Manually and the user has explicitly requested to send a confirmation.
属性:
folder
フォルダ名。
UID
メッセージのUID。
type
this attribute should be set to auto (if the confirmation is generated automatically) or to manual (if the user has explicitly requested to send a confirmation).

The Server sends the following data messages:

folderMessage
This synchronous data message is sent when the Server processes the folderRead request.
属性:
folder
フォルダ名。
UID
メッセージのUID。

ボディ:
The XML presentation of the Message.
messageAdded
These synchronous data messages are sent when the Server processes the messageAppend and contactAppend requests with the report attributes set.
属性:
folder
フォルダ名。
UID
the newly added message UID.
注意: even if this data message is sent, the Server will still send asynchronous folderReport data message notifying the client about a new message added to the Folder. The client SHOULD use the folderSync operation to synchronize its internal view with the Server view, otherwise the newly added message will not be "seen" in the Folder.

コンタクト情報の操作

メールボックスには、電子メールメッセージだけでなくコンタクト(vCard) 情報を電子メールアイ テムとして保存することができます。また、電子メールメッセージにvCard データ要素を格納 (MIME パートとして格納) することもできます。単一のメッセージには複数のMIME パートを、さ らに単一のMIME パートには複数のvCard オブジェクトを格納することができます。

MIME パートに vCard 要素が格納されている場合、そのパートのタイプはtext でサブタイプはxvcard またはdictionary です。

電子メールメッセージにvCard データを格納する場合( コマンドはappendMessage または submitMessage を使用)、type="text" かつsubtype="directory" のMIME 要素を指定します。 MIME 要素のボディには、単一もしくは複数の vCard 要素を指定します。

vCard データだけが格納された特殊メッセージ(コンタクトアイテム) は、クラスがコンタクト(Contact) のメールボックスを使って保存されます。この場合の特殊メッセージとは、次のような メッセージをいいます。

vCard データだけが格納された特殊メッセージは、次のコマンドを使って作成、保存が可能です。

contactAppend
このコマンドでは、vCard データがボディに格納された特殊電子メールメッセージが作成さ れます。電子メールメッセージで必要となるヘッダフィールドは自動的に生成され、その結 果のメッセージがメールボックスに保存されます。保存先のメールボックスは指定が可能で す。
属性:
folder
the target Folder name. If specified, the targetMailbox attribute is ignored.
targetMailbox
ターゲットのメールボックスの名前。
ターゲットとして指定したメールボックスが存在しない場合、自動的に作成されます。
flags, replacesUID, report
these optional attributes have the same meaning as the same messageAppend attributes. If the flags attribute is not specified, its value assumed to be Seen.

ボディ:
単一の vCard 要素。
vCard のUID 属性とFN 属性を指定しなかった場合、自動的に追加されます。

例 1:
次は、クライアントからappendVCard コマンドを使ってメールボックスContacts にvCard オブジェクトを追加する場合の例です。

C:<contactAppend id="A011" targetMailbox="Contacts" >
    <vCard>
      <NAME>Bjorn Jensen</NAME>
      <N><FAMILY>Jensen</FAMILY><GIVEN>bjorn</GIVEN>
        <MIDDLE>A</MIDDLE><PREFIX>Mr.</PREFIX><SUFFIX>II</SUFFIX></N>
      <EMAIL><INTERNET /><USERID>bjorn@domain.dom</USERID></EMAIL>
      <TEL><WORK /><VOICE /><MSG /><NUMBER>+1 313 747-4454</NUMBER></TEL>
      <KEY><x509 /><BINVAL>dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK</BINVAL></KEY>
    </vCard>
  </contactAppend>

S:<response id="A011"/>

カレンダーの操作

クライアントでは、次の各コマンドを使って認証済みのアカウントのカレンダーを操作できます。ま た、他のアカウントのメールボックスの操作も可能です(正規のメールボックス名、つまり~ アカウ ント名@ ドメイン名/ メールボックス名の形式でメールボックスを指定します)

calendarOpen
このコマンドを使って、指定したメールボックスを「カレンダー(Calendar)」として 開くことができます。カレンダーは、形式上はサーバーメールボックスです。このコ マンドにより、カレンダーの中のメッセージがすべて解析され、カレンダリング情報 が取り出されます。
カレンダーにはそれぞれ名前があり、同一のセッションでは同じ名前のカレンダーを 2 つ扱うことはできません。一方、同一のセッションで、同じメールボックスを2 つ の異なるカレンダーとして(異なる名前で) 扱うことはできます。
属性:
calendar
カレンダーの名前。この名前で、属性mailbox で指定したメールボックスが オープンされます。この名前としては任意の文字列を指定できます( メールボッ クスを別の名前で開くことができます)。
mailbox
メールボックスの名前。この属性を指定しなかったときには、カレンダー名(上 記の属性calendar で指定した名前)が使用されます。

同一のセッションで、オープンしているカレンダーを同時に複数扱うことができます。
findEvents
このコマンドでは、カレンダーを指定し、そのカレンダーからイベントオブジェクト を取り出すことができます。時間の範囲を指定することもでき、その場合、指定した 時間の範囲で発生したイベントだけが取り出されます。
属性:
calendar
カレンダー名。
timeFrom, timeTill
この2 つの属性でそれぞれ、時間の範囲の始まりと終わりを指定します(選択さ れているタイムゾーンでの時間を指定します)。
limit
オプションの属性。返るイベントの最大数を指定できます。
skip
オプションの属性。値は数値。返ってくるイベントをいくつで分割するかを指定 します。イベントセットが大きい場合、この属性を使って小さい「かたまり」で イベントを取り出すことができます。
このコマンドがサーバーで受信され、指定した時間の範囲で発生したイベントが少な くても一つある場合、events データメッセージがクライアントに送信されます。
calendarClose
このコマンドでは、オープンしているカレンダーを閉じることができます。
属性:
calendar
カレンダー名。
calendarRead
このコマンドでは、メッセージまたはメッセージのパートをサーバーから取り出すこ とができます。
属性:
calendar
カレンダー名。
UID
メッセージのUID。
totalSizeLimit
メッセージ(または取り出すメッセージのパートの合計) の最大サイズ。このサ イズを上限にメッセージが取り出されます。
calendarPublish
This operation places a calendaring item into a Calendar. The existing items(s) with the same UID are removed.
属性:
calendar
カレンダー名。
sendRequests
if this optional attribute exists and its value is no, the item is stored without notifying participants.
Otherwise, a meeting or task request is sent to all participants, and, if there was an existing item with the same UID, Cancel requests are sent to all participants existing in the old item, but excluded from the new item.

ボディ:
The iCalendar element to place into the selected Calendar, and optionalMIME and/or copyMIME elements to add (the same as elements used with the messageAppend operation).
The iCalendar element should contain optional vtimezone elements and exactly one calendaring item element.
It is possible not to include the vtimezone element for the time zone used in the calendaring item element if this time zone is one of the standard time zones known to the Server.
It is possible not to specify the time zone name in the properties containing date values without the Z suffix. In this case, the TimeZone selected for the current user is used.
If the item does not contain an UID element, the Server generated a unique one and adds it to the item.

Example 1:
The Client published an iCalendar object to the Calendar calendar.

C:<calendarPublish id="A021" calendar="Calendar">
   <iCalendar xmlns="urn:ietf:params:xml:ns:xcal">
    <vCalendar method="PUBLISH" prodid="CommuniGate Pro 5.1.7" version="2.0">
     <vevent>
      <organizer CN="Big Boss">MAILTO:boss@company.dom</organizer>
      <attendee CN="Small Boy">MAILTO:boy@company.dom</attendee>
      <rrule>FREQ=WEEKLY;BYDAY=MO,TH</rrule>
      <dtstamp>20061022T091143Z</dtstamp>
      <uid>18927897984@kjjkjkjk-123444</uid>
      <sequence>0</sequence>
      <summary>Report Meeting</summary>
      <dtstart tzid="NorthAmerica/Pacific">20060515T100000</dtstart>
      <dtend tzid="NorthAmerica/Pacific">20060515T110000</dtend>
      <busystatus>BUSY</busystatus>
      <last-modified>20060516T034850Z</last-modified>
      <created>20060516T034850Z</created>
      <priority>5</priority>
      <description>A twice-a-week meeting to discuss the progress of the assigned projects.</description>
     </vevent>
    </vCalendar>
   </iCalendar>
   <MIME uploadID="att01" />
   <copyMIME folder="INBOX" UID="156" partID="3"/>
  </calendarPublish>

S:<response id="A021"/>
注意: If a time value is specified without the "Z" suffix, it is assumed to be a local time in the Time Zone selected for the current user.
calendarCancel
This operation removes a calendaring item from a Calendar. Cancel requests are sent to all participants.
属性:
calendar
カレンダー名。
UID
optional; the message UID (numeric).
sendRequests
if this optional attribute is no, cancel request messages are not sent to the item attendees.

ボディ:
  • optional iCalendar element to cancel.
    If this element is not specified, the item with the specified message UID (this is a number, and it is not the calendar item UID) is taken from the Calendar. Then all items with the same item UIDs are removed.
  • optional requestComment element containing a text body - a comment to include into the cancel request message.
calendarUpdate
This operation updates a calendaring item in a Calendar using a reply-type iCalendar object. This item specifies if a particular attendee has accepted or rejected the invitation.
属性:
calendar
カレンダー名。

ボディ:
The iCalendar reply-type item.
calendarAccept
This operation places a calendaring item into a Calendar. The existing items(s) with the same UID are removed.
属性:
calendar
カレンダー名。
PARTSTAT
the acceptance status: ACCEPTED, TENTATIVE, IN-PROCESS (Tasks only), COMPLETED (Tasks only).
sendReply
if this optional attribute is no, no reply message is send to the item organizer.

ボディ:
If the item is placed successfully, the iCalendar reply message is sent to the item organizer. Replies are not sent for Event items specifying the current user as an attendee with RSVP=FALSE parameter, or if the request sendReply attribute is set to no.
calendarDecline
This operation rejects a calendaring item.
属性:
calendar
the Calendar name. This parameter is optional. If specified, the items with the same UID are removed from this Calendar.
sendReply
if this optional attribute is no, no reply message is send to the item organizer.

ボディ:
  • The iCalendar element to decline.
  • optional replyComment element containing a text body - a comment to include into the reply message.

Use this operation when a user decides not to attend a meeting stored as a published item in a Calendar. (if the current user is the meeting origanizer, use the calendarCancel operation instead).
Specify the published item itself and the calendar attribute to remove the item from the Calendar.
The operation sends a negative reply message to the item organizer (unless the sendReply attribute is set to no).

Use this operation when a user opens a request item (in an incoming E-mail) and decides to decline that request.
Specify the request item, and do not specify any calendar attribute.
The operation sends a negative reply message to the item organizer (unless the sendReply attribute is set to no).

Use this operation when a user opens a cancellation request item (in an incoming E-mail), and decides to remove the cancelled item from the Calendar.
Specify the cancellation request item and the calendar attribute (usually - the Main Calendar name), to remove the corresponding item(s) from that calendar.
The operation does not send any reply message.

If the specified item is a request, the operation sends a negative reply message to the item organizer.
If the specified item is a cancel request item, the operation does not send a reply message to the item organizer; specify the calendar attribute to remove the corresponding item from the calendar.

以下は、サーバーから返るデータメッセージです。

events
findEvents 要求を送信した場合、このメッセージがサーバーから返ります。
属性:
calendar, timeFrom, timeTill, skip
いずれも、findEvents 要求で指定した属性と同じです。
items
見つかったイベントの総数。

ボディ:
見つかったイベントを示すevent 要素のセット。
属性:
UID
このメッセージ(イベントメッセージ) のUID。
timeFrom
このイベントの開始時刻(選択されているタイムゾーンでの時刻)。イベントが "all-day" (終日) イベントの場合、この属性は格納されていません。
duration
イベントの時間の長さ(秒)。イベントが"all-day" (終日) イベントの場合、こ の属性は格納されていません。
busyStatus
イベントのビジー状態(BUSY、TENTATIVE、UNAVAILABLE、FREE)

ボディ:
各イベントフィールド(summary)。
calendarReport
These messages are sent when the Calendar data is modified.
属性:
calendar
カレンダー名。
mode
this optional attribute specifies the type of notification.
  • If the attribute value is notify some calendar messages have been added, modified, or deleted.
    The client is expected to re-send the findEvents request for this Calendar.

After the Server sends a "notify-mode" calendarReport message to the Client, the Server may choose not to send further "notify-mode" messages for this Calendar until the client performs the findEvents operation on this Calendar.


シグナリング

クライアントから「バインド」コマンドを送信し、認証済みユーザーに向けられたシグナルを取り出 すことができます。

クライアントでは、単一もしくは複数の同時コミュニケーションセッション(コール)の監視と管理 が可能です。コールにはそれぞれcallLeg 識別子があり、この識別子を使うことで管理を行うこと ができます。

signalBind
このコマンドでは、カレントのXIMSS セッションを介して、認証済みユーザーに送られたシ グナルを受信できます。
属性:
deviceName
オプションの属性。使用されているデバイスの名前です。
presence
オプションの属性。この属性の値をyes にしておくと、ロスター/ プレゼンス 通知が サーバーから返ります。

ボディ:
(オプション) クライアントSDP (セッション記述プロトコル) ディスクリプタの XML プレゼンテーション。
SDP ディスクリプタを使って、クライアント側の機能(音声/ ビデオコールの処理機 能) の指定、また「ファーエンドNAT」構成の検出が可能です。
注意: ファーエンドNAT 構成を検出する場合、SDP ディスクリプタに属性ip を指定 します。値は、クライアントが使用しているデフォルトメディアのIP アドレスです(下記を参照)。
signalUnbind
このコマンドを使ってバインドを解除できます。このコマンドを送信し、サーバーで処理が 完了すると、認証済みユーザーに送られたシグナルは受信されなくなります。
callKill
このコマンドを送信すると、送信コールが開始されます。
If the call was in the 'calling' state, the outgoing call is cancelled.
If the call was in the 'alerting' state, the incoming call is rejected.
If the call was in the 'connected' state, the disconnect signal is sent to the peer.
属性:
callLeg
新規のコール識別子( コールレグ)。カレントのXIMSS セッションでは、このコール 識別子と同じコール識別子のコールは扱えません。
After this operation succeeds, it is possible to create a new call with the same identifier.
callStart
Use this operation to start an outgoing call.
属性:
callLeg
the new call identifier. The current XIMSS session should have no other call with this identifier.
peer
an E-mail address or a SIP URI to call.

ボディ:
the XML presentation of the client SDP descriptor.

このコマンドの処理が成功すると、新規のコールオブジェクトが作成され、同時に送信コー ルが開始されます。開始後、サーバーからcallProvisioned メッセージ(なし、または 単一もしくは複数)が返ります。その後、callDisconnect(コール切断)メッセージまた はcallConnected(コール接続完了)メッセージがサーバーから返ります。
注意: クライアント側では、上記のサーバーからのメッセージの受信準備をしておく必要が あります。厳密には、クライアントで、このcallStart コマンドの応答を受信する前に、 上記のサーバーからのメッセージの受信準備ができていなければなりません。
注意: コールが「ビハインドNAT」コール(NAT の背後に対するコール) の場合、SDP ディスクリプタを定義し、属性ip を指定しておかなければなりません。属性ip の値は、ク ライアントで使用されているデフォルトメディアのIP アドレスです(下記を参照)。
注意: if the call fails (the callDisconnected message is received), the client still needs to use the callKill operation to release the resources associated with the call and to allow itself to reuse the call identifier.
callProvision
このコマンドでは、受信コールのプロビジョン(準備) が可能です。
属性:
callLeg
受信コールの識別子(コールレグ)

ボディ (オプション):
クライアントSDP (セッション記述プロトコル) ディスクリプタの XML プレゼンテーション。
callRedirect
このコマンドでは、受信コールのリダイレクトが可能です。
属性:
callLeg
受信コールの識別子(コールレグ)

ボディ:
XML の単一もしくは複数のTo 要素。各要素のボディはいずれもテキストで、テキス トはコールのリダイレクト先のURI です。

注意: コールのリダイレクト後、そのコールで使用されていたリソースが自動的に解放され ることはありません。したがって、クライアントからcallKill コマンドを送信し、リソー スを解放しなければなりません。これで、そのコールのコール識別子を再度、クライアント で使用できるようになります。

例:
下記は、受信コールinp003 をuser1@example.com とuser2@example.com. に リダイレクトする場合の例です。

C:<callRedirect id="A018" callLeg="inp003" >
    <To>user1@example.com</To><To>user2@example.com</To>
  </callRedirect>

S:<response id="A018"/>
callReject
Use this operation to reject an incoming call. You can also use the callKill operation, but this operation allows you to specify an error code.
属性:
callLeg
受信コールの識別子(コールレグ)
signalCode
a numeric code (defined with the SIP standards) to pass to the Signal component as an error code.
Use the 486 code ("Busy here") to signal that this device is "busy" (but other devices registered for this user will continue to ring).
Use a 6xx code (600 - "Busy Everywhere" or 603 - "Declined") to signal that the user does not want to accept this call on any device (all other devices will stop ringing, too).
注意: the client still needs to use the callKill operation to release the resources associated with the call and to allow itself to reuse the call identifier.

例:
Rejecting an incoming call inp004 with the 603 "Declined" code:

C:<callReject id="A020" callLeg="inp004" signalCode="603" />
S:<response id="A020"/>
callAccept
このコマンドでは、受信コールの受け入れと、その処理が可能です。
属性:
callLeg
受信コールの識別子(コールレグ)

ボディ:
クライアントSDP ディスクリプタのXML プレゼンテーション。
callSendDTMF
このコマンドでは、シグナリングパスを介してDTMF シグナルを送信できます。
属性:
callLeg
コール識別子(コールレグ)

ボディ:
DTMF コードを格納した文字列(10 は'*'、11 は'#' で表します)。この文字列が送信 されます。
callUpdate
Use this operation to update a call (to modify the call SDP descriptor).
属性:
callLeg
コール識別子(コールレグ)

ボディ:
the XML presentation of the new client SDP descriptor.

If the operation succeeds, the server sends a callOpCompleted message.

If the operation fails, the server sends a callOpFailed message.

The client should not attempt any other operations (except callKill) with this call before a callOpCompleted or callOpFailed message is received.

callTransfer
このコマンドを使って、接続済みのピアを別のピア(第三者) に転送できます( コール転 送)。
属性:
callLeg
コール識別子(コールレグ)
peer
コールの転送先のピアの電子メールアドレスまたはSIP URI。この属性を使って「ブラ インド転送」処理を開始できます(保留転送には、属性otherLeg を使います)。
otherLeg
コール識別子。この属性には、もう一つのリモートピアのコールのコール識別子を指 定します。この属性を使う場合、現在のピアとリモートピア(属性callLeg のピア)、 また、現在のピアともう一つのリモートピア( この属性otherLeg のピア) が両方と も接続状態であることが必要です。この属性を使って「保留転送」が可能です。処理 では、リモートピア(属性callLeg のピア) がもう一つのリモートピア( この属性 otherLeg のピア) に接続されます。

属性peer と属性otherLeg の両方を指定した場合、属性peer は無視されます。つまり、 保留転送が優先されます。

コール転送処理が成功した場合、"callLeg" のコールは切断されます(callDisconnected メッセージがクライアントに送信されます)。また、コール転送が「保留転送」の場合、  "otherLeg" のコールが切断されるとcallDisconnected メッセージがクライアントに送信 されます。

以下は、サーバーからクライアントに送信されるデータメッセージです。

makeCall
Use this operation to establish a call using any registered device or client. The Server initiates a call to the autneticated Account, causing all its registred devices to ring. When any device answers the call, that device is instructed to call the specified address (or telephone number).
属性:
peer
an E-mail address or a SIP URI to call.

makeCallReport messages are sent to the client informing it about the call progress. This operation completes when the call is established, or when the operation fails, or after a time-out (15 seconds). If the call is not established before time-out, the operation completes, but the call establishing process proceeds.

以下は、サーバーからクライアントに送信されるデータメッセージです。

callProvisioned
送信コールが処理されている場合、このメッセージがクライアントに送信されます (callStart コマンドがサーバーで受信された後、サーバーで送信コールの処理が開始され ます)
属性:
callLeg
コール識別子(コールレグ)

ボディ (オプション):
プロビジョニング応答(callProvision コマンドの応答) のSDP (オ ブジェクト) のXML プレゼンテーション。
callDisconnected
送信コールが失敗したとき、受信コールがキャンセルされたとき、確立済みのコールが切断 されたときのいずれかの場合、このメッセージ(コール切断)がクライアントに送信されま す。
属性:
callLeg
コール識別子(コールレグ)
errorText
オプションの属性。この属性には、コール切断の理由(エラー)が格納されています。
signalCode
this optional attribute specifies the numeric signaling error code.

注意: コールが切断されても、そのコールで使用されていたリソースが自動的に解放される ことはありません。したがって、クライアントからcallKill コマンドを送信し、リソース を解放しなければなりません。これで、そのコールのコール識別子を再度、クライアントで 使用できるようになります。
callConnected
送信コールが成功したとき、またはコールが確立されたときに、このメッセージがクライア ントに送信されます。
属性:
callLeg
コール識別子(コールレグ)

ボディ:
リモートパーティ(ピア) のSDP (オブジェクト) のXML プレゼンテーション。
callIncoming
サーバーで新規の受信コールが受信された場合、このメッセージがクライアントに送信され ます( クライアントでは、このメッセージの受信後、signalBind コマンドを使って受信 コールを受け取る処理が必要です)。
属性:
callLeg
コール識別子。この識別子は、サーバーで生成されます。
peer
the remote peer E-mail address.
peerName
optional; the remote peer real name.

ボディ:
要求のSDP (オブジェクト) のXML プレゼンテーション。
callUpdated
These messages are sent when an extsting call is updated (placed on hold, switched to a different remote peer, etc.):
属性:
callLeg
コール識別子(コールレグ)
peer
optional; the remote peer E-mail address. It is sent when a call has been transferred.
peerName
optional; the remote peer real name.

ボディ:
The XML presentation of the updated peer SDP.
callOpCompleted
These messages are sent when in-call operations (such as callUpdate) are completed.
属性:
callLeg
コール識別子(コールレグ)
callOpFailed
コールに関する内部処理(callSendDTMF など)に失敗した場合、このメッセージが送信 されます。
属性:
callLeg
コール識別子(コールレグ)
errorText
エラーメッセージ。
callDTMF
シグナリングパスを介してDTMF シグナルが受信された場合、このメッセージがクライアン トに送信されます。
属性:
callLeg
コール識別子(コールレグ)

ボディ:
A string with the numeric DTMF code received.
makeCallReport
These messages are sent during the makeCall operation.
ボディ:
受信されたDTMF シグナル(数値コード)を格納した文字列。

インスタントメッセージング

インスタントメッセージング(IM) モデルでは、クライアント側で「ピア」についてそれぞれ別個 のウィンドウを用意し、管理することが前提になっています。ここで「ピア」とは、IM カンバセー ション(セッション) に参加している別のIM ユーザーをいいます。

sendIM
このコマンドを使って、ユーザーを指定し、そのユーザーにインスタントメッセージを送信できます。サーバーからはXIMSS 応答がすぐに返ります。つまり、インスタントメッセージ が実際に配信された(または配信に失敗した) かどうかの待機は行われません。
IM セッションの明示的なオープン処理は必要ありません。指定したユーザー(ピア) との間 でオープンされているIM セッションがなかった場合、新規のIM セッションが生成されま す。
属性:
peer
ユーザーの電子メールアドレス。このユーザーに対してインスタントメッセージが送 信されます。

ボディ:
インスタントメッセージのテキスト(UTF-8 エンコーディング)。
This element should be sent when the user is preparing the message but has not sent it yet.
closeIM
このコマンドでは、ユーザーを指定し、そのユーザーとの間でオープンされているIM セッ ションをすべて閉じることができます。クライアントアプリケーションでは、IM カンバセー ションウィンドウを閉じる際、このコマンドをサーバーに送信しなければなりません。
属性:
peer
ユーザーの電子メールアドレス。このユーザーとの間のIM セッションが閉じられま す。

サーバーからは、次のようなデータメッセージが返ります。

readIM
サーバーで、クライアントユーザーに宛てられたインスタントメッセージが受信された場 合、このメッセージがクライアントに送信されます。
属性:
peer
インスタントメッセージ(サーバーで受信したインスタントメッセージ)を送信した ユーザーの電子メールアドレス。
peerName
optional; the sender real name.

ボディ:
インスタントメッセージのテキスト(UTF-8 エンコーディング)。

IM セッションの明示的なオープン処理は必要ありません。ただし、クライアントで、指定さ れているユーザー(ピア) 用のカンバセーションウィンドウがオープンされていない場合、クライアント側で新規のウィンドウをオープンしなければなりません。
errorIM
サーバーで、インスタントメッセージの配信が失敗した場合、このメッセージがクライアン トに返ります。
属性:
peer
インスタントメッセージの受取人(クライアントユーザー)の電子メールアドレス。
errorText
エラーメッセージのテキスト。
errorNum
エラーメッセージの数値コード。

ボディ:
送信に失敗したインスタントメッセージのテキスト(UTF-8)。

ロスターとプレゼンス

ロスター/ プレゼンスモデルは、 XMPP プロトコルをベースとしたモデルです。

ロスターはアイテムのセットで、アイテムはそれぞれローカルユーザーまたはリモートユーザーのコ ンタクト(連絡先) です。クライアント側のユーザーは、コンタクト側のユーザーのプレゼンス情報 (オフラインなどの状態) を確認できます。また、コンタクト側のユーザーもクライアント側のユー ザーのプレゼンス情報をチェックできます。プレゼンス情報のチェックには、アクセス権の設定が可 能です(rosterSet コマンドを使用します)。

rosterList
このコマンドでは、アクティブのロスターアイテムをすべて取り出すことができます。
属性:

このコマンドの送信後、サーバーからrosterItem データメッセージが返ります。メッ セージには、現在アクティブのロスターアイテム(コンタクト)が格納されています。
rosterSet
このコマンドでは、ロスターに記録されているコンタクト情報の修正が可能です。
属性:
peer
コンタクト(のユーザー)の電子メールアドレス。
subscription
この属性(オプション)には、次のパラメータを指定できます。
  • remove: このパラメータを指定しておくと、コンタクトがロスターから削除されます。
  • subscribed: このパラメータを指定した場合、コンタクト側のユーザーは、クライアント側のユーザーのプレゼンス情報を確認(表示)できるようになります(コンタクト側のユーザーからのプレゼンス確認要求は許可されます)
  • unsubscribed: このパラメータを指定した場合、コンタクト側のユーザーは、クライアント側のユーザーのプレゼンス情報を確認できなくなります(コンタクト側のユーザーからのプレゼンス確認要求は拒否されます)。または、コンタクト側のユーザーがクライアント側のユーザーのプレゼンス情報を確認できるように設定されている場合、その権限が取り消されます。
  • subscribe: このパラメータを指定した場合、クライアント側のユーザーは、コンタクト側のユーザーのプレゼンス情報を確認できるようになります。
  • subBoth: confirm the contact request to monitor the user's presence information, and send a request to monitor the contact's presence information.
  • unsubscribe: このパラメータを指定した場合、クライアント側のユーザーは、コンタクト側のユーザーのプレゼンス情報を確認できなくなります。
  • update または指定なし: コンタクト情報が更新されます。
name
オプションの属性。コンタクトのユーザーの実名を指定できます。

ボディ:
XML 要素group のセット。各要素のボディには、このコンタクトが属するグループ の名前を指定します。

update、subscribed、subscribe のいずれかを指定し、属性peer に指定した電子メール アドレスが存在しなかった場合、新規のロスターアイテム(コンタクト)が作成されます。

presenceSet
このコマンドでは、( クライアント側の) ユーザーのプレゼンス情報の設定が可能です。こ のコマンドがサーバーで受信されると、現在接続されているすべてのクライアント(XIMSS、 XMPP、SIP) からプレゼンス情報が収集され、各情報がすべて統合されます。その後、統合 されたプレゼンス情報がネットワーク上のすべてのエンティティ(プレゼンス情報が送信さ れるように設定されているエンティティ) に配信されます。
属性:
type
オプションの属性。値としてはunavailable を指定できます。その場合、ユーザー が「実質的にオフライン」であることを示します。
この属性を指定しなかった場合、ユーザーはオンラインであることを示します。

ボディ:
コマンドのボディには、オプションでXML 要素show を指定できます。要素show の ボディはテキストで、内容はユーザーの詳細プレゼンス状態(テキスト)です。指定 できる状態は、次の通りです。
  • dnd - 取り込み中、つまり現在電話中であることを示します。
  • away - 会議や昼食で不在だが、そのうち戻ることを示します。
  • xa - 外出中(長期)であることを示します。
Alternatively, you can use a presence XML element; its text body specifies the more detailed user presence status:
  • offline - "virtually offline".
  • online - online.
  • on-phone - user is engaged into a real-time conversation.
  • in-meeting - user is in a middle of a meeting.
  • busy - generic form "cannot chat right now".
  • be-back - user will be right back
  • out-lunch - user is out for a break/meal.
  • away - extended away.

セッションの開始後は、ユーザーの状態は「実質的にオフライン」になっています。した がって、クライアントでは、このpresenceSet コマンドを使ってユーザーの状態を「オン ライン」にしなければなりません。

ユーザーが接続を切断すると、セッションの状態は自動的にunavailable(オフライン) に切り替わります。

サーバーからは、次のようなデータメッセージが返ります。

rosterItem
クライアントからのrosterList 要求の処理が完了すると、このメッセージがサーバーか ら返ります。ロスターアイテム(コンタクト)一つにつき、メッセージが一つ送信されま す。
属性:
peer
コンタクトの電子メールアドレス。
subscription
  • to: クライアント側のユーザーがコンタクト側のユーザーの状態を確認できることを示します。
  • from: コンタクト側のユーザーがクライアント側のユーザーの状態を確認できることを示します。
  • both: クライアント側のユーザーとコンタクト側のユーザーの両方が相互に状態を確認できることを示します。
  • none: クライアント側のユーザーとコンタクト側のユーザーはどちらも、相手の状態を確認できないことを示します。
ask
オプションの属性。クライアントから、クライアント側のユーザーがコンタクト側の ユーザーのプレゼンス情報を確認できるようにする要求(パラメータsubscribe が 指定された要求)が送信されたものの、まだ、その要求が確認されていない場合、こ の属性には値subscribe が格納されています。
name
オプションの属性。コンタクトの実名が格納されています。

ボディ:
XML 要素group のセット。各要素のボディには、このコンタクトが属するグループ の名前が格納されています。

signalBind コマンド を使ってロスター/ プレゼンス通知を有効(属性presence の値をyes に設定) している場合、次のような処理が実行されます。
  • ロスターアイテムの追加または更新が発生するたびに、サーバーからrosterItem メッセー ジがクライアントに送信されます。このメッセージには、新規または更新後のデータが格納 されています。
  • ロスターアイテムの削除が発生するたびに、サーバーからrosterItem メッセージがクライ アントに送信されます。このメッセージでは、属性subscription の値としてremove が 格納されています。
  • サーバーからpresence データメッセージがクライアントに送信されます。presence メッ セージの内容は次の通りです。
presence
属性:
peer
コンタクト(相手ユーザー)の電子メールアドレス。
type
オプションの属性で、値は次の通りです。
  • unavailable: コンタクトがオフラインであることを示します。
  • subscribe: コンタクト側のユーザーがクライアント側のユーザーのプレゼンス情報の確認(確認できる権限)を要求していることを示します。
  • なし: コンタクトがオンラインであることを示します。

ボディ:
オプションのXML 要素show。要素show のボディはテキストで、内容はコンタクトの詳細 プレゼンス状態です(上記を参照)

プレファレンス

クライアントからは、認証済みユーザーのプレファレンスの取り出しと更新が可能です。

prefsRead
このコマンドでは、認証済みユーザーのプレファレンスを取り出すことができます。
属性:
type
オプションの属性。値をdefault にしておくと、アカウントのドメインのデフォルト のプレファレンスが取り出されます。値をcustom にしておいた場合、明示的に指定 されたプレファレンス(アカウントのカスタムプレファレンス)が取り出されます。 この属性を指定しなかった場合、アカウントの有効なプレファレンスが取り出されま す。
prefsStore
このコマンドを使って、認証済みユーザーのプレファレンスを設定できます。
ボディ:
複数のXML サブ要素の集合。サブ要素の名前はそれぞれ個々のプレファレンスの名前 です。サブ要素のボディは、新規の(設定する) プレファレンスの値です。サブ要素 の値をdefault にしておくと、既存のカスタムのプレファレンスは削除され、デフォ ルトの値が有効なプレファレンスの値になります。値として配列を指定することもで き、その場合、XML 要素array を使って定義しなければなりません。
If the value is a dictionary, it should be presented using the dictionary XML presentation.

If the body contains the UserFromAddr element, the Server uses this element and an optional UserFromName element to compose the UserFrom element with an E-mail address value (in the "UserFromName_value" <UserFromAddr_value> format).

以下は、サーバーから返るデータメッセージです。

prefs
クライアントからのreadPrefs 要求がサーバーで処理されると、このメッセージがクライ アントに送信されます。
属性:
type
オプションの属性。readPrefs コマンドのtype と同じです。

ボディ:
複数のXML サブ要素の集合。サブ要素の名前はそれぞれ個々のプレファレンスの名前 です。サブ要素のボディは、新規の(設定する) プレファレンスの値です。値として 配列を指定することもでき、その場合、XML 要素array を使って定義しなければな りません。
If the value is a dictionary, it is presented using the dictionary XML presentation.

If the prefs data contains the UserFrom string, the Server tries to parse that E-mail address. If the address is parsed, the UserFromAddr element (with the pure userName@domainName address) and, optinally, UserFromName element (with the address comment) are added to the data message body.


File Storage Operations

A client can manage the Account ファイルストレ.
If the authenticated user has the CanAccessWebSites Domain Administrator right, this client can manage files in someone else's Account by using the prefix when specifying file names: ~accountName/fileName.

fileList
This operation provides a list of stored files.
属性:
directory
an optional attribute with the File Storage subdirectory name. If absent, the content of the Account top File Storage directory is returned.
The Server returns one fileInfo message for each file or directory in the specified File Storage directory.
fileWrite
This operation stores data in a file.
属性:
fileName
the name of file to write to.
position
If this attribute is absent, then this operation completely rewrites the specified file. If the file did not exist, it is created.
If this attribute value is append, this operation adds the data to the file end (atomically).
If this attribute value is a number, the operation rewrites the existing file from the byte position specified with this number.

ボディ:
Either a text with file data, or a base64 XML element. The text body of this XML element is base64-encoded file data (base64 encoding allows you to store binary data).
fileStore
This operation stores an uploaded file as a File Storage file.
属性:
fileName
the name of file to be created.
uploadID
a string identifying a file in the "uploaded file set".
If a file under this name already exists, the old file is removed first.
fileRead
This operation reads data from a file.
属性:
fileName
the name of file to read from.
position
This numeric attribute specifies the file position to start reading from. If this attribute is absent, then the file is read from its start (from the file position 0).
limit
This numeric attribute specifies the maximum size of the file data portion to read. If not specified, 1MB limit is used.
type
If this optional attribute exists and its value is binary, the file data is returned base64-encoded.
The Server returns a fileData message.
fileRename
This operation removes a file or directory in the File Storage.
属性:
fileName
the name of file or directory to rename.
newName
the new name for the file or directory.
fileRemove
This operation removes a file or directory from the File Storage.
属性:
fileName
the name of file or directory to remove. Only empty directories can be removed.
fileCopy
This operation copies file or message contents into a File Storage file.
属性:
newName
the name of file to create (copy target). If file with this name already exists, it is removed.
fileName
optional: the name of File Storage file to copy.

ボディ:
one optional copyMIME element. It specified a message part to decode and copy into the specified file.
The operation must contain either a fileName attribute or one copyMIME body element.

The Server sends the following data messages:

fileInfo
This synchronous data message is sent when the Server processes the fileList request.
属性:
fileName
the file or subdirectory name.
directory
an optional attribute, the same as the directory attribute in the fileList request.
type
an optional attribute exists and contains the directory value, if this message describes a subdirectory.
size
an optional attribute with the file size in bytes (absent if this message describes a subdirectory).
timeModified
an optional attribute with the file modification date and time (local time).
fileData
This message is sent when the Server processes the fileRead request.
属性:
fileName
the name of read file.
position
the file position of the read data.
slice
the size of read data (in bytes). To read the next portion of the file, add the position and slice values to get the new position value.
size
the file total size.
timeModified
an optional attribute with the file modification date and time (local time).

ボディ:
Either a text with file data, or the base64 element. The body of this XML element is base64-encoded file data (base64 encoding allows you to retrieve binary data).

例:

C:<fileRead id="A001" fileName="test.txt" />
S:<fileData id="A001" fileName="test.txt"position="0" slice="22" size="22" timeModified="20061018T115836">This is not your file!</fileData>
S:<response id="A001"/>

C:<fileRead id="A002" fileName="test.txt" limit="15" />
S:<fileData id="A002" fileName="test.txt"position="0" slice="15" size="22" timeModified="20061018T115836">This is not you</fileData>
S:<response id="A002"/>

C:<fileRead id="A003" fileName="test.txt" limit="15" position="15" />
S:<fileData id="A003" fileName="test.txt"position="15" slice="7" size="22" timeModified="20061018T115836">r file!</fileData>
S:<response id="A003"/>

C:<fileRead id="A004" fileName="test.txt" limit="15" position="15" type="binary" />
S:<fileData id="A004" fileName="test.txt"position="15" slice="7" size="22" timeModified="20061018T115836"><base64>ciBmaWxlIQ==</base64></fileData>
S:<response id="A004"/>

C:<fileRead id="A005" fileName="test.txt" position="25" />
S:<response id="A005" errorText="reading beyond the EOF mark" errorNum="500" />

Automated Rule Management

A client can manage the Account Automated Rules. Rules sets are addressed using the type parameter. The following parameter values are supported:

Each Rule in a set has name and priority attributes. Signal Rules also have a stage attribute, specifying when the Rule should be applied.

Each Rule contains zero or more condition elements, zero or more action elements, and zero or one comment elements:

condition
See the Rules section for more information.
属性:
opCode
the Rule condition data.
operator
the Rule condition operation.

ボディ:
the Rule condition parameter.
action
See the Rules section for more information.
属性:
opCode
the Rule action operation.

ボディ:
the Rule action parameter.
comment
ボディ:
the Rule comment text.

例:
a Mail Rule storing all messages with the X-Junk: 5 header field in the Junk Mailbox. Exception is made for messages coming from authenticated users.
<rule type="mailIn" name="Junk Filter" priority="2" >
  <condition opCode="Header Field" operator="is">X-Junk: 5*</condition>
  <condition opCode="Source" operator="is not">authenticated</condition>
  <action opCode="Store in">Junk</action>
  <action opCode="Discard"></action>
  <comment>This is my test Rule&#x21;</comment>
</rule>
ruleList
This operation tells the Server to send one rule message for each Account Rule of the specified type. These messages do not have a body.
属性:
type
the Rule set.
ruleRead
This operation tells the Server to send one rule message for the specified Rule. This message body contains XML elements with the Rule condition(s), action(s), and an optional comment.
属性:
type
the Rule set.
name
the Rule name.
ruleSet
This operation stores a new Rule. If there is an existing Rule with the same name, it is removed.
The user should have a right to specify conditions and actions used in both new and old Rules.
属性:
type
the Rule set.
name
the Rule name.
priority
the Rule priority.
stage
the Rule stage (for Signal Rules).

ボディ:
the same XML elements as used in the rule message: zero or more condition elements, zero or more action elements, and zero or one comment element.
ruleUpdate
This operation modifies the existing Rule priority and/or its stage (for Signal Rules).
The user should have a right to specify conditions and actions used in the Rule to be modified.
属性:
type
the Rule set.
name
the Rule name.
priority
the Rule priority.
stage
the Rule stage (for Signal Rules).
ruleRename
This operation renames an existing Rule.
The user should have a right to specify conditions and actions used in the Rule to be renamed.
属性:
type
the Rule set.
name
the existing Rule name.
newName
the new Rule name.
ruleRemove
This operation removes an existing Rule.
The user should have a right to specify conditions and actions used in the Rule to be removed.
属性:
type
the Rule set.
name
the existing Rule name.

The Server sends the following data messages:

rule
This synchronous data message is sent when the Server processes the ruleList request or the ruleRead request. See above for the rule message format.

Real-Time Application Management

A client can interact with the Real-Time Applications running on the CommuniGate Pro Server or Cluster.

A XIMSS session can communicate with Tasks by sending them Events. Tasks see a XIMSS session as a yet another Task, so they can send Events back to it.

Each XIMSS session maintains a list of Tasks Handles for the Tasks it communicates with. Each handle in the list is associated with an taskID string. The XIMSS client uses these taskID strings to address the Tasks in the list.

taskFindMeeting
This operation implements the FindMeeting operation. See the CG/PL section for more information.
属性:
meetingSet
the optional Meeting set name. If the parameter value is missing or it is an empty string, the Default Meeting Set is used.
meetingName
the unique ID or name for the Meeting.
If this operation succeeds, the Server returns a taskMeeting message with the found meeting data.
taskCreateMeeting
This operation implements the CreateMeeting operation. See the CG/PL section for more information.
属性:
meetingSet
the optional Meeting set name. If the parameter value is missing or it is an empty string, the Default Meeting Set is used.
meetingName
the unique ID or name for the Meeting.

ボディ:
The text to add to the Meeting Event as a parameter.
taskRemoveMeeting, taskClearMeeting, taskActivateMeeting, taskDeactivateMeeting
These operations implement the Meeting operations. See the CG/PL section for more information.
属性:
meetingSet
the optional Meeting set name. If the parameter value is missing or it is an empty string, the Default Meeting Set is used.
meetingName
the unique ID or name for the Meeting.
taskSendEvent
This operation send an Event to a Task.
属性:
taskRef
the internal taskID of the Task to send an Event to.
eventName
the name of the Event to send.

ボディ:
text to send with the Event as a parameter.
taskClose
There are some session resources associated with each internal taskID. If your client works with many different Tasks, it is recommended that it uses the taskClose operation when it ends communication with a particular Task, so its session-internal taskID is released.
If the same Task sends an Event to this session, or its Task Handle is discovered using other mechanisms, the new taskID is assigned to this Task in this session.
属性:
taskRef
the internal taskID to release.

The Server sends the following data messages:

taskMeeting
This synchronous data message is sent when the Server processes the taskFindMeeting request.
属性:
meetingSet, meetingName
copies of the taskFindMeeting request attributes.
taskRef
an optional attribute: the internal taskID of the Task that has activated this Meeting.
expires
an optional attribute with the Meeting expiration date and time (GMT).

ボディ:
The XML presentation of the Meeting parameters.
taskEvent
This asynchronous data message is sent when some Task or the Server itself sends an Event to the current XIMSS session.
属性:
taskRef
the internal taskID of the Task that has sent this Event. If this attribute is absent, then the Event was generated and sent by the Server itself.
eventName
the name of the received Event.

ボディ:
The text or the XML presentation of the Event parameter.

Directory

A client can access the global ディレクトリ.

listDirectory
This operation retrieves data from the Directory.
属性:
baseDN
the directory record DN to start the search from. If the attribute value is $, the baseDN is set to the Directory subtree containing records for the current Account Domain.
filter
this optional attribute specifies a search filter in the RFC2254 format.
scope
this optional attribute specifies the search type:
  • base - the baseDN record is retrieved (the filter attribute is ignored)
  • one (default) - the baseDN immediate subtree is searched (one-level search)
  • sub - the entire baseDN subtree is searched (multi-level search)
limit
this optional attribute specifies the maximum number of directory records to retrieve.

Body (オプション):
a set of field XML elements. Each element should have a text body containing the name of an attribute to retrieve. If no field element is specified, all non-service Directory record attributes are retrieved.
注意: if the mail attribute is explicitly specified, the Server will compose this attribute value for all CommuniGate Pro Object records without this attribute.
The Server sends a directoryData message for each record found.

The Server sends the following data messages:

directoryData
This synchronous data message is sent for each Directory record retrieved with the listDirectory request.
属性:
name
the record DN.

ボディ:
The XML presentation of the Record attributes.

Datasets

A client can manage the Account datasets (such as the RepliedAddresses dataset).

datasetRemove
This operation removes an Account dataset.
属性:
dataset
the name of the dataset to remove.
ifExists
if this attribute exists and its value is yes, no error is generated when the specified dataset does not exist.

XML データフォーマット

データ要素は、XML フォーマットで表現されます。使用される表記法は次の通りです。

配列

配列は、XML サブ要素subValue(単一または複数)のシーケンスとして示されます。この XML サブ要素のボディは、配列の要素です。空の配列は、単一のXML サブ要素subValue (ボディなし)で表現されます。

Dictionary

A dictionary is presented as a sequence of one or more subKey XML elements.
The XML element key attribute presents the dictionary element key, and the XML body represents the dictionary element value.
An empty dictionary is presented as one subKey XML element without a key attribute and without a body.

EMail

このXML 要素は、電子メールメッセージ、または、そのmessage/rfc822 MIME サブパートを 表します。

ボディ:
XML サブ要素のセット。サブ要素の内容はそれぞれ電子メールメッセージのヘッダ フィールド(From、Date など) で、MIME コンテント関連のフィールド(Content- Type など) は含まれません。
オプションで、
MIME 要素(メッセージのボディを格納)も格納可能です。

XML サブ要素のタイプ( タグ名) はフィールド名です。下記は例です。

<Subject>Hello, world!</Subject>

フィールドの種類:
アドレス: From, To, Cc, Bcc, Return-Path, Sender, Reply-To, Disposition-Notification-To, Recent-From, Recent-To, Return-Receipt-To, Errors-To
上記の要素にはいずれも属性realName を定義できます。この属性の値は MIME 復号化アドレスの名前部(name-part) またはコメント(comment) です。 要素のボディは電子メールアドレスで、フォーマットは、 userName@domainName フォーマットまたはより一般的な userName[%domainA[%domainB]]@domainName フォーマットです。
単一のフィールドにアドレスが複数存在する場合、その数だけのXML 要素が作 成されます。したがって、各要素のボディはそれぞれ一つです。
タイムスタンプ: Date, Resent-Date
上記の2 つの要素にはいずれも属性timeShift があります。値は、そのフィー ルドに指定されているローカル時刻とGMT 時刻との差(秒) です。
要素のボディは、そのフィールドのグローバル(GMT)時刻(iCalendar フォーマット)です。
Pty
These elements body are High or Low strings. These values are converted to and from numeric X-Priority header field values.
Unstructured
All fields not listed in previous categories belong to this category.
The element body contains the MIME-decoded field value.

例:
From: "Mr. Sender." <user1@example.com>
To: user2@example.com (My Friend),
 =?iso-8859-1?Q?=4Eot=20A=20Friend?= <user2@example.com>
Date: Mon, 10 Apr 2006 13:15:48 -0700
Subject: It's 1:15PM now, the meeting has started!

<EMail>
  <From realName="Mr. Sender.">user1@example.com</From>
  <To realName="My Friend">user2@example.com</To>
  <To realName="Not A Friend">user3@example.com</To>
  <Bcc>user1@example.com</Bcc>
  <Date timeShift="-25200" localTime="20060410T151548">20060410T201548Z</Date>
  <Subject>It's 1:15PM now, the meeting has started!</Subject>
</EMail>

MIME

このXML 要素は、メッセージのボディまたはメッセージのパート( このセクションでは、 以下、単に「パート」と表記します) を表します。
属性:
partID
文字列。メッセージ内のMIME パートの場所(パートID) です。このパートID を使っ て、そのパートを取り出せます。
estmatedSize
パートのデータの予想サイズ(バイト数) です。デコード後のデータのサイズです。
type
パートのContent-Type のタイプです。サブパートのタイプは示されません。
subtype
パートのContent-Type のサブタイプです(ある場合)
charset
パートのキャラクタセット( この属性がない場合、キャラクタセットはUTF-8 と解釈 されます)。
contentID
Content-ID(文字列)です(山カッコは含まれません)。
disposition
Content-Disposition(文字列)です(パラメータは除きます)
description
Content-Description(文字列)です。
location
Content-Location(文字列)です。
class
Content-Class(文字列)です。urn: とcontent-classes: の各接頭辞を削除し た後の文字列です。
Type-name
Content-Type フィールドの任意のパラメータで、名前(Type-name のname がパラ メータ名) と値付き。boundary、charset、format の3 つのパラメータは、この パラメータの部類には入りません。
Disposition-name
Content-Disposition フィールドの任意のパラメータで、名前(Disposition-name の name がパラメータ名) と値付き。

ボディ:
ボディ要素(単一または複数)
ボディ要素(MIME 要素のボディの中の要素) はいずれもオプションです。ボディ要 素が存在する場合、そのボディ要素にはパートのデータが格納されます。ボディ要素 のフォーマットは、そのパートのContent-Type(コンテントタイプ)によって異な ります。ボディ要素のフォーマットとしては次のものがあります(下記で、"*" はコン テントタイプまたはサブタイプを表します)
multipart/*
メッセージのサブパートを格納したMIME (XML 要素)。数は0 個以上。
message/rfc822
EMail (XML 要素)。MIME のボディ要素は格納されません。
text/rfc822-headers
An EMail XML element (not containing the MIME body element).
text/directory, text/x-vcard
vCard (XML 要素)。数は0 個以上。
text/calendar
an iCalendar XML element.
message/disposition-notification, message/delivery-status
a MIMEReport XML element.
text/*
vCard (XML 要素)。数は0 個以上。
注意: メッセージがreadFolder コマンドで取り出される場合、まず、パートが応答 XML に格納されます。その後、MIME 要素のボディが格納されますが、その場合、 MIME 要素のボディとパート(格納済み) の合計サイズが属性totalSizeLimit の値を超 えないときに限って、MIME 要素のボディが応答に取り込まれます。

例:

From: <user1@example.com>
To: user2@example.com
MIME-Version: 1.0
Content-Type: multipart/alternative;boundary="abcd"
Content-Description: Test Message

--abcd
Content-Type: text/plain; charset="iso-8859-1";
format=flowed; paramX="valueX"
Content-Transfer-Encoding: quoted-printable

=46rom where I stay, I can see & hear a lot!

--abcd
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<html><body bgcolor=3D"yellow">
<I>From where I stay</I>, I can see &amp; hear a lot!
</body></html>
--abcd--

<EMail>
  <From>user1@example.com</From>
  <To>user2@example.com</To>
  <MIME Type="multipart" subtype="alternative" Description="Test Message">
    <MIME type="text" subtype="plain" charset="iso-8859-1" type-paramX="valueX">
      From where I stay, I can see &amp; hear a lot!
    </MIME>
    <MIME type="text" subtype="html" charset="iso-8859-1" type-paramX="valueX">
    &lt;html&gt;&lt;body bgcolor=&quot;yellow&quot;&gt;
    &lt;I&gt;From where I stay&lt;/I&gt;, I can see &amp;amp; hear a lot!
    &lt;/body&gt;&lt;/html&gt;
    </MIME>
  </MIME>
</EMail>

vCard

このXML 要素は、vCard オブジェクトを表します。
属性:
modified
オプションの属性。値は、REV プロパティの値です(iCalendar フォーマットのGMT 時刻)。

ボディ:
要素vCard のボディには、vCard の各プロパティが格納されます。プロパティはいずれも同 じ名前のXML 要素を使って示されます(名前は大文字ASCII に変換されます)。
XML 要素(プロパティに対応する要素) の属性とボディは次の通りです。
属性:
none

ボディ:
XML 要素のボディは、そのプロパティの値です。
parameters
XML elements with the same names as the parameter names, converted to the uppercase ASCII.
The ENCODING and QUOTED-PRINTABLE vCard property parameters are used to decode the property value and they are not stored.
value
構造化値 (N,ORG,ADR)
プロパティの値が構造化値の場合、XML 要素のボディにはXML 要素subValue のセットが格納されます。要素subValue のボディはいずれもテキストで、そ れぞれが構造化値の一部です。
2 進数値
プロパティの値が2 進数値の場合、XML 要素のボディにはXML 要素base64 が 格納されます。要素base64 のボディは、そのプロパティの値(base64 エン コード値) です。
通常値
プロパティの通常の値の場合、XML 要素のボディにはテキスト要素(プロパ ティの値) が格納されます。

例:

begin:VCARD
source:ldap://cn=bjorn Jensen, o=university of Michigan, c=US
name:Bjorn Jensen
n:Jensen;bjorn;A;Mr;II
email;type=INTERNET:bjorn@umich.edu
org:U of Michigan;Computer Science Dept.
tel;type=WORK,MSG:+1 313 747-4454
key;type=x509;encoding=B:dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK
end:VCARD

<vCard>
  <SOURCE><VALUE>ldap://cn=bjorn Jensen, o=university of Michigan, c=US</VALUE></SOURCE>
  <NAME><VALUE>Bjorn Jensen</VALUE></NAME>
  <N><FAMILY>Jensen</FAMILY><GIVEN>bjorn</GIVEN>
    <MIDDLE>A</MIDDLE><PREFIX>Mr.</PREFIX><SUFFIX>II</SUFFIX></N>
  <EMAIL><VALUE>bjorn@umich.edu</VALUE></EMAIL>
  <ORG><ORGNAME>U of Michigan</ORGNAME><ORGUNIT>Computer Science Dept.</ORGUNIT></ORG>
  <TEL><WORK /><MSG /><VALUE>+1 313 747-4454</VALUE></TEL>
  <KEY><x509 /><BINVAL>dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK</BINVAL></KEY>
</vCard>

iCalendar

このXML 要素は、iCalendar オブジェクトを表します。
ボディ:
a vCalendar 要素。

vCalendar

このXML 要素は、vCalendar オブジェクトを表します。
属性:
version
vCalendar のバージョン(iCalendar の場合は2.0)。
method
オプションの属性。値はvCalendar のメソッド。
prodid
オプションの属性。値は、このvCalendar オブジェクトの生成に使用された製品を示す識別 文字列。

ボディ:
a set of vtimezone, vevent, vtodo の各要素のセット。

vtimezone

このXML 要素は、VTIMEZONE オブジェクトを表します。
ボディ:
次のサブ要素のセット。
  • tzid: このサブ要素のボディにはゾーン名が格納されます。
  • 要素standard のほか、オプションで要素daylight。どちらも、要素のボディには次のサ ブ要素が格納されます。
    • tzoffsetto: このサブ要素のボディはタイムシフト値(~まで) です。
    • tzoffsetfrom (オプション): このサブ要素のボディはタイムシフト値(~から) です。
    • rrule (オプション): このサブ要素のボディは、リカレンス(反復) ディスクリ プタを格納した文字列です。
例:
BEGIN:VTIMEZONE
TZID:Europe/Central
BEGIN:STANDARD
DTSTART:19710101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19710101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE

<vtimezone>
  <tzid>Europe/Central</tzid>
  <standard>
    <dtstart>19710101T030000</dtstart>
    <tzoffsetto>+0100</tzoffsetto>
    <rrule>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU</rrule>
  </standard>
  <daylight>
    <dtstart>19710101T020000</dtstart>
    <tzoffsetto>+0200</tzoffsetto>
    <rrule>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU</rrule>
  </daylight>
</vtimezone>

vevent, vtodo

この2 つのXML 要素はそれぞれ、VEVENT オブジェクトとVTODO オブジェクトを表します。

Attributes:
localTime
this attribute is present for non-recurrent objects only. It contains the date and time the object starts. The time is the local time in the Time Zone selected for the current user.
localStart
this attribute is present for recurrent objects only. It contains the time the object starts (seconds since midnight). The time is the local time in the Time Zone selected for the current user.

ボディ:
サブ要素のセットで、それぞれ単一のプロパティを表します。
プロパティのパラメータは、要素の属性として表現されます。
プロパティの値は、要素のボディとして示されます。 
値が接頭辞MAILTO: で始まる場合、その接頭辞(MAILTO:)は削除されます。

例:
BEGIN:VEVENT
ORGANIZER;CN="Jim Smith":MAILTO:jim_smith@example.com
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z
DTSTAMP:20051204T140844Z
UID:566852630.4@mail.example.com
SEQUENCE:1
SUMMARY:test - recurrent
DTSTART;TZID=NorthAmerica/Pacific:20051204T100000
DTEND;TZID=NorthAmerica/Pacific:20051204T110000
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
LAST-MODIFIED:20051204T140844Z
CREATED:20051204T140844Z
PRIORITY:5
END:VEVENT

<vevent>
  <organizer CN="Jim Smith">jim_smith@example.com</organizer>
  <rrule>FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z</rrule>
  <dtstamp>20051204T140844Z</dtstamp>
  <uid>566852630.4@mail.example.com</uid>
  <sequence>1</sequence>
  <summary>test - recurrent</summary>
  <dtstart tzid="NorthAmerica/Pacific">20051204T100000</dtstart>
  <dtend tzid="NorthAmerica/Pacific">20051204T110000</dtend>
  <busystatus>BUSY</busystatus>
  <last-modified>20051204T140844Z</last-modified>
  <created>20051204T140844Z</created>
  <priority>5</priority>
</vevent>

xrule

This XML element represents an recurrence object.
属性:
freq
the recurrence type.
interval
the interval parameter. If absent, interval is assumed to be 1.
wkst
the week start day name. If absent, the MO (Monday) is assumed.
count
an optional integer attribute specifying the COUNT parameter.
until
an optional attribute specifying the UNTIL parameter in the iCalendar date-time format.

ボディ:
a set of XML elements:
BYMONTH, BYWEEKNO, BYYEARDAY, BYMONTHDAY, BYSETPOS
each element body contains a number - the month number, the week number, etc. Except for the BYMONTH element, the number can be negative.
BYDAY
each element body contains one day name (MO, TU, .. SU); each element can contain an optional numeric week attribute - the week number (it can be negative).

sdp

このXML 要素は、SDP オブジェクトを表します。
属性:
ip
デフォルトのメディアIP アドレス(オプション)。
origUser
セッションオリジンのusername フィールド(オプション)。
sessionID
セッションオリジンのsess-id フィールド(オプション)。
sessionVersion
セッションオリジンのsess-version フィールド(オプション)。
origIP
セッションオリジンのnettype、addrtype、unicast-address の各フィールドに指定されている IP アドレス(オリジンIP アドレス)。
subject
セッションのサブジェクト(オプション)。サブジェクトが存在しない場合、- が使用されま す。

ボディ:
要素media のセット。

例:
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,TU,WE,TH;UNTIL=20060305T000000Z

<xrule freq="WEEKLY" interval="2" until="20060305T000000Z">
  <BYDAY>MO</BYDAY><BYDAY>TU</BYDAY><BYDAY>WE</BYDAY><BYDAY>TH</BYDAY>
</xrule>

例:
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU

<xrule freq="YEARLY">
  <BYMONTH>10</BYMONTH><BYDAY week="-1">SU</BYDAY>
</xrule>

media

このXML 要素は、SDP メディアオブジェクトを表します。
属性:
media
メディアのタイプ(audio、video など)。この属性がない場合、値としてaudio が使われ ます。
ip
メディアのアドレスとポート。
protocol
メディアのプロトコル(udp、tcp、RTP/AVP など)。この属性がない場合、値としてRTP/AVP が使われます。
direction
メディアの方向(sendrecv、sendonly、recvonly、inactive)

ボディ:
要素codec のセット。

codec

このXML 要素は、SDP メディアコーデックを表します。
属性:
id
コーデックID。つまり、RTP ペイロード番号(範囲が0..127 の数値) です。
name
コーデック名(PCMU/8000 など)。
format
コーデックフォーマットパラメータ。

例: 下記は、SDP ドキュメントのサンプルと、そのXML プレゼンテーションです。
v=0
o=- 6385718 9999 IN IP4 192.168.1.65
s=-
c=IN IP4 192.168.1.65
t=0 0
m=audio 16398 RTP/AVP 0 4 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:4 G723/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv

<sdp ip="[192.168.1.65]" origUser="-" sessionID="6385718" sessionVersion="9999" originIP="[192.168.1.65]">
  <media media="audio" ip="[192.168.1.65]:16398" protocol="RTP/AVP" direction="sendrecv">
    <codec id="0" name="PCMU/8000" />
    <codec id="4" name="G723/8000" />
    <codec id="8" name="PCMA/8000" />
    <codec id="101" name="telephone-event/8000" format="0-15" />
  </media>
</sdp>

MIMEReport

This XML element represents a message report, such as Disposition Notification or a Delivery report.
属性:
none

ボディ:
a set of XML elements containing report header fields, such as Reporting-MTA, /Final-Recipient, etc.
and (optionally)
MIMEReport elements for the report body.

例:
Subject: Delivery report: TEST - disposition and delivery
From: <MAILER-DAEMON@remote.example.com>
To: <sender@local.example.com>
Date: Wed, 02 May 2007 00:33:13 -0700
Message-ID: <receipt-39457791@remote.example.com>
X-MAPI-Message-Class: REPORT.IPM.Note.DR
MIME-Version: 1.0
Content-Type: multipart/report; report-type="delivery-status"; boundary="_===39457791====remote.example.com===_"


--_===39457791====remote.example.com===_
Content-Type: text/plain; charset="utf-8"

Message delivered to '<recepient@remote.example.com>'
LOCAL module(account recepient) reports:
Delivered to the user mailbox


--_===39457791====remote.example.com===_
Content-Type: message/delivery-status

Reporting-MTA: dns; remote.example.com

Original-Recipient: rfc822;<recepient@remote.example.com>
Final-Recipient: LOCAL;<recepient>
Action: delivered
Status: 2.0.0

--_===39457791====remote.example.com===_
Content-Type: text/rfc822-headers

From: "Sender Name" <sender@local.example.com>
Subject: TEST - disposition and delivery
To: recepient@remote.example.com
X-Mailer: CommuniGate Pro WebUser v5.1.9
Date: Wed, 02 May 2007 00:35:51 -0700
Message-ID: <web-3990004@local.example.com>
MIME-Version: 1.0
Disposition-Notification-To: <sender@local.example.com>
Content-Type: text/plain;charset="utf-8";format="flowed"
Content-Transfer-Encoding: 8bit

--_===39457791====remote.example.com===_--

<EMail>
 <Subject>Delivery report: TEST - disposition and delivery</Subject>
 <From>MAILER-DAEMON@stalker.com</From>
 <To>sender@local.example.com</To>
 <Date localTime="20070502T003313" timeShift="-25200">20070502T073313Z</Date>
 <Message-Id>&lt;receipt-39457791@remote.example.com&gt;</Message-Id>
 <X-MAPI-Message-Class>REPORT.IPM.Note.DR</X-MAPI-Message-Class>
 <MIME estimatedSize="1433" subtype="report" type="multipart" Type-report-type="delivery-status">
  <MIME charset="utf-8" estimatedSize="120" partID="01" subtype="plain" type="text">Message delivered to &#39;&lt;recepient@remote.example.com&gt;&#39;
LOCAL module(account recepient) reports:
 Delivered to the user mailbox

  </MIME>
  <MIME estimatedSize="158" partID="02" subtype="delivery-status" type="message">
   <MIMEReport>
    <Reporting-MTA>dns; remote.example.com</Reporting-MTA>
    <MIMEReport>
     <Original-Recipient>rfc822;&lt;recepient@remote.example.com&gt;</Original-Recipient>
     <Final-Recipient>LOCAL;&lt;recepient&gt;</Final-Recipient>
     <Action>delivered</Action>
     <Status>2.0.0</Status>
    </MIMEReport>
   </MIMEReport>
  </MIME>
  <MIME estimatedSize="787" partID="03" subtype="rfc822-headers" type="text">
   <EMail>
    <From realName="Sender Name">sender@local.example.com</From>
    <Subject>TEST - disposition and delivery</Subject>
    <To>recepient@remote.example.com</To>
    <X-Mailer>CommuniGate Pro WebUser v5.1.9</X-Mailer>
    <Date localTime="20070502T003551" timeShift="-25200">20070502T073551Z</Date>
    <Message-Id>&lt;web-3990004@local.example.com&gt;</Message-Id>
    <Disposition-Notification-To>sender@local.example.com</Disposition-Notification-To>
   </EMail>
  </MIME>
 </MIME>
</EMail>

HTTP アクセス

上記の処理( コマンド) はいずれもXIMSS プロトコル経由による処理ですが、実行できない処理 (例えば、メッセージのパートの取り出し) もあります。XIMSS セッションが生成されると、そのID (sessionID) がセッションデータメッセージ(サーバーからのメッセージ) を使ってクライアントに 返却されます。XIMSS プロトコル経由では行えない処理も、このID を使用し、HTTP プロトコル (URL) でXIMSS セッションにアクセスすることで可能になります。

メッセージのパートの取り出し

次のURL を使って、現在オープンしているフォルダのメッセージのパートを取り出すことができま す。
/Session/sessionID/MIME/folder/UID-partID-suffix[/filename]
パラメータは次の通りです。
sessionID
カレントのXIMSS セッションのID。セッションデータメッセージで送られたID です。
folder
ターゲットのフォルダの名前。
UID
ターゲットのフォルダにあるメッセージのUID。このメッセージのパートが取り出されま す。
partID
メッセージのMIME パートのID。このパートが取り出されます。このID (パートID) は、 readFolder コマンドを使ってメッセージを取り出した際、データメッセージのXML 要素 MIME に格納されていますので、それを利用できます。パートではなくメッセージ全体を取り 出したい場合、このpartID と、その後のダッシュ(-) を指定しないでおきます。
suffix
接頭辞。取り出しのモードを指定します。
  • P.txt - この接頭辞を指定しておくと、パートがすべて(各ヘッダとボディ) デ コードされて取り出されます。
  • H.txt - この接頭辞を指定しておくと、パートの各ヘッダが取り出されます。
  • B.extension - この接頭辞を指定しておくと、パートのボディがデコードされて 取り出されます。extension には拡張子を指定できます。HTTP 応答には、取り出 されたMIME パートのコンテントタイプも格納されています。
  • R/cid - cid(文字列)には、MIME パートのコンテントID を指定します。このコ ンテントID は、URI エンコードで指定しなければなりません。つまり、そのデコー ド後の値がMIME パートのコンテントID でなければなりません。この値を指定して おいた場合、サーバーで処理対象のMIME パートに関連するMIME パートがすべて 検索され、その中で、ここで指定したコンテントID のパートのボディが取り出され ます。
    このモードでは、HTML フォーマット後のメッセージのURL のcid: フィールドは自 動的に変換されます。
filename
an optional file name. It is ignored by the Server, but it can help the user browser to store the file under the proper name.
例:
C:GET /Session/1-2xklkdld8-djdkjk/MIME/INBOX/567-01-B.gif HTTP/1.1

C:GET /Session/1-2xklkdld8-djdkjk/MIME/INBOX/567-02-01-B.gif/Logo.gif HTTP/1.1

ファイルのアップロード

次のURL を使って、セッションの「アップロード済みファイルセット」にファイルをアップロードできます。
/Session/sessionID/UPLOAD/uploadID
パラメータは次の通りです。
sessionID
カレントのXIMSS セッションのID。session データメッセージを使ってサーバーから送信 されたID です。
uploadID
文字列。ファイルを指定します。このファイルが「アップロード済みファイルセット」に アップロードされます。

ファイルをアップロードする場合、POST コマンドと上記の形式URL を指定したHTTP 要求を使用 します。要求のボディのフォーマットは、multipart/form-data です。また、要求のボディに は、ファイル(バイナリ形式)をボディの要素(fileData)として指定します。

ファイルがアップロードされ、「アップロード済みファイルセット」に追加されると、サーバーから 応答コード200 が返ります。アップロードが失敗した場合、応答コード500 が返ります。

アップロードするファイルと同じ名前(属性uploadID の値) のファイルが既に「アップロード済 みファイルセット」が存在したときには、既存のファイルは削除されます。

File Downloading

The following URL can be used to download a file from the session Account ファイルストレ.
/Session/sessionID/DOWNLOAD/fileName
where
sessionID
the current XIMSS session ID, sent with the session data message.
fileName
the file name in the session Account File Storage.

CommuniGate® Pro Guide. Copyright © 1998-2007, Stalker Software, Inc.