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

current previous
16,13 16,6
 
-開発版
-開発版
 
--[[anonsvn]]よりチェックアウトできます
--[[anonsvn]]よりチェックアウトできます
 
-0.2x
-0.2x
+
--${smdncms:distfilelink,TundereBird-0.24.tar.bz2}
+
---下記ライブラリのソースを同梱しています
+
----[[works/libs/Smdn.Net.Imap4]] 0.24
+
----[[works/libs/Smdn.Net.Pop3]] 0.24
+
----[[works/libs/Smdn.Security.Authentication.Sasl]] 0.24
+
----[[works/libs/Smdn.Formats.Mime]] 0.16
+
----[[works/libs/Smdn.Formats.Ini]] 0.16
 
--${smdncms:distfilelink,TundereBird-0.23.tar.bz2}
--${smdncms:distfilelink,TundereBird-0.23.tar.bz2}
 
---下記ライブラリのソースを同梱しています
---下記ライブラリのソースを同梱しています
 
----[[works/libs/Smdn.Net.Imap4]] 0.23
----[[works/libs/Smdn.Net.Imap4]] 0.23
81,10 74,6
 
不具合の報告、ライブラリに対する要望や提案、使い方の質問などは[[掲示板>misc/forum/libs]]へどうぞ。
不具合の報告、ライブラリに対する要望や提案、使い方の質問などは[[掲示板>misc/forum/libs]]へどうぞ。
 

        

        
 
*変更履歴
*変更履歴
+
**0.24
+
-修正・改善
+
--パスワードの入力ダイアログを追加、設定ファイルにパスワードを記入しなくても接続できるようにした。
+

         
 
**0.23
**0.23
 
-機能追加
-機能追加
 
--IMAP
--IMAP

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

current previous
1,6 1,6
 
${smdncms:title,ドキュメント・サンプル}
${smdncms:title,ドキュメント・サンプル}
 
${smdncms:keywords,}
${smdncms:keywords,}
~
[[works/libs/Smdn.Net.Imap4]]のドキュメントとサンプルです。 ここに記載されているものはversion 0.24時点のもので、記載不備などがあるかもしれません。 ご質問などありましたら[[掲示板>misc/forum/libs]]へどうぞ。
[[works/libs/Smdn.Net.Imap4]]のドキュメントとサンプルです。 ご質問などありましたら[[掲示板>misc/forum/libs]]へどうぞ。
 

        

        
 
*使用例
*使用例
 
個々のサンプルの詳細については、後述するSmdn.Net.Imap4.WebClients名前空間の説明を参照してください。
個々のサンプルの詳細については、後述するSmdn.Net.Imap4.WebClients名前空間の説明を参照してください。
42,7 42,7
 

        

        
 
    using {
    using {
 
      client.Credentials = new NetworkCredential("user", "pass");
      client.Credentials = new NetworkCredential("user", "pass");
~
      client.UploadData("imap://user;AUTH=DIGEST-MD5@localhost/INBOX", ImapWebRequestMethods.Append, File.ReadAllBytes("sample.eml"));
      client.UploadData("imap://user;AUTH=DIGEST-MD5@localhost/INBOX/", ImapWebRequestMethods.Append, File.ReadAllBytes("sample.eml"));
 
    }
    }
 
  }
  }
 
}
}
62,7 62,7
 
    ImapSessionManager.RegisterWebRequestPrefix();
    ImapSessionManager.RegisterWebRequestPrefix();
 
    ImapSessionManager.CertificateValidationCallback = delegate { return true; };
    ImapSessionManager.CertificateValidationCallback = delegate { return true; };
 

        

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

        

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

        

        
165,8 165,8
 
|*リクエストURLの形式とリクエストの対象
|*リクエストURLの形式とリクエストの対象
 
|リクエストURLの形式|リクエストの対象|h
|リクエストURLの形式|リクエストの対象|h
 
|imap://imap.example.net/|URLで指定されたサーバ・アカウント|
|imap://imap.example.net/|URLで指定されたサーバ・アカウント|
~
|imap://imap.example.net/mailbox|URLで指定されたメールボックス|
|imap://imap.example.net/mailbox/|URLで指定されたメールボックス|
~
|imap://imap.example.net/mailbox?...|URLで指定されたメールボックスにあるメッセージのうち、検索クエリに該当する全てのメッセージ|
|imap://imap.example.net/mailbox/?...|URLで指定されたメールボックスにあるメッセージのうち、検索クエリに該当する全てのメッセージ|
 
|imap://imap.example.net/mailbox/;UID=1|URLで指定されたメールボックスにあるメッセージのうち、UIDに該当する特定のメッセージ|
|imap://imap.example.net/mailbox/;UID=1|URLで指定されたメールボックスにあるメッセージのうち、UIDに該当する特定のメッセージ|
 

        

        
 
WebRequest.Createメソッドが返すWebRequestインスタンスのMethodプロパティにデフォルトで設定される値は、リクエストURLの形式によって決まります。
WebRequest.Createメソッドが返すWebRequestインスタンスのMethodプロパティにデフォルトで設定される値は、リクエストURLの形式によって決まります。
182,33 182,32
 
|Methodプロパティ|リクエスト|解説|レスポンス|f
|Methodプロパティ|リクエスト|解説|レスポンス|f
 

        

        
 
