2009-06-13T19:47:48の更新内容

works/tools/junk/TundereBird/index.wiki.txt

current previous
1,7 1,8
 
*TundereBird
*TundereBird
 
**概要
**概要
~
IMAP4対応のメールクライアントです。 実用を目的としたものではなく、下記ライブラリのサンプル兼デモ用アプリケーションです。
IMAP4/POP3対応のメールクライアントです。 実用を目的としたものではなく、下記ライブラリを使用したサンプルアプリケーションです。
 
-[[works/libs/Smdn.Protocols.Imap4]]
-[[works/libs/Smdn.Protocols.Imap4]]
-
-[[works/libs/Smdn.Protocols.Pop3]]
 
-[[works/libs/Smdn.Formats.Mime]]
-[[works/libs/Smdn.Formats.Mime]]
 
-[[works/libs/Smdn.Formats.Ini]]
-[[works/libs/Smdn.Formats.Ini]]
 

        

        
10,49 11,55
 

        

        
 
**ダウンロード
**ダウンロード
 
#googleadunit
#googleadunit
~
-0.2x
-ソース
~
--${smdncms:distfilelink,TundereBird-0.20.tar.bz2}
--${smdncms:distfilelink,TundereBird-0.13.zip,version 0.13}
~
---下記ライブラリのソースを同梱しています
--${smdncms:distfilelink,TundereBird-0.12.zip,version 0.12}
~
---[[works/libs/Smdn.Protocols.Imap4]] 0.20
--${smdncms:distfilelink,TundereBird-0.11.zip,version 0.11}
~
---[[works/libs/Smdn.Formats.Mime]] 0.14
--${smdncms:distfilelink,TundereBird-0.10.zip,version 0.10}
+
---[[works/libs/Smdn.Formats.Ini]] 0.14
+
-0.1x
+
--${smdncms:distfilelink,TundereBird-0.13.zip}
+
---下記ライブラリのソースを同梱しています
+
---[[works/libs/Smdn.Protocols.Imap4]] 0.13
+
---[[works/libs/Smdn.Protocols.Pop3]] 0.13
+
---[[works/libs/Smdn.Formats.Mime]] 0.13
+
---[[works/libs/Smdn.Formats.Ini]] 0.13
+
--${smdncms:distfilelink,TundereBird-0.12.zip}
+
---下記ライブラリのソースを同梱しています
+
---[[works/libs/Smdn.Protocols.Imap4]] 0.12
+
---[[works/libs/Smdn.Protocols.Pop3]] 0.12
+
---[[works/libs/Smdn.Formats.Mime]] 0.12
+
---[[works/libs/Smdn.Formats.Ini]] 0.12
+
--${smdncms:distfilelink,TundereBird-0.11.zip}
+
---下記ライブラリのソースを同梱しています
+
---[[works/libs/Smdn.Protocols.Imap4]] 0.11
+
---[[works/libs/Smdn.Protocols.Pop3]] 0.11
+
---[[works/libs/Smdn.Formats.Mime]] 0.11
+
---[[works/libs/Smdn.Formats.Ini]] 0.11
+
--${smdncms:distfilelink,TundereBird-0.10.zip}
+
---下記ライブラリのソースを同梱しています
+
---[[works/libs/Smdn.Protocols.Imap4]] 0.10
+
---[[works/libs/Smdn.Formats.Mime]] 0.10
+
---[[works/libs/Smdn.Formats.Ini]] 0.10
 

        

        
 
**使い方
**使い方
 
tunderebird.iniを開いてアカウント情報を記入してから起動してください。
tunderebird.iniを開いてアカウント情報を記入してから起動してください。
 

        

        
 
**変更履歴
**変更履歴
~
***0.2x
-version 0.13
~
:0.20|POP3のサポートを削除
--TLSに対応、バグ修正と機能追加
~
メッセージのアップロード・ダウンロード機能を追加
--Smdn.Protocols.Imap4
~
IMAPサーバの情報を表示するタブを追加
---STARTTLSコマンドによるTLSへのアップグレードに対応
~

          
---不正な形式のModified UTF-7文字列のデコードで例外となる場合の対処を追加
~
***0.1x
---PREAUTH応答のグリーティングメッセージからのcapability dataの取得に失敗する不具合を修正
~
:0.13|ライブラリのバージョンアップに伴うリリース
---FETCHリクエストを10240オクテット毎にpartial fetchするように改善
~
:0.12|ライブラリのバージョンアップに伴うリリース
---未知の種類のBODYSTRUCTUREの場合でも解析を継続するように改善
~
:0.11|POP3に対応
--Smdn.Protocols.Pop3
~
:0.10|初版
---STLSコマンドによるTLSへのアップグレードに対応
~

          
---取得したメッセージの改行文字が環境によって変わってしまう不具合を修正
-
--Smdn.Formats.Mime
-
---コメントを含む場合等にMIME-Versionヘッダの値を正しく認識できない不具合を修正
-
---改行・空白を含まずに連続するencoded-wordsを正しくデコードできない不具合を修正
-
---ヘッダを含まないmultipartメッセージ等で解析に失敗する不具合を修正
-
-version 0.12
-
--主にバグ修正
-
--Smdn.Protocols.Imap4
-
---Modified UTF-7(日本語等非ASCII文字を含むメールボックス名)に対応
-
---レスポンス解析処理のバグを修正
-
---IDLE後のレスポンス処理が即座に行われない不具合を修正
-
---HMACMD5アルゴリズムの実装を独自の実装からライブラリ標準のクラスを用いたものに変更
-
--Smdn.Protocols.Pop3
-
---HMACMD5アルゴリズムの実装を独自の実装からライブラリ標準のクラスを用いたものに変更
-
--Smdn.Formats.Mime
-
---元のメッセージの改行文字を保持するように修正
-
---Q-Encodeされた文字列を正しくデコードしない不具合を修正
-
---Q-EncodeおよびB-Encodeされた文字列を正しく認識できない場合がある不具合を修正
-
---メッセージの解析時に入力ストリームの8ビット目が損失する不具合を修正
-
---Quoted-Printableのデコード処理の不具合を修正
-
-version 0.11
-
--POP3に対応
-
--Smdn.Protocols.Imap4
-
---グリーティングメッセージからのcapability dataの取得に失敗する不具合を修正
-
---セッションのステートチェック処理の誤りを修正
-
---AUTHENTICATEで使用できる認証方法がない場合の動作を変更
-
--Smdn.Formats.Mime
-
---stringからインスタンスをコンストラクトできるようにした
-
--Smdn.Formats.Ini
-
---行頭に空白およびタブを含むセクション・エントリを読み込めるようにした
-
-version 0.10
-
--初版リリース

works/libs/Smdn.Formats.Mime/index.wiki.txt

current previous
1,4 1,4
~
${smdncms:keywords,C#,.NET,Mono,MIME,ライブラリ}
${smdncms:keywords,C#,.NET,Mono,MIME}
 
*Smdn.Formats.Mime
*Smdn.Formats.Mime
 
C#で書いた.NET Framework/Mono用MIMEメッセージライブラリです。 MIME形式のメッセージの読み込み、デコードが出来ます。
C#で書いた.NET Framework/Mono用MIMEメッセージライブラリです。 MIME形式のメッセージの読み込み、デコードが出来ます。
 

        

        
13,74 13,56
 

        

        
 
**ダウンロード
**ダウンロード
 
#googleadunit
#googleadunit
~
0.14以降はMIT X11ライセンスでのリリースとなります。 0.14より前のバージョンについては特に使用条件を定めていません。
-ソース
+

          
+
-${smdncms:distfilelink,Smdn.Formats.Mime-0.14.tar.bz2}
+
-以前のバージョン
 
--[[works/tools/junk/TundereBird]]に含まれているものを使ってください
--[[works/tools/junk/TundereBird]]に含まれているものを使ってください
-
-ドキュメント
-
--(そのうち作ります)
 

        

        
 
**サンプル
**サンプル
 
emlファイルを読み込んでヘッダの一覧とボディの内容を表示する例。
emlファイルを読み込んでヘッダの一覧とボディの内容を表示する例。
~
#code(cs){{
 using System;
~
using System;
 using System.IO;
~
using System.IO;
 using Smdn.Formats.Mime;
~
using Smdn.Formats.Mime;
 
~

          
 public class ReadMail {
~
public class ReadMail {
   public static void Main(string[] args) {
~
  public static void Main(string[] args) {
     using {
~
    using {
       var message = MimeMessage.Create(reader);
~
      var message = MimeMessage.Create(reader);
       Dump(message);
~
      Dump(message);
     }
~
    }
   }
~
  }
 
~

          
   private static void Dump(MimeMessage message)
~
  private static void Dump(MimeMessage message)
   {
~
  {
     DumpHeaders(message);
~
    DumpHeaders(message);
 
~

          
     Console.WriteLine(message.Body);
~
    Console.WriteLine(message.Body);
 
~

          
     foreach {
~
    foreach {
       Dump(part);
~
      Dump(part);
     }
~
    }
   }
~
  }
 
~

          
   private static void DumpHeaders(MimeMessage message)
~
  private static void DumpHeaders(MimeMessage message)
   {
~
  {
     foreach {
~
    foreach {
       Console.Write("{0}: ", header.Key);
~
      Console.Write("{0}: ", header.Key);
       foreach {
~
      foreach {
         Console.WriteLine(val);
~
        Console.WriteLine(val);
       }
~
      }
     }
~
    }
   }
~
  }
 }
+
}
+
}}
 

        

        
 