***メールボックスに対するリクエスト
***メールボックスに対するリクエスト
~
リクエストURLがメールボックスを表す場合(imap://imap.example.net/mailboxの形式)のリクエストとレスポンスの動作は次のとおりです。
リクエストURLがメールボックスを表す場合(imap://imap.example.net/mailbox/の形式)のリクエストとレスポンスの動作は次のとおりです。
 

        

        
 
|Methodプロパティ|リクエスト|解説|レスポンス|h
|Methodプロパティ|リクエスト|解説|レスポンス|h
 
|ImapWebRequestMethods.Fetch, "FETCH"&br;(デフォルト)|FETCHコマンドを送信してメールボックスにあるメッセージの一覧を取得します。|取得するのはメッセージの属性のみ(ALLマクロで取得されるフラグ、サイズ、internal date、エンベロープ)です。 メッセージ本文は取得しません。|取得したメッセージの一覧は、ImapWebResponse.Messagesプロパティに設定されます。|
|ImapWebRequestMethods.Fetch, "FETCH"&br;(デフォルト)|FETCHコマンドを送信してメールボックスにあるメッセージの一覧を取得します。|取得するのはメッセージの属性のみ(ALLマクロで取得されるフラグ、サイズ、internal date、エンベロープ)です。 メッセージ本文は取得しません。|取得したメッセージの一覧は、ImapWebResponse.Messagesプロパティに設定されます。|
 
|ImapWebRequestMethods.Append, "APPEND"|APPENDコマンドを送信してメールボックスにメッセージをアップロードします。|アップロードするメッセージはWebRequest.GetRequestStreamメソッドが返すStreamに書き込みます。 現在の実装では、リクエスト開始時にContentLengthの値が指定されているか、GetRequestStreamメソッドが返すStreamを閉じるまでアップロードは保留されます。 メッセージはMIME形式であるべきですが、ライブラリ側ではアップロードする内容をチェックしません。|サーバがアップロードしたメッセージのUIDを返す場合は、アップロードしたメッセージのURLがWebResponse.ResponseUriに設定されます。|
|ImapWebRequestMethods.Append, "APPEND"|APPENDコマンドを送信してメールボックスにメッセージをアップロードします。|アップロードするメッセージはWebRequest.GetRequestStreamメソッドが返すStreamに書き込みます。 現在の実装では、リクエスト開始時にContentLengthの値が指定されているか、GetRequestStreamメソッドが返すStreamを閉じるまでアップロードは保留されます。 メッセージはMIME形式であるべきですが、ライブラリ側ではアップロードする内容をチェックしません。|サーバがアップロードしたメッセージのUIDを返す場合は、アップロードしたメッセージのURLがWebResponse.ResponseUriに設定されます。|
 
|ImapWebRequestMethods.Expunge, "EXPUNGE"|EXPUNGEコマンドを送信してメールボックスから\Deletedフラグの付いたメッセージを削除します。|-|-|
|ImapWebRequestMethods.Expunge, "EXPUNGE"|EXPUNGEコマンドを送信してメールボックスから\Deletedフラグの付いたメッセージを削除します。|-|-|
~
|ImapWebRequestMethods.Create, "CREATE"|CREATEコマンドを送信してURLで指定された名前でメールボックスを作成します。|ImapWebRequest.Subscriptionプロパティがtrueの場合、作成したメールボックスに対して自動的にSUBSCRIBEコマンドを送信します。|作成したメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、作成したメールボックスのURLがWebResponse.ResponseUriに設定されます。|
|ImapWebRequestMethods.Create, "CREATE"|CREATEコマンドを送信してURLで指定された名前でメールボックスを作成します。|作成できた場合、作成したメールボックスに対して自動的にSUBSCRIBEコマンドを送信します。|作成したメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、作成したメールボックスのURLがWebResponse.ResponseUriに設定されます。|
~
|ImapWebRequestMethods.Delete, "DELETE"|DELETEコマンドを送信してメールボックスを削除します。|ImapWebRequest.Subscriptionプロパティがtrueの場合、削除したメールボックスに対してUNSUBSCRIBEコマンドを送信します。&br;削除しようとするメールボックスにメッセージがある場合は削除に失敗するので、STOREやEXPUNGEでメッセージを削除してからメールボックスを削除する必要があります。|-|
|ImapWebRequestMethods.Delete, "DELETE"|DELETEコマンドを送信してメールボックスを削除します。|削除しようとするメールボックスに対してUNSUBSCRIBEコマンドを送信してから削除します。&br;削除しようとするメールボックスにメッセージがある場合は削除に失敗するので、STOREやEXPUNGEでメッセージを削除してからメールボックスを削除する必要があります。|-|
~
|ImapWebRequestMethods.Rename, "RENAME"|RENAMEコマンドを送信してメールボックスの名前を変更します。|ImapWebRequest.Subscriptionプロパティがtrueの場合、変更前後のメールボックスに対して自動的にUNSUBSCRIBE/SUBSCRIBEコマンドを送信します。&br;変更後のメールボックス名はImapWebRequest.DestinationUriプロパティで指定します。|名前を変更した後のメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、名前を変更した後のメールボックスのURLがWebResponse.ResponseUriに設定されます。|
|ImapWebRequestMethods.Rename, "RENAME"|RENAMEコマンドを送信してメールボックスの名前を変更します。|変更後のメールボックス名はImapWebRequest.DestinationUriプロパティで指定します。|名前を変更した後のメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、名前を変更した後のメールボックスのURLがWebResponse.ResponseUriに設定されます。|
 
|ImapWebRequestMethods.Check, "CHECK"|CHECKコマンドを送信します。|このコマンドは何もしません。 CHECKコマンドの動作、レスポンスの内容はサーバの実装によります。|-|
|ImapWebRequestMethods.Check, "CHECK"|CHECKコマンドを送信します。|このコマンドは何もしません。 CHECKコマンドの動作、レスポンスの内容はサーバの実装によります。|-|
 
|ImapWebRequestMethods.Select, "SELECT"|SELECTコマンドを送信してメールボックスを選択します。|このコマンドは選択するだけで何もしません。 メールボックスの状態を取得する場合などに使います。|選択したメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、選択したメールボックスのURLがWebResponse.ResponseUriに設定されます。|
|ImapWebRequestMethods.Select, "SELECT"|SELECTコマンドを送信してメールボックスを選択します。|このコマンドは選択するだけで何もしません。 メールボックスの状態を取得する場合などに使います。|選択したメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、選択したメールボックスのURLがWebResponse.ResponseUriに設定されます。|
 
|ImapWebRequestMethods.Examine, "EXAMINE"|EXAMINEコマンドを送信して読み取り専用でメールボックスを選択します。|このコマンドは選択するだけで何もしません。 メールボックスの状態を取得する場合などに使います。|選択したメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、選択したメールボックスのURLがWebResponse.ResponseUriに設定されます。|
|ImapWebRequestMethods.Examine, "EXAMINE"|EXAMINEコマンドを送信して読み取り専用でメールボックスを選択します。|このコマンドは選択するだけで何もしません。 メールボックスの状態を取得する場合などに使います。|選択したメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。 また、選択したメールボックスのURLがWebResponse.ResponseUriに設定されます。|
+
|ImapWebRequestMethods.Status, "STATUS"|STATUSコマンドを送信してメールボックスの状態を取得します。|取得する情報は、ImapWebRequest.StatusDataItemプロパティで指定します。&br;既にメールボックスを選択している状態で、他のメールボックスの状態を取得する場合に使います。|状態を取得したメールボックスは、ImapWebResponse.Mailboxesプロパティに設定されます。|
 
|ImapWebRequestMethods.Subscribe, "SUBSCRIBE"|SUBSCRIBEコマンドを送信してメールボックスの購読を開始します。|-|-|
|ImapWebRequestMethods.Subscribe, "SUBSCRIBE"|SUBSCRIBEコマンドを送信してメールボックスの購読を開始します。|-|-|
 
|ImapWebRequestMethods.Unsubscribe, "UNSUBSCRIBE"|UNSUBSCRIBEコマンドを送信してメールボックスの購読を解除します。|-|-|
|ImapWebRequestMethods.Unsubscribe, "UNSUBSCRIBE"|UNSUBSCRIBEコマンドを送信してメールボックスの購読を解除します。|-|-|
 
|Methodプロパティ|リクエスト|解説|レスポンス|f
|Methodプロパティ|リクエスト|解説|レスポンス|f
 

        

        
 
***メールボックスに対する検索クエリを含むリクエスト
***メールボックスに対する検索クエリを含むリクエスト
~
リクエストURLがメールボックスに対する検索クエリを表す場合(imap://imap.example.net/mailbox?...の形式)のリクエストとレスポンスの動作は次のとおりです。
リクエストURLがメールボックスに対する検索クエリを表す場合(imap://imap.example.net/mailbox/?...の形式)のリクエストとレスポンスの動作は次のとおりです。
 

        

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

        

        
 
***メールボックス内の特定のメッセージに対するリクエスト
***メールボックス内の特定のメッセージに対するリクエスト
216,7 215,6
 

        

        
 
|Methodプロパティ|リクエスト|解説|レスポンス|h
|Methodプロパティ|リクエスト|解説|レスポンス|h
 
|ImapWebRequestMethods.Fetch, "FETCH"&br;(デフォルト)|FETCHコマンドを送信してメッセージの本文を取得します。|該当するUIDのメッセージがない場合、WebExceptionStatus.SuccessのWebExceptionをスローします。|メッセージ本文はWebResponse.GetResponseStreamメソッドが返すStreamから読み込めます。 取得するメッセージのサイズはWebResponse.ContentLength、Content-TypeはWebResponse.ContentTypeプロパティに設定されます。|
|ImapWebRequestMethods.Fetch, "FETCH"&br;(デフォルト)|FETCHコマンドを送信してメッセージの本文を取得します。|該当するUIDのメッセージがない場合、WebExceptionStatus.SuccessのWebExceptionをスローします。|メッセージ本文はWebResponse.GetResponseStreamメソッドが返すStreamから読み込めます。 取得するメッセージのサイズはWebResponse.ContentLength、Content-TypeはWebResponse.ContentTypeプロパティに設定されます。|
+
|ImapWebRequestMethods.Copy, "COPY"|COPYコマンドを送信してメッセージを別のメールボックスにコピーします。|コピー先のメールボックスはImapWebRequest.DestinationUriプロパティで指定します。|サーバがCOPYUIDレスポンスコードを返した場合は、コピーしたメッセージのURLがWebResponse.ResponseUriに設定されます。 また、コピー先のメールボックスを自動的に作成した場合、作成したメールボックスはImapWebResponse.Mailboxesプロパティに設定されます。|
 
|ImapWebRequestMethods.Expunge, "EXPUNGE"|STOREコマンドを送信して\Deletedフラグを追加した後、EXPUNGEコマンドを送信してメッセージを削除します。|サーバが&urn2url(urn:ietf:rfc:4315,#2.1){UID EXPUNGE};に対応していない場合、URLで指定されたメッセージだけでなく''既に\Deletedフラグが設定されている他のメッセージも同時に削除されます''。|-|
|ImapWebRequestMethods.Expunge, "EXPUNGE"|STOREコマンドを送信して\Deletedフラグを追加した後、EXPUNGEコマンドを送信してメッセージを削除します。|サーバが&urn2url(urn:ietf:rfc:4315,#2.1){UID EXPUNGE};に対応していない場合、URLで指定されたメッセージだけでなく''既に\Deletedフラグが設定されている他のメッセージも同時に削除されます''。|-|
 
|ImapWebRequestMethods.Store, "STORE"|STOREコマンドを送信してメッセージにフラグを追加・削除・設定します。|追加・削除・設定するフラグはImapWebRequest.StoreDataItemプロパティで指定します。|-|
|ImapWebRequestMethods.Store, "STORE"|STOREコマンドを送信してメッセージにフラグを追加・削除・設定します。|追加・削除・設定するフラグはImapWebRequest.StoreDataItemプロパティで指定します。|-|
 
|Methodプロパティ|リクエスト|解説|レスポンス|f
|Methodプロパティ|リクエスト|解説|レスポンス|f
240,11 238,7
 
|ReadOnly|false|FETCH, SEARCH等|メールボックスを選択する際に、SELECTコマンドの代わりにEXAMINEコマンドを送信するかどうかを指定します。 メッセージに対する操作を行うコマンドを送信する場合に有効になります。 EXAMINEコマンドで選択したメールボックスのメッセージに対する操作の結果はサーバの実装によります。 ReadOnlyがtrueでもDELETEなどのコマンドには影響しません。|
|ReadOnly|false|FETCH, SEARCH等|メールボックスを選択する際に、SELECTコマンドの代わりにEXAMINEコマンドを送信するかどうかを指定します。 メッセージに対する操作を行うコマンドを送信する場合に有効になります。 EXAMINEコマンドで選択したメールボックスのメッセージに対する操作の結果はサーバの実装によります。 ReadOnlyがtrueでもDELETEなどのコマンドには影響しません。|
 
|AllowCreateMailbox|true|COPY|COPYコマンドを送信した際にサーバがレスポンスコードTRYCREATEを返した場合、自動的にメールボックスを作成するかどうかを指定します。 現在の実装では、APPENDコマンドでTRYCREATEが返された場合でもメールボックスは作成せず、常にエラーとなります。|
|AllowCreateMailbox|true|COPY|COPYコマンドを送信した際にサーバがレスポンスコードTRYCREATEを返した場合、自動的にメールボックスを作成するかどうかを指定します。 現在の実装では、APPENDコマンドでTRYCREATEが返された場合でもメールボックスは作成せず、常にエラーとなります。|
 
|DestinationUri|null|COPY, RENAME|COPYの場合はメッセージのコピー先メールボックス名、RENAMEの場合は変更後のメールボックス名を含むURLを指定します。 URLはコピー元・変更前(WebRequest.RequestUri)と同一サーバ、同一ユーザである必要があります。 それ以外の場合、ArgumentExceptionをスローします。|
|DestinationUri|null|COPY, RENAME|COPYの場合はメッセージのコピー先メールボックス名、RENAMEの場合は変更後のメールボックス名を含むURLを指定します。 URLはコピー元・変更前(WebRequest.RequestUri)と同一サーバ、同一ユーザである必要があります。 それ以外の場合、ArgumentExceptionをスローします。|
+
|Subscription|true|CREATE, DELETE, RENAME, COPY|メールボックスを作成・削除する際に、対象のメールボックスを自動的にSUBSCRIBE/UNSUBSCRIBEコマンドを送信して購読・購読解除するかどうかを指定します。|
 
|StoreDataItem|null|STORE|STOREコマンドでメッセージに追加・削除・設定するフラグを指定します。|
|StoreDataItem|null|STORE|STOREコマンドでメッセージに追加・削除・設定するフラグを指定します。|
+
|StatusDataItem|null|STATUS|STATUSコマンドで取得するメールボックスの情報を指定します。|
+
|SortCriteria|null|SORT|SORTコマンドで使用するソート方法を指定します。|
+
|ThreadingAlgorithm|null|THREAD|THREADコマンドで使用するスレッド形式のアルゴリズムを指定します。|
 
|FetchBlockSize|10240|FETCH|FETCHコマンドでメッセージ本文を取得する際に、1回のFETCHコマンドで取得するブロックのサイズをバイト単位で指定します。|
|FetchBlockSize|10240|FETCH|FETCHコマンドでメッセージ本文を取得する際に、1回のFETCHコマンドで取得するブロックのサイズをバイト単位で指定します。|
 

        

        
 
WebRequestクラスから継承されるプロパティのうち、以下のプロパティは使用することができます。
WebRequestクラスから継承されるプロパティのうち、以下のプロパティは使用することができます。
260,8 254,12
 
|プロパティ|デフォルト|対象となるコマンド|リクエスト内容と動作|h
|プロパティ|デフォルト|対象となるコマンド|リクエスト内容と動作|h
 
|UseDeflateIfAvailable|false|全て|サーバがサポートしている場合、DEFLATE圧縮アルゴリズムを使用した接続に変更します。 (この機能は現在動作しません。 trueにした場合、NotImplementedExceptionがスローされます)|
|UseDeflateIfAvailable|false|全て|サーバがサポートしている場合、DEFLATE圧縮アルゴリズムを使用した接続に変更します。 (この機能は現在動作しません。 trueにした場合、NotImplementedExceptionがスローされます)|
 
|AllowLoginRedirect|true|全て(認証時)|認証時にサーバがレスポンスコードREFERRALを返した場合、レスポンスコードで指定されたURLで再度ログインを試みるかどうかを指定します。(この機能は未テストです。 期待する動作となるかどうかは分かりません)
|AllowLoginRedirect|true|全て(認証時)|認証時にサーバがレスポンスコードREFERRALを返した場合、レスポンスコードで指定されたURLで再度ログインを試みるかどうかを指定します。(この機能は未テストです。 期待する動作となるかどうかは分かりません)
-
|SearchCriteriaEncoding|Encoding.UTF8|SEARCH等|検索クエリのエンコードに使用する文字コードを指定します。 サーバがサポートしていない文字コードを指定した場合はエラーとなります。 (この機能は現在動作しません。 将来のバージョンで検索クエリにASCII文字以外も含められるようにした時点で機能します。)|
-
|SortCriteria|null|SORT|SORTコマンドで使用するソート方法を指定します。|
-
|ThreadingAlgorithm|null|THREAD|THREADコマンドで使用するスレッド形式のアルゴリズムを指定します。|
 

        

        
 
***リクエストとIMAP URLに関するその他の留意事項
***リクエストとIMAP URLに関するその他の留意事項
-
-現時点では検索クエリに日本語等非ASCII文字を含めることはできません。 URLエンコードした文字列を検索クエリに含めた場合でも、エンコードした結果に非ASCII文字が含まれるような場合はリクエスト時にWebExceptionをスローします。
 
-UIDVALIDITYを含むIMAP URLも扱えますが、無視します。 現時点ではUIDVALIDITYが指定されていない場合と同様に扱います。
-UIDVALIDITYを含むIMAP URLも扱えますが、無視します。 現時点ではUIDVALIDITYが指定されていない場合と同様に扱います。
 

        

        
 
**サンプル
**サンプル
274,12 272,12
 
using Smdn.Net.Imap4.WebClients;
using Smdn.Net.Imap4.WebClients;
 
  :
  :
 

        

        
~
var request = WebRequest.Create("imap://user@localhost/INBOX?ALL") as ImapWebRequest;
var request = WebRequest.Create("imap://user@localhost/INBOX/?ALL") as ImapWebRequest;
 

        

        
 
request.Credentials = new NetworkCredential("user", "pass");
request.Credentials = new NetworkCredential("user", "pass");
 
request.Method = ImapWebRequestMethods.Copy;
request.Method = ImapWebRequestMethods.Copy;
 
request.AllowCreateMailbox = true;
request.AllowCreateMailbox = true;
~
request.DestinationUri = new Uri("imap://user@localhost/INBOX.backup");
request.DestinationUri = new Uri("imap://user@localhost/INBOX.backup/");
 

        

        
 
using {
using {
 
  :
  :
298,7 296,7
 
using Smdn.Net.Imap4.WebClients;
using Smdn.Net.Imap4.WebClients;
 
  :
  :
 

        

        
~
var request = WebRequest.Create("imap://user@localhost/INBOX.old") as ImapWebRequest;
var request = WebRequest.Create("imap://user@localhost/INBOX.old/") as ImapWebRequest;
 

        

        
 
request.Credentials = new NetworkCredential("user", "pass");
request.Credentials = new NetworkCredential("user", "pass");
 
request.Method = ImapWebRequestMethods.Delete;
request.Method = ImapWebRequestMethods.Delete;
321,7 319,7
 
using Smdn.Net.Imap4.WebClients;
using Smdn.Net.Imap4.WebClients;
 
  :
  :
 

        

        
~
var request = WebRequest.Create("imap://user@localhost/INBOX.new") as ImapWebRequest;
var request = WebRequest.Create("imap://user@localhost/INBOX.new/") as ImapWebRequest;
 

        

        
 
request.Credentials = new NetworkCredential("user", "pass");
request.Credentials = new NetworkCredential("user", "pass");
 
request.Method = ImapWebRequestMethods.Create;
request.Method = ImapWebRequestMethods.Create;
333,40 331,6
 
}
}
 
}}
}}
 

        

        
+
***メッセージの検索
+
ImapStyleUriBuilderを使って、複雑な検索クエリを含むリクエストを送信する例。
+

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

         
+
using Smdn.Net.Imap4;
+
using Smdn.Net.Imap4.WebClients;
+
  :
+

         
+
var builder = new ImapUriBuilder("imap://user@localhost/INBOX");
+

         
+
builder.SearchCriteria =
+
                       |;
+
builder.Charset = Encoding.GetEncoding(932);
+

         
+
var request = WebRequest.Create(builder.Uri) as ImapWebRequest;
+

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

         
+
using {
+
  :
+
  :
+
}
+
}}
+

         
+
この例で指定している検索クエリは、
+
+fromが'差出人'かつ送信日が2010年2月6日以前、もしくは
+
+未読で件名に'未承諾広告'を含まない
+

         
+
となる。
+

         
 
***メッセージへのフラグの設定
***メッセージへのフラグの設定
 
fromにspammer.example.comを含むメッセージをすべて既読にし、Thunderbirdの迷惑メールのマーク(Junk)を設定する例。 ImapStoreDataItem.ReplaceFlagsメソッドを使って新しく置き換える(設定する)フラグを作成し、StoreDataItemプロパティにしています。
fromにspammer.example.comを含むメッセージをすべて既読にし、Thunderbirdの迷惑メールのマーク(Junk)を設定する例。 ImapStoreDataItem.ReplaceFlagsメソッドを使って新しく置き換える(設定する)フラグを作成し、StoreDataItemプロパティにしています。
 

        

        
380,7 344,7
 
using Smdn.Net.Imap4.WebClients;
using Smdn.Net.Imap4.WebClients;
 
  :
  :
 

        

        
~
var request = WebRequest.Create("imap://user@localhost/INBOX?from spammer.example.com") as ImapWebRequest;
var request = WebRequest.Create("imap://user@localhost/INBOX/?from spammer.example.com") as ImapWebRequest;
 

        

        
 
request.Credentials = new NetworkCredential("user", "pass");
request.Credentials = new NetworkCredential("user", "pass");
 
request.Method = ImapWebRequestMethods.Store;
request.Method = ImapWebRequestMethods.Store;
411,9 375,9
 
  public static void Main()
  public static void Main()
 
  {
  {
 
    using {
    using {
~
      var cred = new NetworkCredential("user", "pass");
      session.Credentials = new NetworkCredential("user", "pass");
 

        

        
~
      if {
      if {
 
        Console.WriteLine("authentication failed");
        Console.WriteLine("authentication failed");
 
        return;
        return;
 
      }
      }
472,9 436,9
 
    };
    };
 

        

        
 
    using {
    using {
~
      var cred = new NetworkCredential("user", "pass");
      session.Credentials = new NetworkCredential("user", "pass");
 

        

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

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

current previous
9,9 9,7
 
--[[works/libs/Smdn.Security.Authentication.Sasl]]
--[[works/libs/Smdn.Security.Authentication.Sasl]]
 
--[[works/libs/Smdn.Formats.Mime]]
--[[works/libs/Smdn.Formats.Mime]]
 

        

        
~
*機能
*機能概要
+
すべての標準コマンドといくつかの拡張コマンドの送受信、SSL/TLS接続(IMAP over SSL, STARTTLS)、SASL認証メカニズムなどに対応しています。
+

         
 
使用可能なコマンド
使用可能なコマンド
 
:認証系コマンド|LOGIN, AUTHENTICATE, LOGOUT, STARTTLS
:認証系コマンド|LOGIN, AUTHENTICATE, LOGOUT, STARTTLS
 
::SASL認証方式|DIGEST-MD5, CRAM-MD5, NTLM, PLAIN, LOGIN, ANONYMOUS
::SASL認証方式|DIGEST-MD5, CRAM-MD5, NTLM, PLAIN, LOGIN, ANONYMOUS
62,12 60,9
 
#googleadunit
#googleadunit
 
0.20以降はMIT X11ライセンスでのリリースとなります。 0.20より前のバージョンについては特に使用条件を定めていません。
0.20以降はMIT X11ライセンスでのリリースとなります。 0.20より前のバージョンについては特に使用条件を定めていません。
 

        

        
+
デモ用アプリケーション[[works/tools/junk/TundereBird]]もあわせてご覧ください。
+

         
 
-開発版
-開発版
 
--[[anonsvn]]よりチェックアウトできます
--[[anonsvn]]よりチェックアウトできます
 
-0.2x
-0.2x
+
--${smdncms:distfilelink,Smdn.Net.Imap4.Client-0.24.tar.bz2}
 
--${smdncms:distfilelink,Smdn.Net.Imap4.Client-0.23.tar.bz2}
--${smdncms:distfilelink,Smdn.Net.Imap4.Client-0.23.tar.bz2}
 
--${smdncms:distfilelink,Smdn.Net.Imap4.Client-0.22.tar.bz2}
--${smdncms:distfilelink,Smdn.Net.Imap4.Client-0.22.tar.bz2}
 
--${smdncms:distfilelink,Smdn.Net.Imap4.Client-0.21.tar.bz2}
--${smdncms:distfilelink,Smdn.Net.Imap4.Client-0.21.tar.bz2}
82,45 77,6
 
--IDLEして5分程度経過すると、Mono.Security.Protocol.Tls.SslStreamBase.EndReadでMono.Security.Protocol.Tls.TlsExceptionがスローされる
--IDLEして5分程度経過すると、Mono.Security.Protocol.Tls.SslStreamBase.EndReadでMono.Security.Protocol.Tls.TlsExceptionがスローされる
 

        

        
 
*変更履歴
*変更履歴
+
**0.24
+
主にIMAP URL関連の修正と、WebClients名前空間のクラスでの非ASCII文字を含む検索とpartial fetchのサポート。
+

         
+
-機能追加
+
--ImapUriBuilderの実装を追加
+
--WebClients名前空間
+
---検索クエリに非ASCII文字および同期リテラル・非同期リテラルを含むURLでのSEARCH/SORT/THREADをリクエストできるようにした
+
---/;SECTION=および/;PARTIAL=を含むURLでのリクエストできるようにした
+
---サーバがCOPYUIDレスポンスコードを返す場合、ImapWebResponse.ResponseUriに返されたUIDを含むURLを設定するようにした
+
---ImapWebRequest.Subscriptionプロパティを追加
+
---ImapWebResponse.SupportedCharsetsプロパティを追加
+
-修正・改善
+
--IMAP URL関連
+
---ImapStyleUriParserの実装を整理、&urn2url(urn:ietf:rfc:5092){IMAP URL Scheme};に従った動作となるようにエスケープされた文字を含むURLの取扱いを修正
+
---クエリのデリミタのみを含むURL(例 imap://localhost/INBOX/?)が検索クエリを含んでいないと判断される不具合を修正
+
---ImapMailbox.Url, ImapMessage.Urlのメールボックス名がModified UTF7でエンコードされていたものを、UTF-8+URLエンコードでエンコードするように修正
+
---ImapMailbox.Url, ImapMessage.Urlのメールボックス名を'/'で終端しないようにした
+
---クエリ・UIDなどが含まれていてメールボックス名を含まないURL(例 imap://localhost/?...、imap://localhost/;uid=1)を不正なURLとして扱うようにした
+
---Modified-UTF7エンコードされたメールボックス名が含まれているURLからメールボックス名を取得する場合、デコードせずModified-UTF7エンコードされたままの値を取得するようにした
+
---URLのクエリに同期リテラルを含む場合、非同期リテラルに書き換えた上でSEARCHコマンドを開始するようにした
+
--コマンド送受信関連
+
---BADCHASETレスポンスコードに文字コードが含まれている場合、パースエラーとなる不具合を修正
+
---長さを指定せず開始オクテットのみの指定でpartial fetchできてしまう不具合を修正
+
---空のsequence-set, uid-setと結合した場合に、文字列中に不要な','が含まれる不具合を修正
+
---ImapSession.EndAppendが呼ばれる前にImapSession.BeginAppendを呼んでも例外とならない場合がある不具合を修正
+
---ImapSession.BeginAppendを呼び出した場合、処理が開始されるまではIAsyncResultを返さないようにした
+
---saved result($)を含むImapMatchedSequenceSetのToArrayを呼んだ場合、NotSupportedExceptionをスローするようにした
+
---接続時に不正なレスポンスを受信した場合、タイムアウトまで待ち合わせず、即座にImapConnectionExceptionをスローするようにした
+
--認証処理関連
+
---ImapSession.Credentialsプロパティを廃止し、ICredentialsByHostは認証系メソッドの引数で受け渡すように変更
+
---認証時に参照するNetworkCredentialのUserNameおよびPasswordプロパティがnullだった場合の動作を整理、例外をスローせず認証をキャンセルするようにした
+
--WebClients名前空間
+
---ImapWebRequest.SearchCriteriaEncodingプロパティを削除
+
---APPENDコマンドでのRequestStreamへの書き込み中に、書き込み遅延が起きていなくてもバッファーアンダーランが発生する不具合を修正
+
---サーバがLITERAL+に対応していても、APPENDコマンドでは常に同期リテラルを使用するようにした
+
---サーバがLITERAL+に対応していない場合で、URLのクエリ部分にリテラルを含む場合、ProtocolViolationExceptionをスローするようにした
+
---FETCHコマンドでのメッセージの属性とメッセージ本文の取得を単一のコマンドで行うようにした
+
---FETCHコマンドで取得するメッセージの属性を、ALLマクロ相当からFULLマクロ相当の値に変更
+

         
 
**0.23
**0.23
 
主に未サポートだった拡張の実装、メールボックス操作系コマンドの実装不備の修正。
主に未サポートだった拡張の実装、メールボックス操作系コマンドの実装不備の修正。
 

        

        
260,11 216,8
 
-.NET Framework 3.5
-.NET Framework 3.5
 
-Mono 2.7
-Mono 2.7
 

        

        
~
ただし、Windows上での動作確認は不十分です。 テストはしていますが、予期しないバグがあるかもしれません。
*制限事項
+

         
+
*制限事項・特記事項
 
-MIMEメッセージのデコード機能は含んでいません。 デコード機能が必要な場合は他のライブラリか、[[works/libs/Smdn.Formats.Mime]]を使ってください。
-MIMEメッセージのデコード機能は含んでいません。 デコード機能が必要な場合は他のライブラリか、[[works/libs/Smdn.Formats.Mime]]を使ってください。
+
-実装にあたり、セキュリティ上の考慮はしていますが、保証はできません。 SSL/TLS接続を使用するか、セキュリティが保証されたネットワーク内での使用を推奨します。
 

        

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

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

current previous
98,7 98,7
 
|CLOSE|&urn2url(urn:ietf:rfc:3501,#6.4.2,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};||
|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};|
|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(green){implemented};|body-extension fieldsはレスポンスに含まれていても無視します。|
|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};||
|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};|
|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|-|-|-|
|~Extensions|-|-|-|
145,6 145,7
 

        

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

        

        
 
**response codes
**response codes
 
サポートするレスポンスコードの一覧です。
サポートするレスポンスコードの一覧です。

works/libs/Smdn.Net.Pop3/doc/index.wiki.txt

current previous
1,6 1,6
 
${smdncms:title,ドキュメント・サンプル}
${smdncms:title,ドキュメント・サンプル}
 
${smdncms:keywords,}
${smdncms:keywords,}
~
[[works/libs/Smdn.Net.Pop3]]のドキュメントとサンプルです。 ここに記載されているものはversion 0.24時点のもので、記載不備などがあるかもしれません。 ご質問などありましたら[[掲示板>misc/forum/libs]]へどうぞ。
[[works/libs/Smdn.Net.Pop3]]のドキュメントとサンプルです。 ご質問などありましたら[[掲示板>misc/forum/libs]]へどうぞ。
 

        

        
 
*使用例
*使用例
 
個々のサンプルの詳細については、後述するSmdn.Net.Pop3.WebClients名前空間の説明を参照してください。
個々のサンプルの詳細については、後述するSmdn.Net.Pop3.WebClients名前空間の説明を参照してください。
177,7 177,6
 
|KeepAlive|true|全て|リクエストが終了した後もセッションを維持するかどうかを指定します。 trueの場合はリクエストが終了してもセッションは維持し、falseの場合はリクエストの度にセッションを開きリクエスト終了と同時にセッションを閉じます|
|KeepAlive|true|全て|リクエストが終了した後もセッションを維持するかどうかを指定します。 trueの場合はリクエストが終了してもセッションは維持し、falseの場合はリクエストの度にセッションを開きリクエスト終了と同時にセッションを閉じます|
 
|UseTlsIfAvailable|true|全て(認証時)|サーバがサポートしている場合、認証を行う前にTLSを使用した接続にアップグレードします。|
|UseTlsIfAvailable|true|全て(認証時)|サーバがサポートしている場合、認証を行う前にTLSを使用した接続にアップグレードします。|
 
|UsingSaslMechanisms|{"DIGEST-MD5", "CRAM-MD5", "NTLM"}|全て(認証時)|認証メカニズムが指定されていない場合に、試行する認証メカニズムとその順番を配列で指定します。 サーバ・クライアントの両方がサポートするメカニズム以外が指定されている場合は無視します。|
|UsingSaslMechanisms|{"DIGEST-MD5", "CRAM-MD5", "NTLM"}|全て(認証時)|認証メカニズムが指定されていない場合に、試行する認証メカニズムとその順番を配列で指定します。 サーバ・クライアントの両方がサポートするメカニズム以外が指定されている場合は無視します。|
+
|DeleteAfterRetrieve|false|RETR|RETRコマンドでのメッセージの受信が成功した場合、同じメッセージに対して自動的にDELEコマンドを発行します。|
 
|ExpectedErrorResponseCodes|null|全て|サーバから返されることが予期されるエラーレスポンスコードの配列を指定します。 サーバからこれらのレスポンスコードが返された場合は、エラーレスポンスでもWebExceptionがスローされません。|
|ExpectedErrorResponseCodes|null|全て|サーバから返されることが予期されるエラーレスポンスコードの配列を指定します。 サーバからこれらのレスポンスコードが返された場合は、エラーレスポンスでもWebExceptionがスローされません。|
 

        

        
 
WebRequestクラスから継承されるプロパティのうち、以下のプロパティは使用することができます。
WebRequestクラスから継承されるプロパティのうち、以下のプロパティは使用することができます。

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

current previous
10,9 10,7
 
--[[works/libs/Smdn.Formats.Mime]]
--[[works/libs/Smdn.Formats.Mime]]
 

        

        
 
*機能
*機能
~
すべての標準コマンドといくつかの拡張コマンドの送受信、SSL/TLS接続(POP over SSL, STLS)、SASL認証メカニズムなどに対応しています。
使用可能なコマンド
+

         
+
使用可能なコマンド。
 
:認証系コマンド|USER, PASS, QUIT, APOP, AUTH(&urn2url(urn:ietf:rfc:5034,short);)
:認証系コマンド|USER, PASS, QUIT, APOP, AUTH(&urn2url(urn:ietf:rfc:5034,short);)
 
::SASL認証方式|DIGEST-MD5, CRAM-MD5, NTLM, PLAIN, LOGIN, ANONYMOUS
::SASL認証方式|DIGEST-MD5, CRAM-MD5, NTLM, PLAIN, LOGIN, ANONYMOUS
 
SASLの実装は[[works/libs/Smdn.Security.Authentication.Sasl]]に含まれています
SASLの実装は[[works/libs/Smdn.Security.Authentication.Sasl]]に含まれています
53,12 51,9
 
#googleadunit
#googleadunit
 
0.20以降はMIT X11ライセンスでのリリースとなります。 0.20より前のバージョンについては特に使用条件を定めていません。
0.20以降はMIT X11ライセンスでのリリースとなります。 0.20より前のバージョンについては特に使用条件を定めていません。
 

        

        
+
デモ用アプリケーション[[works/tools/junk/TundereBird]]もあわせてご覧ください。
+

         
 
-開発版
-開発版
 
--[[anonsvn]]よりチェックアウトできます
--[[anonsvn]]よりチェックアウトできます
 
-0.2x
-0.2x
+
--${smdncms:distfilelink,Smdn.Net.Pop3.Client-0.24.tar.bz2}
 
--${smdncms:distfilelink,Smdn.Net.Pop3.Client-0.23.tar.bz2}
--${smdncms:distfilelink,Smdn.Net.Pop3.Client-0.23.tar.bz2}
 
--${smdncms:distfilelink,Smdn.Net.Pop3.Client-0.22.tar.bz2}
--${smdncms:distfilelink,Smdn.Net.Pop3.Client-0.22.tar.bz2}
 
-0.1x
-0.1x
96,17 91,6
 
--[[POP3 Extension Mechanism:http://www.iana.org/assignments/pop3-extension-mechanism]]
--[[POP3 Extension Mechanism:http://www.iana.org/assignments/pop3-extension-mechanism]]
 

        

        
 
*変更履歴
*変更履歴
+
**0.24
+
-機能追加
+
--拡張コマンドなど任意のコマンドを送信するためのメソッドを追加
+
--WebClients名前空間
+
---PopWebRequest.DeleteAfterRetrieveプロパティを追加
+
-修正・改善
+
--PopSession.Credentialsプロパティを廃止し、ICredentialsByHostは認証系メソッドの引数で受け渡すように変更
+
--認証時に参照するNetworkCredentialのUserNameおよびPasswordプロパティがnullだった場合の動作を整理、例外をスローせず認証をキャンセルするようにした
+
--PopStyleUriParserの実装を整理、&urn2url(urn:ietf:rfc:2384){POP URL Scheme};に従った動作となるようにエスケープされた文字を含むURLの取扱いを修正
+
--接続時に不正なレスポンスを受信した場合、タイムアウトまで待ち合わせず、即座にPopConnectionExceptionをスローするように修正
+

         
 
**0.23
**0.23
 
-機能追加
-機能追加
 
--&urn2url(urn:ietf:rfc:2449,#8){Extended POP3 Response Codes};に対応
--&urn2url(urn:ietf:rfc:2449,#8){Extended POP3 Response Codes};に対応
147,11 131,8
 
-.NET Framework 3.5
-.NET Framework 3.5
 
-Mono 2.7
-Mono 2.7
 

        

        
~
ただし、Windows上での動作確認は不十分です。 テストはしていますが、予期しないバグがあるかもしれません。
*制限事項
+

         
+
*制限事項・特記事項
 
-MIMEメッセージのデコード機能は含んでいません。 デコード機能が必要な場合は他のライブラリか、[[works/libs/Smdn.Formats.Mime]]を使ってください。
-MIMEメッセージのデコード機能は含んでいません。 デコード機能が必要な場合は他のライブラリか、[[works/libs/Smdn.Formats.Mime]]を使ってください。
+
-実装にあたり、セキュリティ上の考慮はしていますが、保証はできません。 SSL/TLS接続を使用するか、セキュリティが保証されたネットワーク内での使用を推奨します。
 

        

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

works/libs/Smdn.Security.Authentication.Sasl/index.wiki.txt

current previous
23,7 23,7
 
|&urn2url(urn:ietf:rfc:4422,anchor-text);|EXTERNAL|&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:4505,anchor-text);|ANONYMOUS|&color(green){implemented};||
 
|&urn2url(urn:ietf:rfc:4752,anchor-text);|GSSAPI|&color(gray){not 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};|サーバ側の実装によっては正しく動作しない可能性があります。|
|[[[MS-NLMP:http://msdn.microsoft.com/en-us/library/cc236621(PROT.13).aspx]]] NT LAN Manager{partially implemented};|Mono.Security.dllを使用します。 Mono.Security.dllを動的にロードできない環境では使用できません。 また、サーバ側の実装によっては正しく動作しない可能性があります。|
 
|&urn2url(urn:ietf:id:ietf-sasl-scram-10,anchor-text);|SCRAM-*|&color(gray){not implemented};||
|&urn2url(urn:ietf:id:ietf-sasl-scram-10,anchor-text);|SCRAM-*|&color(gray){not implemented};||
 
|&urn2url(urn:ietf:id:ietf-sasl-scram-10,anchor-text);|SCRAM-SHA-1|&color(gray){not implemented};||
|&urn2url(urn:ietf:id:ietf-sasl-scram-10,anchor-text);|SCRAM-SHA-1|&color(gray){not implemented};||
 
|&urn2url(urn:ietf:id:ietf-sasl-scram-10,anchor-text);|SCRAM-SHA-1-PLUS|&color(gray){not implemented};||
|&urn2url(urn:ietf:id:ietf-sasl-scram-10,anchor-text);|SCRAM-SHA-1-PLUS|&color(gray){not implemented};||
38,7 38,6
 
-開発版
-開発版
 
--[[anonsvn]]よりチェックアウトできます
--[[anonsvn]]よりチェックアウトできます
 
-0.2x
-0.2x
+
--${smdncms:distfilelink,Smdn.Security.Authentication.Sasl-0.24.tar.bz2}
 
--${smdncms:distfilelink,Smdn.Security.Authentication.Sasl-0.23.tar.bz2}
--${smdncms:distfilelink,Smdn.Security.Authentication.Sasl-0.23.tar.bz2}
 
--${smdncms:distfilelink,Smdn.Security.Authentication.Sasl-0.22.tar.bz2}
--${smdncms:distfilelink,Smdn.Security.Authentication.Sasl-0.22.tar.bz2}
 

        

        
46,10 45,6
 
不具合の報告、ライブラリに対する要望や提案、使い方の質問などは[[掲示板>misc/forum/libs]]へどうぞ。
不具合の報告、ライブラリに対する要望や提案、使い方の質問などは[[掲示板>misc/forum/libs]]へどうぞ。
 

        

        
 
*変更履歴
*変更履歴
+
**0.24
+
-Mono.Security.dllがない環境でも動作するように、Mono.Security.Protocol.Ntlmの実装をインポート
+
-認証時に参照するNetworkCredentialのUserNameおよびPasswordプロパティがnullだった場合の動作を整理
+

         
 
**0.23
**0.23
 
-initial client responseを取得するメソッドを追加
-initial client responseを取得するメソッドを追加
 

        

        
59,10 54,6
 
**0.21
**0.21
 
-[[works/libs/Smdn.Net.Imap4]]より分離
-[[works/libs/Smdn.Net.Imap4]]より分離
 

        

        
+
*制限事項・特記事項
+
-本ライブラリには、NTLM認証でのチャレンジレスポンスの実装として、Mono.Security.Protocol.Ntlmのクラスを含んでいます。
+
-実装にあたり、セキュリティ上の考慮はしていますが、保証はできません。
+

         
 
*関連するページ
*関連するページ
 
-[[programming/mono/Mono.Security.Protocol.Ntlm]]
-[[programming/mono/Mono.Security.Protocol.Ntlm]]
 
-[[programming/tips/cram_md5]]
-[[programming/tips/cram_md5]]