本ライブラリを使用したサンプルアプリケーション[[works/tools/junk/TundereBird]]もご覧ください。
本ライブラリを使用したサンプルアプリケーション[[works/tools/junk/TundereBird]]もご覧ください。
 

        

        
+
**変更履歴
+
***0.1x
+
:0.14|ライセンスをMIT X11に変更
+
拡張子およびファイル内容からのMIMEタイプの判定処理を追加
+
Content-Transfer-Encodingヘッダの値が;で終端する場合にデコードできない不具合を修正
+
:0.13|コメントを含む場合等にMIME-Versionヘッダの値を正しく認識できない不具合を修正
+
改行・空白を含まずに連続するencoded-wordsを正しくデコードできない不具合を修正
+
ヘッダを含まないmultipartメッセージ等で解析に失敗する不具合を修正
+
:0.12|元のメッセージの改行文字を保持するように修正
+
Q-Encodeされた文字列を正しくデコードしない不具合を修正
+
Q-EncodeおよびB-Encodeされた文字列を正しく認識できない場合がある不具合を修正
+
メッセージの解析時に入力ストリームの8ビット目が損失する不具合を修正
+
Quoted-Printableのデコード処理の不具合を修正
+
:0.11|stringからインスタンスをコンストラクトできるようにした
+
:0.10|初版
+

          
 
**動作状況
**動作状況
 
以下の環境で動作することを確認済みです。
以下の環境で動作することを確認済みです。
~
-.NET Framework 3.5
-.NET Framework 2.0.50727
~
-Mono 2.4
-Mono 1.2.6
-
-Mono 1.9
 

        

        
~
version 0.13の時点では、手元にある計9,189通のメール(スパム、メーリングリスト・メールマガジンから、携帯から、添付ファイル付きなどを含む)を解析した結果、ほぼ正常に解析できています。 ただし解析した結果が「読める」かどうかまでは検証していません。 またMono 1.9ではJISからのデコードが出来ない場合があるようです。
version 0.13の時点で手元にある計9,189通のメール(スパム、メーリングリスト・メールマガジンから、携帯から、添付ファイル付きなどを含む)を解析した結果、ほぼ正常に解析できています。 ただし解析した結果が「読める」かどうかまでは検証していません。 またMono 1.9ではJISからのデコードが出来ない場合があるようです。
 

        

        
 
**対応予定
**対応予定
 
今後対応する予定の機能です。
今後対応する予定の機能です。

works/libs/Smdn.Protocols.Pop3/index.wiki.txt

current previous
19,54 19,48
 

        

        
 
**ダウンロード
**ダウンロード
 
#googleadunit
#googleadunit
~
[[works/tools/junk/TundereBird]]に含まれているものを使ってください。
-ソース
-
--[[works/tools/junk/TundereBird]]に含まれているものを使ってください
-
-ドキュメント
-
--(そのうち作ります)
 

        

        
 
**サンプル
**サンプル
 
本ライブラリを使用して、GMail POPサーバからメールをダウンロードして本文を表示したあと、サーバ上のメールを削除する例です。
本ライブラリを使用して、GMail POPサーバからメールをダウンロードして本文を表示したあと、サーバ上のメールを削除する例です。
~
#code(cs){{
 using System;
~
using System;
 using Smdn.Protocols.Pop3;
~
using Smdn.Protocols.Pop3;
 using Smdn.Protocols.Pop3.Client;
~
using Smdn.Protocols.Pop3.Client;
 
~

          
 public class GmailRetrieveSample {
~
public class GmailRetrieveSample {
   public static void Main(string[] args) {
~
  public static void Main(string[] args) {
     using {
~
    using {
       agent.Initialize();
~
      agent.Initialize();
       agent.ServerCertificateValidationCallback = delegate {
~
      agent.ServerCertificateValidationCallback = delegate {
         return true;
~
        return true;
       };
~
      };
 
~

          
       var client = agent.CreateClient();
~
      var client = agent.CreateClient();
 
~

          
       client.HostUri = new PopUri("pop://username;AUTH=*@pop.gmail.com:995/");
~
      client.HostUri = new PopUri("pop://username;AUTH=*@pop.gmail.com:995/");
       client.Password = "password";
~
      client.Password = "password";
       client.UseSsl = true;
~
      client.UseSsl = true;
 
~

          
       client.Login();
~
      client.Login();
 
~

          
       foreach {
~
      foreach {
         client.Retrieve(message);
~
        client.Retrieve(message);
 
~

          
         Console.WriteLine(message.Body);
~
        Console.WriteLine(message.Body);
 
~

          
         client.Delete(message);
~
        client.Delete(message);
       }
~
      }
 
~

          
       client.Logout();
~
      client.Logout();
     }
~
    }
   }
~
  }
 }
+
}
+
}}
 

        

        
 
本ライブラリを使用したサンプルアプリケーション[[works/tools/junk/TundereBird]]もご覧ください。
本ライブラリを使用したサンプルアプリケーション[[works/tools/junk/TundereBird]]もご覧ください。
 

        

        
+
**変更履歴
+
:0.13|STLSコマンドによるTLSへのアップグレードに対応
+
取得したメッセージの改行文字が環境によって変わってしまう不具合を修正
+
:0.12|HMACMD5アルゴリズムの実装を独自の実装からライブラリ標準のクラスを用いたものに変更
+
:0.11|[[works/tools/junk/TundereBird]]バージョンアップに伴うリリース
+
:0.10|初版
+

          
 
**動作状況
**動作状況
 
以下のPOPサーバに対して動作することを確認済みです。
以下のPOPサーバに対して動作することを確認済みです。
 
-Gpop(GMail)
-Gpop(GMail)

works/libs/Smdn.Formats.Ini/index.wiki.txt

current previous
1,4 1,4
~
${smdncms:keywords,C#,.NET,Mono,Ini,ライブラリ}
${smdncms:keywords,C#,.NET,Mono,Ini}
 
*Smdn.Formats.Ini
*Smdn.Formats.Ini
 
C#で書いた.NET Framework/Mono用INIファイル読み込み/保存ライブラリです。
C#で書いた.NET Framework/Mono用INIファイル読み込み/保存ライブラリです。
 

        

        
9,27 9,19
 

        

        
 
**ダウンロード
**ダウンロード
 
#googleadunit
#googleadunit
~
0.14以降はMIT X11ライセンスでのリリースとなります。 0.14より前のバージョンについては特に使用条件を定めていません。
-ソース
+

          
+
-${smdncms:distfilelink,Smdn.Formats.Ini-0.14.tar.bz2}
+
-以前のバージョン
 
--[[works/tools/junk/TundereBird]]に含まれているものを使ってください
--[[works/tools/junk/TundereBird]]に含まれているものを使ってください
-
-ドキュメント
-
--(そのうち作ります)
 

        

        
 
**サンプル
**サンプル
 
本ライブラリを使用したサンプルアプリケーション[[works/tools/junk/TundereBird]]をご覧ください。
本ライブラリを使用したサンプルアプリケーション[[works/tools/junk/TundereBird]]をご覧ください。
 

        

        
+
**変更履歴
+
***0.1x
+
:0.14|ライセンスをMIT X11に変更
+
:0.13|[[works/tools/junk/TundereBird]]バージョンアップに伴うリリース
+
:0.12|[[works/tools/junk/TundereBird]]バージョンアップに伴うリリース
+
:0.11|行頭に空白およびタブを含むセクション・エントリを読み込めるようにした
+
:0.10|初版
+

          
 
**動作状況
**動作状況
 
以下の環境で動作することを確認済みです。
以下の環境で動作することを確認済みです。
~
-.NET Framework 3.5
-.NET Framework 2.0.50727
~
-Mono 2.4
-Mono 1.2.6
-
-Mono 1.9
 

        

        
 
**対応予定
**対応予定
 
今後対応する予定の機能です。
今後対応する予定の機能です。

works/libs/Smdn.Protocols.Imap4/doc/index.wiki.txt

current previous
1,284 0,0
+
${smdncms:keywords,}
+
*ドキュメント・サンプル
+
[[works/libs/Smdn.Protocols.Imap4]]のドキュメントとサンプルです。
+

          
+
**ライブラリの設計と実装の概要
+
***クライアント
+
クライアントの実装は2種類あります。 一つはSmdn.Protocols.Imap4.Client.Session名前空間のImapSessionクラス、もう一つはSmdn.Protocols.Imap4.WebClient名前空間のImapWebRequest/ImapWebResponseクラスです。 Smdn.Protocols.Imap4.WebClient名前空間のクライアントは、System.Net.WebRequest/System.Net.WebResponseを継承したもので、内部でImapSessionクラスを使用しています。
+

          
+
二つのクライアントのモデルと概要は次の通りです。
+

          
+
:ImapSessionクラス|IMAPのコマンドとほぼ1対1で対応するメソッドを持つクラスです。 IMAPの操作は抽象化していません。 仕様と1対1で対応するような実装にしてあります。
+
切断する/されるまで選択済みメールボックス・メールボックス毎のフラグ・サーバの能力・名前空間等のセッションの状態を保持します。
+
:ImapWebRequest/ImapWebResponseクラス|IMAP URL(&urn2url(urn:ietf:rfc:5092,short);)を用いたクライアントの実装です。 IMAP URLの形式でIMAPの操作を行うので、読み込みのみの操作に関しては送信されるIMAPコマンドを意識せずに扱えます。
+
ImapWebRequest.KeepAliveプロパティでリクエスト毎にセッションを切断するか、ログイン状態を維持するかどうか設定できます。 また、送信するコマンドはImapWebRequest.Methodプロパティで変更できます。
+

          
+
***認証
+
認証時に必要なユーザ名・パスワードはSystem.Net.ICredentialsByHostインターフェイスを通して取得します。 ICredentialsインターフェイスではなく、ICredentialsByHostインターフェイスを実装していて、GetCredentialメソッドが適切なSystem.Net.NetworkCredentialを返すクラスなら何でも設定できます。
+

          
+
ImapWebRequest.Credentialsプロパティは、WebRequestから継承しているためICredentialsインターフェイスを実装していることを要求しますが、同時にICredentialsByHostを実装していない場合は例外をスローします。
+

          
+
***証明書の選択と検証
+
認証時に使用する証明書はX509Certificate2Collectionで設定できます。 また、証明書の選択と検証にはRemoteCertificateValidationCallbackデリゲートとLocalCertificateSelectionCallbackデリゲートを使用できます。
+

          
+
|*証明書に関する型と該当するメンバ(いずれもクラス・プロパティ)
+
|~証明書に関する型|>|~該当するメンバ|
+
|~|~Smdn.Protocols.Imap4.Client.Connection名前空間|~Smdn.Protocols.Imap4.WebClient名前空間|
+
|X509Certificate2Collection|ImapConnection.CertCollection|ImapSessionManager.CertCollection|
+
|RemoteCertificateValidationCallback|ImapConnection.CertificateValidationCallback|ImapSessionManager.CertificateValidationCallback|
+
|LocalCertificateSelectionCallback|ImapConnection.CertificateSelectionCallback|ImapSessionManager.CertificateSelectionCallback|
+

          
+
***操作とデータ構造
+
ImapSessionクラスには、IMAPコマンドと1対1に対応するメソッドが用意されています。 また、すべてのコマンドの引数とレスポンスのデータ構造は、それに対応する型が定義されています。 これらの型は出来る限り仕様と1対1で対応するように実装してあり、IMAPの詳細が分からなくても使えることを目的とするような抽象化はしていません。
+

          
+
***メールボックスのインスタンス
+
メールボックスの情報はImapMailboxクラスに保持されます。 このクラスのインスタンスは、LISTコマンド等により作成された後は、ログアウトするまでライブラリ側で管理されます。 同じメールボックスに対してSELECTしたりRENAMEした場合はインスタンスの値のみが更新され、常に同じインスタンスが返されます。
+

          
+
***ログ
+
シンボルTRACEを有効にしてビルドした場合、トレースにログを出力します。 ログにはパスワードを含む送受信内容を解読可能な状態で出力します。 ログの出力が不要な場合はTrace.csを削除するか、TRACEを無効にしてリビルドしてください。
+

          
+
|*ログ出力に使用するTraceSourceの名前と出力内容
+
|TraceSource|出力内容|h
+
|Smdn.Protocols.Imap4|サーバとの送受信内容とセッション毎の動作ログを出力します。|
+
|Smdn.Protocols.Imap4#Connection|サーバとの送受信内容のみを出力します。|
+

          
+
**Smdn.Protocols.Imap4.WebClient名前空間
+
Smdn.Protocols.Imap4.WebClient名前空間のクラスの使い方。
+

          
+
***簡単なサンプル
+
WebClientクラスを使って、localhostのINBOXメールボックスからUIDが1のメールをダウンロードし、sample.emlとして保存するサンプル。
+
#code(cs){{
+
using System;
+
using System.Net;
+

          
+
using Smdn.Protocols.Imap4.WebClient;
+

          
+
class Sample {
+
  public static void Main(string[] args)
+
  {
+
    ImapSessionManager.RegisterWebRequestPrefix();
+

          
+
    using {
+
      client.Credentials = new NetworkCredential("user", "pass");
+
      client.DownloadFile("imap://user;AUTH=DIGEST-MD5@localhost/INBOX/;UID=1", "sample.eml");
+
    }
+
  }
+
}
+
}}
+

          
+
WebClientクラスを使って、localhostのINBOXメールボックスにsample.emlをアップロードするサンプル。
+
#code(cs){{
+
using System;
+
using System.IO;
+
using System.Net;
+

          
+
using Smdn.Protocols.Imap4.WebClient;
+

          
+
class Sample {
+
  public static void Main(string[] args)
+
  {
+
    ImapSessionManager.RegisterWebRequestPrefix();
+

          
+
    using {
+
      client.Credentials = new NetworkCredential("user", "pass");
+
      client.UploadData("imap://user;AUTH=DIGEST-MD5@localhost/INBOX/", ImapWebRequestMethods.Append, File.ReadAllBytes("sample.eml"));
+
    }
+
  }
+
}
+
}}
+

          
+
WebRequestクラスを使って、Gmailアカウントのメールボックスからタイトルに[Mono-dev]を含むメールの一覧を取得する例。
+
#code(cs){{
+
using System;
+
using System.Net;
+

          
+
using Smdn.Protocols.Imap4.WebClient;
+

          
+
class Sample {
+
  public static void Main(string[] args)
+
  {
+
    ImapSessionManager.RegisterWebRequestPrefix();
+
    ImapSessionManager.CertificateValidationCallback = delegate { return true; };
+

          
+
    var request = WebRequest.Create("imaps://user@imap.gmail.com/INBOX/?SUBJECT \"[Mono-dev]\"");
+

          
+
    request.Credentials = new NetworkCredential("user", "pass");
+

          
+
    using {
+
      foreach {
+
        Console.WriteLine(message.Url);
+
      }
+
    }
+
  }
+
}
+
}}
+

          
+
***imap, imapsスキームの登録
+
Smdn.Protocols.Imap4.WebClient名前空間のクラスを使う場合には、WebRequestクラスがimapスキームおよびimapsスキームのURLを処理できるようにImapSessionManager.RegisterWebRequestPrefixメソッドを呼び出しておく必要があります。
+

          
+
このメソッドはWebRequest.RegisterPrefixメソッドを呼び出し、imapスキームおよびimapsスキームに対してImapSessionManagerを関連付けます。
+

          
+
***ログインと認証
+
認証に用いるユーザ名は、URLから取得します。 URLにユーザ名が指定されていない場合は、ANONYMOUS認証を行います。 パスワードはImapWebRequest.Credentialsを参照し、接続しようとしているホスト名とポート番号から適切なものを取得します。 使用する認証メカニズムもユーザ名同様にURLから取得しますが、省略した場合、"AUTH=*"が指定されている場合は対応している認証方法を順に試行します。
+

          
+
URLのスキームがimapの場合で、ポート番号を省略した場合はデフォルトでポート143に接続します。 imapsの場合でポート番号が指定されていない場合はデフォルトでポート993に接続します。 また、imapsの場合は、SSLでの接続を試みます。
+

          
+
|*URLの形式と認証動作の例
+
|URLの形式|認証動作|h
+
|imap://user;AUTH=DIGEST-MD5@localhost/|ユーザ名'user'でDIGEST-MD5を使ってlocalhostのポート143に接続|
+
|imaps://user@localhost:10993/|ユーザ名'user'でlocalhostのポート10993にSSLで接続|
+

          
+
ImapWebRequest.KeepAliveプロパティにtrueを指定した場合は、リクエストが終了してもセッションは維持し、逆にfalseを指定した場合はリクエストが終了するとセッションを閉じます。 ImapWebRequest.KeepAliveプロパティのデフォルトはtrueです。
+

          
+
***URLの形式とリクエストの種類
+
HTTPと異なり、IMAP URLの形式によりリクエストする内容が変わります。
+
|*URLの形式とデフォルトのリクエスト内容
+
|URLの形式|リクエスト内容|h
+
|サーバを表す場合&br;(例: imap://example.com/)|サーバにあるメールボックスの一覧を取得します。|
+
|メールボックスを表す場合&br;(例: imap://example.com/INBOX/)|メールボックスにあるメッセージの一覧を取得します。|
+
|メールボックス内の単一のメッセージを表す場合&br;(例: imap://example.com/INBOX/;UID=1)|該当するUIDを持つメッセージの属性と本文を取得します。|
+
|メールボックスに対する検索クエリを含む場合&br;(例: imap://example.com/INBOX/?RECENT)|メールボックスにあるメッセージのうち、検索クエリに該当するものの一覧を取得します。|
+

          
+
リクエスト内容はImapWebRequest.Methodプロパティに設定する値によっても変わります。 URLがサーバを表す場合のリクエスト内容と動作・レスポンスは次の通りです。
+
|*サーバを表すURLでのリクエスト
+
|Methodプロパティの値|リクエスト内容|動作とレスポンス|h
+
|null, String.Empty&br;またはImapWebRequestMethods.Lsub|Methodを指定しない場合のデフォルトの動作です。&br;LSUBコマンドを送信してメールボックスの一覧を取得します。|取得したメールボックスの一覧は、ImapWebResponse.Mailboxesプロパティに設定されます。|
+
|ImapWebRequestMethods.List|LISTコマンドを送信してメールボックスの一覧を取得します。|取得したメールボックスの一覧は、ImapWebResponse.Mailboxesプロパティに設定されます。|
+
|ImapWebRequestMethods.Noop|NOOPコマンドを送信します。|このコマンドは何もしません。 自動ログアウトタイマの更新、セッションの接続性確認などに使います。|
+

          
+
URLがメールボックスを表す場合のリクエスト内容と動作・レスポンスは次の通りです。
+
|*メールボックスを表すURLでのリクエスト
+
|Methodプロパティの値|リクエスト内容|動作とレスポンス|h
+
|null, String.Empty&br;またはImapWebRequestMethods.Fetch|Methodを指定しない場合のデフォルトの動作です。&br;FETCHコマンドを送信してメールボックスにあるメッセージの一覧を取得します。|取得したメッセージの一覧は、ImapWebResponse.Messagesプロパティに設定されます。&br;取得するのはメッセージの属性のみ(ALLマクロで取得されるフラグ、サイズ、internal date、エンベロープ)です。 メッセージ本文は取得しません。|
+
|ImapWebRequestMethods.Append|APPENDコマンドを送信してメールボックスにメッセージをアップロードします。|アップロードするメッセージはImapWebRequest.GetRequestStreamメソッドで取得したStreamに書き込みます。 メッセージはMIME形式であるべきですが、ライブラリ側ではアップロードする内容をチェックしません。|
+
|ImapWebRequestMethods.Create|CREATEコマンドを送信してURLで指定された名前でメールボックスを作成します。|作成できた場合、作成したメールボックスに対して自動的にSUBSCRIBEコマンドを送信します。|
+
|ImapWebRequestMethods.Delete|DELETEコマンドを送信してメールボックスを削除します。|削除しようとするメールボックスに対してUNSUBSCRIBEコマンドを送信してから削除します。&br;削除しようとするメールボックスにメッセージがある場合は削除に失敗するので、STOREやEXPUNGEでメッセージを削除してからメールボックスを削除する必要があります。|
+
|ImapWebRequestMethods.Expunge|EXPUNGEコマンドを送信してメールボックスから\Deletedフラグの付いたメッセージを削除します。||
+
|ImapWebRequestMethods.Examine|EXAMINEコマンドを送信して読み取り専用でメッセージボックスを選択します。|このコマンドは選択するだけで何もしません。 メールボックスの状態を取得する場合などに使います。|
+
|ImapWebRequestMethods.Rename|RENAMEコマンドを送信してメールボックスの名前を変更します。|変更後のメールボックス名はImapWebRequest.DestinationUriプロパティで指定します。|
+
|ImapWebRequestMethods.Subscribe|SUBSCRIBEコマンドを送信してメールボックスの購読を開始します。||
+
|ImapWebRequestMethods.Unsubscribe|UNSUBSCRIBEコマンドを送信してメールボックスの購読を解除します。||
+

          
+
URLが単一のメッセージを表す場合のリクエスト内容と動作・レスポンスは次の通りです。
+
|*単一のメッセージを表すURLでのリクエスト
+
|Methodプロパティの値|リクエスト内容|動作とレスポンス|h
+
|null, String.Empty&br;またはImapWebRequestMethods.Fetch|Methodを指定しない場合のデフォルトの動作です。&br;FETCHコマンドを送信してメッセージの本文を取得します。|メッセージ本文はImapWebResponse.GetResponseStreamメソッドで取得したStreamから読み込めます。|
+
|ImapWebRequestMethods.Expunge|STOREコマンドを送信して\Deletedフラグを追加した後、EXPUNGEコマンドを送信してメッセージを削除します。|サーバが&urn2url(urn:ietf:rfc:4315,#2.1){UID EXPUNGE};に対応していない場合、URLで指定されたメッセージだけでなく''既に\Deletedフラグが設定されている他のメッセージも同時に削除されます''。|
+
|ImapWebRequestMethods.Store|STOREコマンドを送信してメッセージにフラグを追加・削除・設定します。|追加・削除・設定するフラグはImapWebRequest.StoreDataItemプロパティで指定します。|
+

          
+
URLが検索クエリを含む場合のリクエスト内容と動作・レスポンスは次の通りです。
+
|*検索クエリを含むURLでのリクエスト
+
|Methodプロパティの値|リクエスト内容|動作とレスポンス|h
+
|null, String.Empty&br;またはImapWebRequestMethods.Search|Methodを指定しない場合のデフォルトの動作です。&br;SEARCHコマンドを送信して検索クエリに該当するメッセージの一覧を取得します。|取得したメッセージの一覧は、ImapWebResponse.Messagesプロパティに設定されます。&br;取得するのはメッセージの属性のみ(ALLマクロで取得されるフラグ、サイズ、internal date、エンベロープ)です。 メッセージ本文は取得しません。|
+
|ImapWebRequestMethods.Copy|COPYコマンドを送信して検索クエリに該当するメッセージを別のメールボックスにコピーします。|コピー先のメールボックスはImapWebRequest.DestinationUriプロパティで指定します。|
+
|ImapWebRequestMethods.Expunge|STOREコマンドを送信して検索クエリに該当するメッセージに\Deletedフラグを追加した後、EXPUNGEコマンドを送信してメッセージを削除します。|サーバが&urn2url(urn:ietf:rfc:4315,#2.1){UID EXPUNGE};に対応していない場合、検索クエリに該当したメッセージだけでなく''既に\Deletedフラグが設定されている他のメッセージも同時に削除されます''。|
+
|ImapWebRequestMethods.Store|STOREコマンドを送信して検索クエリに該当するメッセージにフラグを追加・削除・設定します。|追加・削除・設定するフラグはImapWebRequest.StoreDataItemプロパティで指定します。|
+
|ImapWebRequestMethods.Thread|THREADコマンドを送信して検索クエリに該当するメッセージの一覧をスレッド形式で取得します。|スレッド形式のアルゴリズムはImapWebRequest.ThreadingAlgorithmプロパティで指定します。 また、取得したスレッド形式の一覧は、ImapWebResponse.ThreadTreeプロパティに設定されます。&br;''サーバがTHREAD=* extensionをサポートしない場合、WebExceptionをスローします。''|
+
|ImapWebRequestMethods.Sort|SORTコマンドを送信して検索クエリに該当するメッセージの一覧をソート済みの形式で取得します。|ソート方法はImapWebRequest.SortCriteriaプロパティで指定します。 また、取得したメッセージの一覧は、ImapWebResponse.Messagesプロパティに設定されます。&br;''サーバがSORT=* extensionをサポートしない場合、WebExceptionをスローします。''|
+

          
+
IMAP URLに関するその他の事柄。
+
-HTTPなどのURLと同様にUriクラスを用いることができますが、ライブラリにはIMAP URLに対応したImapUriクラスを用意してあります。
+
-UIDVALIDITYを含むIMAP URLも扱えますが、無視します。 現時点ではUIDVALIDITYが指定されていない場合と同様に扱います。
+

          
+
**Smdn.Protocols.Imap4.Client.Session名前空間
+
Smdn.Protocols.Imap4.Client.Session名前空間のクラスの使い方。 このドキュメントは作成中です。 [[works/tools/junk/TundereBird]]およびSmdn.Protocols.Imap4.WebClientの各クラスの実装を参照してください。
+

          
+
***簡単なサンプル
+
IDLEでメールボックス(INBOX)を監視し、新着メッセージが着たらサブジェクトを表示するサンプル。
+

          
+
#code(cs){{
+
using System;
+
using System.Net;
+

          
+
using Smdn.Protocols.Imap4;
+
using Smdn.Protocols.Imap4.Client;
+
using Smdn.Protocols.Imap4.Client.Protocol;
+
using Smdn.Protocols.Imap4.Client.Session;
+

          
+
class Sample {
+
  public static void Main()
+
  {
+
    using {
+
      session.Credentials = new NetworkCredential("user", "pass");
+

          
+
      if {
+
        Console.WriteLine("authentication failed");
+
        return;
+
      }
+

          
+
      session.Capability();
+

          
+
      var response = session.Select("INBOX");
+

          
+
      if {
+
        Console.WriteLine(response.Description);
+
        return;
+
      }
+

          
+
      session.Idle(delegate(ImapUpdatedStatus status) {
+
        if
+
          return true;
+
        else
+
          return false;
+
      });
+

          
+
      ImapMatchedSequenceSet matched;
+

          
+
      if
+
        session.UidESearch(ImapSearchCriteria.Recent, ImapSearchResultOptions.Save, out matched);
+
      else
+
        session.UidSearch(ImapSearchCriteria.Recent, out matched);
+

          
+
      ImapMessage[] messages;
+

          
+
      session.UidFetch(matched, ImapFetchDataItem.All, out messages);
+

          
+
      foreach {
+
        Console.WriteLine(message.Envelope.Subject);
+
      }
+
    }
+
  }
+
}
+
}}
+

          
+
Gmailに接続し、スター付きのメールにThunderbirdのTo Doタグを付けるサンプル。
+
#code(cs){{
+
using System;
+
using System.Net;
+

          
+
using Smdn.Protocols.Imap4;
+
using Smdn.Protocols.Imap4.Client;
+
using Smdn.Protocols.Imap4.Client.Protocol;
+
using Smdn.Protocols.Imap4.Client.Session;
+

          
+
class Sample {
+
  public static void Main()
+
  {
+
    ImapConnection.CertificateValidationCallback += delegate {
+
      return true;
+
    };
+

          
+
    using {
+
      session.Credentials = new NetworkCredential("user", "pass");
+

          
+
      if {
+
        Console.WriteLine("authentication failed");
+
        return;
+
      }
+

          
+
      session.Capability();
+

          
+
      var response = session.Select("[Gmail]/スター付き");
+

          
+
      if {
+
        Console.WriteLine(response.Description);
+
        return;
+
      }
+

          
+
      ImapMessage[] messages;
+

          
+
      session.Store(ImapSequenceSet.CreateUidFromSet(1), ImapStoreDataItem.AddFlags("$label4"), out messages);
+
    }
+
  }
+
}
+
}}

works/libs/Smdn.Protocols.Imap4/index.wiki.txt

current previous
1,69 1,99
~
${smdncms:keywords,Smdn.Protocols.Imap4,IMAP,IMAP4,IMAP4rev1,C#,.NET,Mono,mail,クライアント,ライブラリ}
${smdncms:keywords,C#,.NET,Mono,IMAP,IMAP4}
 
*Smdn.Protocols.Imap4
*Smdn.Protocols.Imap4
~
C#で書いた.NET Framework/Mono用IMAP4rev1クライアントライブラリです。 IMAPサーバからのメールボックスの管理(作成・削除・ステータスの取得など)、メッセージの検索・取得・アップロードなどが出来ます。
C#で書いた.NET Framework/Mono用IMAP4rev1クライアントライブラリです。 今までのところ、IMAPサーバからのメールボックス一覧およびステータスの取得、メッセージの検索および取得が出来ます。
 

        

        
~
**機能概要
**機能
~
-使用可能なコマンド
現在対応している機能の一覧です。 部分的に対応しているものも含みます。
~
--認証系コマンド
-認証系コマンド
~
---AUTHENTICATE(DIGEST-MD5, CRAM-MD5, NTLM, PLAIN, LOGIN, ANONYMOUS), LOGIN, LOGOUT, STARTTLS
--AUTHENTICATE
~
--メールボックス操作系コマンド
--LOGIN
~
---標準コマンド: CREATE, RENAME, DELETE, CLOSE, SELECT, EXAMINE, LIST, LSUB, STATUS, SUBSCRIBE, UNSUBSCRIBE
--STARTTLS
~
---拡張コマンド: RLIST, RLSUB, UNSELECT, NAMESPACE
--LOGOUT
~
--メッセージ操作系コマンド
-メールボックス操作系コマンド
~
---標準コマンド: APPEND,SEARCH, EXPUNGE
--CREATE, RENAME, DELETE, CLOSE, SELECT, EXAMINE, LIST, LSUB, STATUS, SUBSCRIBE, UNSUBSCRIBE
~
---拡張コマンド:, UID EXPUNGE
--UNSELECT
~
--その他のコマンド
--NAMESPACE
~
---標準コマンド: NOOP, CHECK, CAPABILITY
-メッセージ操作系コマンド
~
---拡張コマンド: ENABLE, COMPRESS, IDLE, ID
--APPEND,SEARCH, EXPUNGE
~
-クライアント機能
-その他のコマンド
~
--IMAPコマンドと1対1に対応するメソッドを持つクライアント
--CHECK, NOOP, CAPABILITY
~
--WebRequest/WebResponseクラスから派生しIMAP URLでの操作に対応したクライアント
--IDLE
-
--XYZZY
-
-その他
-
--Modified UTF-7、日本語等非ASCII文字に対応
-
---日本語等を含むメールボックス名の操作に対応
-
---日本語等を含むSEARCHコマンドのクエリに対応(既定でUTF-8を使用、サーバが対応していない場合はBADCHARSET応答で指定された文字コードを自動的に選択)
-
--RFC 3348 The Internet Message Action Protocol Child Mailbox Extension
-
--RFC 2221 IMAP4 Login Referrals
-
--RFC 2193 IMAP4 Mailbox Referrals
-
--RFC 2192 IMAP URL Scheme
 

        

        
~
機能の詳細は[[works/libs/Smdn.Protocols.Imap4/feature]]、使い方・サンプルコードは[[works/libs/Smdn.Protocols.Imap4/doc]]をご覧ください。 またデモ用アプリケーション[[works/tools/junk/TundereBird]]もあわせてご覧ください。
RFC 3501で規定されているコマンドは概ね実装が完了しています。
 

        

        
 
**ダウンロード
**ダウンロード
 
#googleadunit
#googleadunit
~
0.20以降はMIT X11ライセンスでのリリースとなります。 0.20より前のバージョンについては特に使用条件を定めていません。
-ソース
-
--[[works/tools/junk/TundereBird]]に含まれているものを使ってください
-
-ドキュメント
-
--(そのうち作ります)
 

        

        
~
-0.2x
**サンプル
~
--${smdncms:distfilelink,Smdn.Protocols.Imap4-0.20.tar.bz2}
本ライブラリを使用して、GMail IMAPサーバからメッセージをダウンロードし、タイトルと本文を表示する例です。
~
-0.1x
 using Smdn.Protocols.Imap4;
~
--[[works/tools/junk/TundereBird]]に含まれているものを使ってください
 using Smdn.Protocols.Imap4.Client;
-
 
-
 public class GmailFetchSample {
-
   public static void Main(string[] args) {
-
     using {
-
       agent.Initialize();
-
       agent.ServerCertificateValidationCallback = delegate {
-
         return true;
-
       };
-
 
-
       var client = agent.CreateClient();
-
 
-
       client.Password = "password";
-
       client.UseSsl = true;
-
 
-
       var message = client.FetchMessage(new ImapUri("imap://username;AUTH=*@imap.gmail.com:993/INBOX/;UID=3"));
-
 
-
       Console.WriteLine(message.Envelope.Subject);
-
       Console.WriteLine(message.Body);
-
     }
-
   }
-
 }
 

        

        
~
**変更履歴
本ライブラリを使用したサンプルアプリケーション[[works/tools/junk/TundereBird]]もご覧ください。
+
***0.2x
+
:0.20|ライセンスをMIT X11に変更
+
コマンド・リクエストの処理をセッションに共通スレッドからセッション毎のスレッドプールを使用するように変更
+
リクエストの処理速度を改善
+
&urn2url(urn:ietf:rfc:4315){UIDPLUS};、&urn2url(urn:ietf:rfc:4731){ESEARCH};、&urn2url(urn:ietf:rfc:5182){SEARCHRES};などの拡張に対応
+
DIGEST-MD5およびNTLM認証に対応
+

          
+
***0.1x
+
:0.13|STARTTLSコマンドによるTLSへのアップグレードに対応
+
不正な形式のModified UTF-7文字列のデコードで例外となる場合の対処を追加
+
PREAUTH応答のグリーティングメッセージからのcapability dataの取得に失敗する不具合を修正
+
FETCHリクエストを10240オクテット毎にpartial fetchするように改善
+
未知の種類のBODYSTRUCTUREの場合でも解析を継続するように改善
+
:0.12|Modified UTF-7(日本語等非ASCII文字を含むメールボックス名)に対応
+
レスポンス解析処理のバグを修正
+
IDLE後のレスポンス処理が即座に行われない不具合を修正
+
HMACMD5アルゴリズムの実装を独自の実装からライブラリ標準のクラスを用いたものに変更
+
:0.11|グリーティングメッセージからのcapability dataの取得に失敗する不具合を修正
+
セッションのステートチェック処理の誤りを修正
+
AUTHENTICATEで使用できる認証方法がない場合の動作を変更
+
:0.10|初版
 

        

        
 
**動作状況
**動作状況
~
以下のIMAPサーバに対して概ね問題なく動作することを確認済みです。
以下のIMAPサーバに対して動作することを確認済みです。
~
-GMail
-Gimap(GMail)
~
-Dovecot
-Dovecot
-
--1.0.beta8
-
--1.0.rc15
-
--1.0.rc17
 

        

        
 
以下の環境で動作することを確認済みです。
以下の環境で動作することを確認済みです。
~
-.NET Framework 3.5
-.NET Framework 2.0.50727
~
-Mono 2.4
-Mono 1.2.6
-
-Mono 1.9
-

          
-
**対応予定
-
今後対応する予定の機能です。
-
-FETCH(RFC822.HEADER, RFC822.TEXT)
-
-SEARCHで使用する文字コードの指定
-
-RFC 5092 IMAP URL Scheme
-
-RFC 4469 Internet Message Access Protocol CATENATE Extension
-
-RFC 4467 Internet Message Access Protocol - URLAUTH Extension
-
-RFC 4315 Internet Message Access Protocol - UIDPLUS extension
-
-RFC 3502 Internet Message Access Protocol - MULTIAPPEND Extension
 

        

        
~
**制限事項
**注意
 
-MIMEメッセージのデコード機能は含んでいません。 デコード機能が必要な場合は他のライブラリか、[[works/libs/Smdn.Formats.Mime]]を使ってください。
-MIMEメッセージのデコード機能は含んでいません。 デコード機能が必要な場合は他のライブラリか、[[works/libs/Smdn.Formats.Mime]]を使ってください。
-
-本ライブラリはトレースにログを出力します。 ログにはパスワードを含む送受信内容を解読可能な状態で書き出します。 不要な場合はTrace.csを削除するか、TRACEオプションおよびDUMPオプションを外してリビルドしてください。
-
-タイムアウト処理を実装してありますが、タイムアウトさせると内部状態がおかしくなるので使わない方がいいです。
-
-デフォルトではLogin Referrals、Mailbox Referralsを含むレスポンスを受信しても通常のNO応答と同様に扱います。 自動的にReferral先を参照するようには作ってありません。 ImapSession.HandlesReferralAsExceptionをtrueにすればIMAP URLを含む例外を送出するようになります。
-
-送受信処理がかなり遅いです(特にFETCH)。 近いうちに改善するつもりです。
 

        

        
 
**参考文献
**参考文献
 
#amazon(4873110289,left,content)
#amazon(4873110289,left,content)

works/libs/Smdn.Protocols.Imap4/feature/index.wiki.txt

current previous
1,232 0,0
+
${smdncms:keywords,}
+
*機能一覧
+
[[works/libs/Smdn.Protocols.Imap4]]最新版の実装済み機能の一覧です。 IMAP関連のRFC・仕様へのリンク集も兼ねています。
+

          
+
**supported features
+
:&color(green){implemented};|実装済みの機能
+
一部不完全な箇所があったり、仕様と異なる実装になっているかもしれません
+
:&color(orange){partially implemented};|部分的に実装済みの機能
+
コマンドの送受信のみサポートする、仕様の一部のみをサポートする、などの状態です
+
:&color(red){not tested};|実装済みだが動作確認できていない機能
+
:&color(gray){not implemented};|実装されていない機能
+

          
+
***standards and IMAP extensions
+
サポートする標準仕様およびIMAP拡張仕様の一覧です。 標準化されていないドラフトも一部サポートしています。
+
|RFC|capability name|status|note|h
+
|&urn2url(urn:ietf:rfc:2087,anchor-text);|QUOTA|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:2088,anchor-text);|LITERAL+|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:2177,anchor-text);|IDLE|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:2180,anchor-text);|-|&color(orange){partially implemented};||
+
|&urn2url(urn:ietf:rfc:2193,anchor-text);|MAILBOX-REFERRALS|&color(orange){partially implemented};||
+
|&urn2url(urn:ietf:rfc:2221,anchor-text);|LOGIN-REFERRALS|&color(orange){partially implemented};||
+
|&urn2url(urn:ietf:rfc:2342,anchor-text);|NAMESPACE|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:2595,anchor-text);|STARTTLS|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:2595,anchor-text);|LOGINDISABLED|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:2971,anchor-text);|ID|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:3348,anchor-text);|CHILDREN|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:3501,anchor-text);|IMAP4rev1|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:3502,anchor-text);|MULTIAPPEND|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:3516,anchor-text);|BINARY|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:3691,anchor-text);|UNSELECT|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:4314,anchor-text);|ACL|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:4314,anchor-text);|RIGHTS=*|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:4315,anchor-text);|UIDPLUS|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:4466,anchor-text);|-|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:4467,anchor-text);|URLAUTH|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:4469,anchor-text);|CATENATE|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:4551,anchor-text);|CONDSTORE|&color(orange){partially implemented};||
+
|&urn2url(urn:ietf:rfc:4731,anchor-text);|ESEARCH|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:4959,anchor-text);|SASL-IR|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:4978,anchor-text);|COMPRESS=DEFLATE|&color(red){not tested};||
+
|&urn2url(urn:ietf:rfc:5032,anchor-text);|WITHIN|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:5092,anchor-text);|-|&color(orange){partially implemented};|URLAUTHは未実装です。 URLにUIDVALIDITYが指定されていてもUIDの検証は行いません。 [独自拡張]URLのスキームがimapsの場合、デフォルトポートとして993を使用し、SSLによる接続を試みます。|
+
|&urn2url(urn:ietf:rfc:5161,anchor-text);|ENABLE|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:5162,anchor-text);|QRESYNC|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5182,anchor-text);|SEARCHRES|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:5255,anchor-text);|I18NLEVEL=1|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5255,anchor-text);|I18NLEVEL=2|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5255,anchor-text);|LANGUAGE|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5256,anchor-text);|SORT|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:5256,anchor-text);|THREAD=ORDEREDSUBJECT|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:5256,anchor-text);|THREAD=REFERENCES|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:5257,anchor-text);|ANNOTATE-EXPERIMENT-1|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5258,anchor-text);|LIST-EXTENDED|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5259,anchor-text);|CONVERT|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5267,anchor-text);|CONTEXT=SEARCH|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5267,anchor-text);|CONTEXT=SORT|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5267,anchor-text);|ESORT|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:5464,anchor-text);|METADATA|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5464,anchor-text);|METADATA-SERVER|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5465,anchor-text);|NOTIFY|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5466,anchor-text);|FILTERS|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5524,anchor-text);|URLAUTH=BINARY|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:5530,anchor-text);|-|&color(green){implemented};||
+
|&urn2url(urn:ietf:id:ietf-morg-inthread-00,anchor-text);|SEARCH=INTHREAD|&color(green){implemented};||
+
|&urn2url(urn:ietf:id:ietf-morg-inthread-00,anchor-text);|THREAD=REFS|&color(green){implemented};||
+
|RFC|capability name|status|note|f
+

          
+
***SASL mechanisms
+
サポートするSASL認証メカニズムの一覧です。
+
|RFC|mechanism name|status|note|h
+
|&urn2url(urn:ietf:rfc:1731,anchor-text);|KERBEROS_V4|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:2195,anchor-text);|CRAM-MD5|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:2444,anchor-text);|OTP|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:2444,anchor-text);|SKEY|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:2595,anchor-text);|PLAIN|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:2808,anchor-text);|SECURID|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:2831,anchor-text);|DIGEST-MD5|&color(orange){partially implemented};|realmには対応していません。 また、サーバ側の実装によっては正しく動作しない可能性があります。|
+
|&urn2url(urn:ietf:rfc:3163,anchor-text);|9798-U-RSA-SHA1-ENC|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:3163,anchor-text);|9798-M-RSA-SHA1-ENC|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:3163,anchor-text);|9798-U-DSA-SHA1|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:3163,anchor-text);|9798-M-DSA-SHA1|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:3163,anchor-text);|9798-U-ECDSA-SHA1|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:3163,anchor-text);|9798-M-ECDSA-SHA1|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:4422,anchor-text);|EXTERNAL|&color(gray){not implemented};||
+
|&urn2url(urn:ietf:rfc:4505,anchor-text);|ANONYMOUS|&color(green){implemented};||
+
|&urn2url(urn:ietf:rfc:4752,anchor-text);|GSSAPI|&color(gray){not implemented};||
+
|[[[MS-NLMP:http://msdn.microsoft.com/en-us/library/cc236621(PROT.13).aspx]]] NT LAN Manager{partially implemented};|Mono.Security.dllを使用します。 Mono.Security.dllを動的にロードできない環境では使用できません。 また、サーバ側の実装によっては正しく動作しない可能性があります。|
+
|RFC|mechanism name|status|note|f
+

          
+
***commands
+
サポートするコマンドの一覧です。
+
|command|RFC|status|note|h
+
|~[RFC3501] Client Commands - Any State|&urn2url(urn:ietf:rfc:3501,#6.1,short);|-|-|
+
|CAPABILITY|&urn2url(urn:ietf:rfc:3501,#6.1.1,short);|&color(green){implemented};||
+
|NOOP|&urn2url(urn:ietf:rfc:3501,#6.1.2,short);|&color(green){implemented};||
+
|LOGOUT|&urn2url(urn:ietf:rfc:3501,#6.1.3,short);|&color(green){implemented};||
+
|~[RFC3501] Client Commands - Not Authenticated State|&urn2url(urn:ietf:rfc:3501,#6.3,short);|-|-|
+
|STARTTLS|&urn2url(urn:ietf:rfc:3501,#6.2.1,short);|&color(green){implemented};||
+
|AUTHENTICATE|&urn2url(urn:ietf:rfc:3501,#6.2.2,short);|&color(green){implemented};||
+
|LOGIN|&urn2url(urn:ietf:rfc:3501,#6.2.3,short);|&color(green){implemented};||
+
|~[RFC3501] Client Commands - Authenticated State|&urn2url(urn:ietf:rfc:3501,#6.3,short);|-|-|
+
|SELECT|&urn2url(urn:ietf:rfc:3501,#6.3.1,short); &urn2url(urn:ietf:rfc:4466,#2.1,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|EXAMINE|&urn2url(urn:ietf:rfc:3501,#6.3.2,short); &urn2url(urn:ietf:rfc:4466,#2.1,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|CREATE|&urn2url(urn:ietf:rfc:3501,#6.3.3,short); &urn2url(urn:ietf:rfc:4466,#2.2,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|DELETE|&urn2url(urn:ietf:rfc:3501,#6.3.4,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|RENAME|&urn2url(urn:ietf:rfc:3501,#6.3.5,short); &urn2url(urn:ietf:rfc:4466,#2.3,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|SUBSCRIBE|&urn2url(urn:ietf:rfc:3501,#6.3.6,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|UNSUBSCRIBE|&urn2url(urn:ietf:rfc:3501,#6.3.7,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|LIST|&urn2url(urn:ietf:rfc:3501,#6.3.8,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|LSUB|&urn2url(urn:ietf:rfc:3501,#6.3.9,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|STATUS|&urn2url(urn:ietf:rfc:3501,#6.3.10,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|APPEND|&urn2url(urn:ietf:rfc:3501,#6.3.11,short); &urn2url(urn:ietf:rfc:4466,#2.7,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|~[RFC3501] Client Commands - Selected State|&urn2url(urn:ietf:rfc:3501,#6.4,short);|-|-|
+
|CHECK|&urn2url(urn:ietf:rfc:3501,#6.4.1,short);|&color(green){implemented};||
+
|CLOSE|&urn2url(urn:ietf:rfc:3501,#6.4.2,short);|&color(green){implemented};||
+
|EXPUNGE|&urn2url(urn:ietf:rfc:3501,#6.4.3,short);|&color(green){implemented};||
+
|SEARCH, UID SEARCH|&urn2url(urn:ietf:rfc:3501,#6.4.4,short); &urn2url(urn:ietf:rfc:3501,#6.4.11,short); &urn2url(urn:ietf:rfc:4466,#2.6,short);|&color(green){implemented};|非ASCII文字での検索に対応&sub{*2};|
+
|FETCH, UID FETCH|&urn2url(urn:ietf:rfc:3501,#6.4.5,short); &urn2url(urn:ietf:rfc:3501,#6.4.11,short); &urn2url(urn:ietf:rfc:4466,#2.4,short);|&color(orange){partially implemented};|HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, TEXTのFETCHは未実装です。 またbody-extension fieldsはレスポンスに含まれていても無視します。|
+
|STORE, UID STORE|&urn2url(urn:ietf:rfc:3501,#6.4.6,short); &urn2url(urn:ietf:rfc:3501,#6.4.11,short); &urn2url(urn:ietf:rfc:4466,#2.5,short);|&color(green){implemented};||
+
|COPY, UID COPY|&urn2url(urn:ietf:rfc:3501,#6.4.7,short); &urn2url(urn:ietf:rfc:3501,#6.4.11,short);|&color(green){implemented};|Modified UTF-7対応&sub{*1};|
+
|~Extensions|-|-|-|
+
|SETQUOTA|&urn2url(urn:ietf:rfc:2087,#4.1,short);|&color(gray){not implemented};||
+
|GETQUOTA|&urn2url(urn:ietf:rfc:2087,#4.2,short);|&color(gray){not implemented};||
+
|GETQUOTAROOT|&urn2url(urn:ietf:rfc:2087,#4.3,short);|&color(gray){not implemented};||
+
|IDLE|&urn2url(urn:ietf:rfc:2177,#3,short);|&color(green){implemented};||
+
|RLIST|&urn2url(urn:ietf:rfc:2193,#5.1,short);|&color(red){not tested};||
+
|RLSUB|&urn2url(urn:ietf:rfc:2193,#5.2,short);|&color(red){not tested};||
+
|NAMESPACE|&urn2url(urn:ietf:rfc:2342,#5,short);|&color(green){implemented};||
+
|ID|&urn2url(urn:ietf:rfc:2971,#3.1,short);|&color(green){implemented};||
+
|APPEND{implemented};||
+
|UNSELECT|&urn2url(urn:ietf:rfc:3691,#2,short);|&color(green){implemented};||
+
|SETACL|&urn2url(urn:ietf:rfc:4314,#3.1,short);|&color(gray){not implemented};||
+
|DELETEACL|&urn2url(urn:ietf:rfc:4314,#3.2,short);|&color(gray){not implemented};||
+
|GETACL|&urn2url(urn:ietf:rfc:4314,#3.3,short);|&color(gray){not implemented};||
+
|LISTRIGHTS|&urn2url(urn:ietf:rfc:4314,#3.4,short);|&color(gray){not implemented};||
+
|MYRIGHTS|&urn2url(urn:ietf:rfc:4314,#3.5,short);|&color(gray){not implemented};||
+
|UID EXPUNGE|&urn2url(urn:ietf:rfc:4315,#2.1,short);|&color(green){implemented};||
+
|RESETKEY|&urn2url(urn:ietf:rfc:4467,#7,short);|&color(gray){not implemented};||
+
|GENURLAUTH|&urn2url(urn:ietf:rfc:4467,#7,short);|&color(gray){not implemented};||
+
|URLFETCH|&urn2url(urn:ietf:rfc:4467,#7,short); &urn2url(urn:ietf:rfc:5524,#3,short);|&color(gray){not implemented};||
+
|FETCH with CHANGEDSINCE FETCH modifier|&urn2url(urn:ietf:rfc:4551,#3.3.1,short);|&color(green){implemented};||
+
|STORE with UNCHANGEDSINCE STORE modifier|&urn2url(urn:ietf:rfc:4551,#3.2,short);|&color(green){implemented};||
+
|SELECT with CONDSTORE parameter|&urn2url(urn:ietf:rfc:4551,#3.7,short);|&color(green){implemented};||
+
|EXAMINE with CONDSTORE parameter|&urn2url(urn:ietf:rfc:4551,#3.7,short);|&color(green){implemented};||
+
|SEARCH with RETURN result specifier|&urn2url(urn:ietf:rfc:4731,#3.1,short); &urn2url(urn:ietf:rfc:5182,#2.1,short); &urn2url(urn:ietf:id:ietf-morg-inthread-00,#3.5,short);|&color(green){implemented};||
+
|SORT with RETURN result specifier|&urn2url(urn:ietf:rfc:4731,#3.1,short); &urn2url(urn:ietf:rfc:5182,#2.1,short); &urn2url(urn:ietf:id:ietf-morg-inthread-00,#3.5,short);|&color(green){implemented};||
+
|COMPRESS|&urn2url(urn:ietf:rfc:4978,#3,short);|&color(red){not tested};||
+
|ENABLE|&urn2url(urn:ietf:rfc:5161,#3.1,short);|&color(green){implemented};||
+
|LANGUAGE|&urn2url(urn:ietf:rfc:5255,#3.2,short);|&color(gray){not implemented};||
+
|COMPARATOR|&urn2url(urn:ietf:rfc:5255,#4.7,short);|&color(gray){not implemented};||
+
|SORT, UID SORT|&urn2url(urn:ietf:rfc:5256,#3,short);|&color(green){implemented};|非ASCII文字での検索に対応&sub{*2};|
+
|THREAD, UID THREAD|&urn2url(urn:ietf:rfc:5256,#3,short);|&color(green){implemented};|非ASCII文字での検索に対応&sub{*2};|
+
|CONVERSIONS|&urn2url(urn:ietf:rfc:5259,#5.1,short);|&color(gray){not implemented};||
+
|CONVERT, UID CONVERT|&urn2url(urn:ietf:rfc:5259,#6,short);|&color(gray){not implemented};||
+
|GETMETADATA|&urn2url(urn:ietf:rfc:5464,#4.2,short);|&color(gray){not implemented};||
+
|SETMETADATA|&urn2url(urn:ietf:rfc:5464,#4.3,short);|&color(gray){not implemented};||
+
|NOTIFY|&urn2url(urn:ietf:rfc:5465,#3.1,short);|&color(gray){not implemented};||
+
|command|RFC|status|note|f
+

          
+
:Modified UTF-7対応&sub{*1};|メールボックス名に非ASCII文字を含む場合、自動的にModified UTF-7に変換します。
+
:非ASCII文字での検索に対応&sub{*2};|文字コードには任意のSystem.Text.Encodingを指定できます。 明示的に指定しない場合はUTF-8を使用します。
+
&urn2url(urn:ietf:rfc:5255);への対応はまだ不完全です。
+

          
+
***response codes
+
サポートするレスポンスコードの一覧です。
+
|response code|RFC|status|note|h
+
|NEWNAME|&urn2url(urn:ietf:rfc:2060,short);|&color(gray){not implemented};||
+
|REFERRAL|&urn2url(urn:ietf:rfc:2221,short);|&color(orange){partially implemented};|デフォルトでは通常のNOレスポンスと同様&sub{*1};に扱います。 オプションでIMAP URLを含む例外をスローするかどうか指定できます。|
+
|ALERT|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};|TraceEventType.InformationのイベントでメッセージをTraceSourceに出力します。|
+
|BADCHARSET|&urn2url(urn:ietf:rfc:3501,short);|&color(orange){partially implemented};|通常のNOレスポンスと同様&sub{*1};に扱います。|
+
|CAPABILITY|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};||
+
|PARSE|&urn2url(urn:ietf:rfc:3501,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|PERMANENTFLAGS|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};||
+
|READ-ONLY|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};||
+
|READ-WRITE|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};||
+
|TRYCREATE|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};|デフォルトでは通常のNOレスポンスと同様&sub{*1};に扱います。 オプションで自動的にメールボックスを作成するかどうか指定できます。|
+
|UIDNEXT|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};||
+
|UIDVALIDITY|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};||
+
|UNSEEN|&urn2url(urn:ietf:rfc:3501,short);|&color(green){implemented};||
+
|UNKNOWN-CTE|&urn2url(urn:ietf:rfc:3516,short);|&color(gray){not implemented};||
+
|UIDNOTSTICKY|&urn2url(urn:ietf:rfc:4315,short);|&color(green){implemented};||
+
|APPENDUID|&urn2url(urn:ietf:rfc:4315,short);|&color(green){implemented};||
+
|COPYUID|&urn2url(urn:ietf:rfc:4315,short);|&color(green){implemented};||
+
|URLMECH|&urn2url(urn:ietf:rfc:4315,short);|&color(gray){not implemented};||
+
|TOOBIG|&urn2url(urn:ietf:rfc:4469,short);|&color(gray){not implemented};||
+
|BADURL|&urn2url(urn:ietf:rfc:4469,short);|&color(gray){not implemented};||
+
|HIGHESTMODSEQ|&urn2url(urn:ietf:rfc:4551,short);|&color(green){implemented};||
+
|NOMODSEQ|&urn2url(urn:ietf:rfc:4551,short);|&color(green){implemented};||
+
|MODIFIED|&urn2url(urn:ietf:rfc:4551,short);|&color(green){implemented};||
+
|COMPRESSIONACTIVE|&urn2url(urn:ietf:rfc:4978,short);|&color(orange){partially implemented};|通常のNOレスポンスと同様&sub{*1};に扱います。|
+
|CLOSED|&urn2url(urn:ietf:rfc:5162,short);|&color(gray){not implemented};||
+
|NOTSAVED|&urn2url(urn:ietf:rfc:5182,short);|&color(green){implemented};||
+
|BADCOMPARATOR|&urn2url(urn:ietf:rfc:5255,short);|&color(gray){not implemented};||
+
|ANNOTATE|&urn2url(urn:ietf:rfc:5257,short);|&color(gray){not implemented};||
+
|ANNOTATIONS|&urn2url(urn:ietf:rfc:5257,short);|&color(gray){not implemented};||
+
|TEMPFAIL|&urn2url(urn:ietf:rfc:5259,short);|&color(gray){not implemented};||
+
|MAXCONVERTMESSAGES|&urn2url(urn:ietf:rfc:5259,short);|&color(gray){not implemented};||
+
|MAXCONVERTPARTS|&urn2url(urn:ietf:rfc:5259,short);|&color(gray){not implemented};||
+
|NOUPDATE|&urn2url(urn:ietf:rfc:5267,short);|&color(gray){not implemented};||
+
|METADATA|&urn2url(urn:ietf:rfc:5464,short);|&color(gray){not implemented};||
+
|NOTIFICATIONOVERFLOW|&urn2url(urn:ietf:rfc:5465,short);|&color(gray){not implemented};||
+
|BADEVENT|&urn2url(urn:ietf:rfc:5465,short);|&color(gray){not implemented};||
+
|UNDEFINED-FILTER|&urn2url(urn:ietf:rfc:5466,short);|&color(gray){not implemented};||
+
|UNAVAILABLE|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|AUTHENTICATIONFAILED|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|AUTHORIZATIONFAILED|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|EXPIRED|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|PRIVACYREQUIRED|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|CONTACTADMIN|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|NOPERM|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|INUSE|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|EXPUNGEISSUED|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|CORRUPTION|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|SERVERBUG|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|CLIENTBUG|&urn2url(urn:ietf:rfc:5530,short);|&color(green){implemented};|TraceEventType.InformationのイベントでメッセージをTraceSourceに出力します。|
+
|CANNOT|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|LIMIT|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|OVERQUOTA|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|ALREADYEXISTS|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|NONEXISTENT|&urn2url(urn:ietf:rfc:5530,short);|&color(orange){partially implemented};|通常のレスポンスと同様&sub{*1};に扱います。|
+
|response code|RFC|status|note|f
+

          
+
:通常のレスポンスと同様&sub{*1};|そのレスポンスを受信したということだけを検知します。 レスポンスに応じた処理を行うといったことはしません。
+

          
+
***関連リンク
+
-[[IANA — Protocol Registries:http://www.iana.org/protocols/]]
+
--[[Internet Message Access Protocol 4 Capabilities Registry:http://www.iana.org/assignments/imap4-capabilities]]
+
--[[IMAP Response Codes:http://www.iana.org/assignments/imap-response-codes/imap-response-codes.xhtml]]
+
--[[SIMPLE AUTHENTICATION AND SECURITY LAYER MECHANISMS:http://www.iana.org/assignments/sasl-mechanisms]]
+
-[[The IMAP Connection -- IMAP Documents: RFCs and Drafts:http://www.imap.org/biblio.html]]
+
-[[IMAP Server implementations:http://www.melnikov.ca/mel/devel/ServerReference.html]]
+