Smdn.Net.Pop3.Clientのリリースと変更履歴の一覧です。

§1 リリース一覧

以下のバージョンはすべてMIT X11ライセンスでのリリースとなります。

バージョン パッケージ
1.26 (2014-08-15) ソースコード
Smdn.Net.Pop3.Client-1.26.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5
1.25 (2014-08-01) ソースコード
Smdn.Net.Pop3.Client-1.25.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5
1.24 (2014-06-21) ソースコード
Smdn.Net.Pop3.Client-1.24.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5
1.23 (2014-06-21) ソースコード
Smdn.Net.Pop3.Client-1.23.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5
1.22 (2014-06-02) ソースコード
Smdn.Net.Pop3.Client-1.22.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5
1.21 (2014-05-24) ソースコード
Smdn.Net.Pop3.Client-1.21.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5
1.20 (2014-04-23) ソースコード
Smdn.Net.Pop3.Client-1.20.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5
1.16 (2014-03-16) ソースコード
Smdn.Net.Pop3.Client-1.16.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
1.15 (2013-07-15) ソースコード
Smdn.Net.Pop3.Client-1.15.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
1.14 (2013-02-07) ソースコード
Smdn.Net.Pop3.Client-1.14.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
1.13 (2012-10-08) ソースコード
Smdn.Net.Pop3.Client-1.13.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
1.12 (2012-10-01) ソースコード
Smdn.Net.Pop3.Client-1.12.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
1.11 (2012-09-24) ソースコード
Smdn.Net.Pop3.Client-1.11.tar.bz2
DLL
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4.5

.NET 4

.NET 3.5

.NET 2.x
1.10 (2011-02-18) ソースコード
Smdn.Net.Pop3.Client-1.10.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.04 (2011-02-03) ソースコード
Smdn.Net.Pop3.Client-1.04.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.03 (2011-01-22) ソースコード
Smdn.Net.Pop3.Client-1.03.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.02 (2011-01-08) ソースコード
Smdn.Net.Pop3.Client-1.02.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.01 (2010-12-11) ソースコード
Smdn.Net.Pop3.Client-1.01.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.00 (2010-05-15) ソースコード
Smdn.Net.Pop3.Client-1.00.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
0.92 (2010-04-25) ソースコード
Smdn.Net.Pop3.Client-0.92.tar.bz2
0.91 (2010-04-18) ソースコード
Smdn.Net.Pop3.Client-0.91.tar.bz2
0.90 (2010-04-04) ソースコード
Smdn.Net.Pop3.Client-0.90.tar.bz2
0.29 (2010-03-22) ソースコード
Smdn.Net.Pop3.Client-0.29.tar.bz2
0.28 (2010-03-15) ソースコード
Smdn.Net.Pop3.Client-0.28.tar.bz2
0.27 (2010-02-28) ソースコード
Smdn.Net.Pop3.Client-0.27.tar.bz2
0.26 (2010-02-22) ソースコード
Smdn.Net.Pop3.Client-0.26.tar.bz2
0.25 (2010-02-15) ソースコード
Smdn.Net.Pop3.Client-0.25.tar.bz2
0.24 (2010-02-06) ソースコード
Smdn.Net.Pop3.Client-0.24.tar.bz2
0.23 (2010-01-30) ソースコード
Smdn.Net.Pop3.Client-0.23.tar.bz2
0.22 (2010-01-23) ソースコード
Smdn.Net.Pop3.Client-0.22.tar.bz2
バージョン パッケージ

以下0.22より前のバージョンについては特に使用条件を定めていません。

バージョン パッケージ
0.13 (2008-04-27) TundereBirdに含まれているものを使ってください
0.12 (2008-04-07) TundereBirdに含まれているものを使ってください
0.11 (2008-03-10) TundereBirdに含まれているものを使ってください
0.10 (2008-03-06) TundereBirdに含まれているものを使ってください
バージョン パッケージ

§1.1 単一アセンブリ版

試用や配布がしやすいようにすべてのファイルを一つのアセンブリにまとめてビルドしたものです。 Smdn.Net.Imap4.ClientSmdn.Formats.Mimeと組み合わせて使用する場合は、型名が衝突するため通常版を使用してください。 詳しくはドキュメントのアセンブリ構成に関する解説を参照してください。

§1.2 ビルド設定等

コンパイラにMono mcsを使用、オプションに/debug- /optimize+ /define:TRACEを指定してビルドしています。

§1.3 Smdn.Net.Pop3.WebClients

1.04までのバージョンでは、Smdn.Net.Pop3.ClientのパッケージにSmdn.Net.Pop3.WebClientsのソースコードを同梱しています。 すべてMIT X11ライセンスでのリリースとなります。

1.10 (2011-02-18) ソースコード
Smdn.Net.Pop3.WebClients-1.10.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.04 (2011-02-03) ソースコード
Smdn.Net.Pop3.Client-1.04.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.03 (2011-01-22) ソースコード
Smdn.Net.Pop3.Client-1.03.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.02 (2011-01-08) ソースコード
Smdn.Net.Pop3.Client-1.02.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.01 (2010-12-11) ソースコード
Smdn.Net.Pop3.Client-1.01.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
1.00 (2010-05-15) ソースコード
Smdn.Net.Pop3.Client-1.00.tar.bz2
DLL
.NET 4

.NET 3.5

.NET 2.x
DLL
(単一アセンブリ版)
.NET 4

.NET 3.5

.NET 2.x
0.92 (2010-04-25) ソースコード
Smdn.Net.Pop3.Client-0.92.tar.bz2
0.91 (2010-04-18) ソースコード
Smdn.Net.Pop3.Client-0.91.tar.bz2
0.90 (2010-04-04) ソースコード
Smdn.Net.Pop3.Client-0.90.tar.bz2
0.29 (2010-03-22) ソースコード
Smdn.Net.Pop3.Client-0.29.tar.bz2
0.28 (2010-03-15) ソースコード
Smdn.Net.Pop3.Client-0.28.tar.bz2
0.27 (2010-02-28) ソースコード
Smdn.Net.Pop3.Client-0.27.tar.bz2
0.26 (2010-02-22) ソースコード
Smdn.Net.Pop3.Client-0.26.tar.bz2
0.25 (2010-02-15) ソースコード
Smdn.Net.Pop3.Client-0.25.tar.bz2
0.24 (2010-02-06) ソースコード
Smdn.Net.Pop3.Client-0.24.tar.bz2
0.23 (2010-01-30) ソースコード
Smdn.Net.Pop3.Client-0.23.tar.bz2
0.22 (2010-01-23) ソースコード
Smdn.Net.Pop3.Client-0.22.tar.bz2

§2 変更履歴

§2.1 1.26 (2014-08-15)

  • 機能追加
    • PopClient
      • PopClient.Connect()にCancellationTokenを指定できるバージョンを追加
  • 修正・改善
    • SASL認証の進行中にCancellationTokenによる中断要求があった場合は認証処理を中断するようにした

§2.2 1.25 (2014-08-01)

  • 機能追加
    • PopClient
      • PopClient.Download*Async()を追加
  • 修正・改善
    • 以前のバージョンでobsoleteにしたメンバーを削除
    • PopClient
      • PopMessageInfo.SaveAsyncとPopMessageInfo.WriteToAsync(Stream)について、一時バッファを介さず与えられたStreamに直接書き込みを行うよう改善

§2.3 1.24 (2014-06-21)

  • 修正・改善
    • PopClient
      • PopMessageInfoインスタンスの管理、接続処理などの内部実装を一部簡略化

§2.4 1.23 (2014-06-21)

  • 機能追加
    • PopClient
      • PopClient.UpdateStatus(), UpdateStatusAsync()を追加、PopClient.MessageCountおよびTotalSizeプロパティを参照する前にメールボックスの情報を取得・更新できるようにした
      • PopMessageInfo.GetUniqueIdAsync()を追加
  • 修正・改善
    • アセンブリの製品名(AssemblyProductAttribute)およびバージョン情報(AssemblyInformationalVersionAttribute)にバージョン番号と対象フレームワークを含むパッケージ名の情報を埋め込むようにした

§2.5 1.22 (2014-06-02)

  • 機能追加
    • PopClient
      • PopClient.IsBusyプロパティを追加
      • (.NET 4.0以降のみ) PopClient.ConnectAsync()にCancellationTokenを指定できるバージョンを追加
      • (.NET 4.0以降のみ) PopClientに以下の非同期メソッドを追加、ただしCancellationTokenによる中断は未実装
        • GetMessagesAsync(), GetMessageAsync(), GetFirstMessageAsync(), GetLastMessageAsync()
        • CancelDeleteAsync()
        • KeepAliveAsync()
      • (.NET 4.0以降のみ) PopMessageInfoに以下の非同期メソッドを追加、ただしCancellationTokenによる中断は未実装
        • MarkAsDeletedAsync()
  • 修正・改善
    • TraceSourceに出力する都度Flushするように修正
    • 接続を拒否されて例外をスローする場合などにおいて接続が即座に切断されない不具合を修正
    • PopClient
      • PopClient.GetMessages()の戻り値について、遅延実行を行うIEnumerable<PopMessageInfo>を返す動作を変更し、即値のIEnumerable<PopMessageInfo>を返すようにした
      • PopClient.GetMessage()について、PopClient.MessageCountより大きいメッセージ番号を指定した場合にスローする例外をArgumentOutOfRangeExceptionからPopMessageNotFoundExceptionに変更
      • PopClient.GetFirst/LastMessage()について、メールボックスにメッセージが無い場合にスローする例外をArgumentOutOfRangeExceptionからPopMessageNotFoundExceptionに変更
      • その他非同期操作関連の内部実装を改善

§2.6 1.21 (2014-05-24)

  • 機能追加
    • PopClient
      • (.NET 4.0以上のみ) PopMessageInfoクラスにOpenReadAsync(), SaveAsync(), ReadAsAsync()など非同期バージョンのメッセージ取得メソッドを追加 (ドキュメント・サンプル §.非同期操作)
      • PopClient.Profile.AllowStandardLoginおよびAllowApopLoginプロパティを追加し、APOPおよびUSER/PASSによるログインを試行するかどうかを指定できるようにした
  • 修正・改善
    • POP URLで";AUTH=+APOP"を指定してもAPOP認証が行われず、常にエラーとなる不具合を修正
    • 適切な認証方式が見つからない場合にスローする例外をPopAuthenticationExceptionからPopNoAppropriateAuthMechanismExceptionに変更
    • PopClient
      • PopMessageInfo.Save(), WriteTo(Stream)メソッドについて、バッファを使用せず指定されたストリームに直接書き込みを行うように動作を変更
      • PopMessageInfo.ReadAs(), PopClient.Download*MessageAs()メソッドなどの型パラメータの名称をTOutputからTResultに変更

§2.7 1.20 (2014-04-23)

  • 修正・改善
    • .NET Framework 2.0のサポートを廃止
    • Smdn.Net.Pop3.dllをSmdn.Net.Pop3.Client.dllに統合して廃止
    • PopSessionState, PopScanListing, PopUniqueIdListing, PopDropListingをSmdn.Net.Pop3.Protocol名前空間に移動
    • PopConnectionBase, PopReceiver, PopSenderを統合して廃止
    • PopClient, PopClientProfile等のUserNameに関して、IMAP-URL相当の動作に変更して:などの記号を含められるようにした
    • PopClient.BeginConnectの実装を簡略化

§2.8 1.16 (2014-03-16)

  • 修正・改善
    • 以前のバージョンでObsoleteにしたメンバを削除

§2.9 1.15 (2013-07-15)

  • 機能追加
  • 修正・改善
    • ファイルへの上書きを行う場合に以前の内容が残ったままとなる可能性があったのを修正
    • キャッシュされた長さ0の配列を使用するように修正
    • List<>およびDictionary<,>が確保する初期サイズが必要最低限となるように修正
    • その他内部実装のパフォーマンス改善
    • PopClient
      • Smdn.Net.Pop3.Protocol.Client.ImapConnectionクラスのプロパティClientCertificates, ServerCertificateValidationCallback, ClientCertificateSelectionCallbackをSmdn.Net.Pop3.Client.ImapSslConnectionに移動
      • PopClient.GetMessages()等について、LISTとUIDLが異なる数のレスポンスを返してきた場合でも問題なく動作するように修正

§2.10 1.14 (2013-02-07)

  • 修正・改善
    • PopClient, PopClientProfile等のUserNameに'@'を含むユーザー名を指定できない不具合を修正

§2.11 1.13 (2012-10-08)

  • 修正・改善
    • PopClient.DownloadAllMessagesToDirectory()メソッドについて、指定されたディレクトリが存在しない場合は、ディレクトリを作成してからダウンロードするように変更
    • PopClient.Download*MessagesTo*()メソッドについて、ダウンロードしたファイルを表すFileInfoを返すようにした
    • Mono 2.6関連のワークアラウンドを削除
    • 上位ライブラリの不具合修正

§2.12 1.12 (2012-10-01)

  • 修正・改善
    • 上位ライブラリのインターフェイス変更にあわせて実装を修正

§2.13 1.11 (2012-09-24)

  • 機能追加
    • PopClientクラスにインスタンスを生成せずにPOP操作を行うための静的メソッドGetMessageCount(), Download*As*(), Download*ToFile()等を追加
    • PopClientクラスにDownloadAllMessagesAs*(), DownloadAllMessagesToDirectory(), DownloadAllMessagesToFiles()を追加
    • PopClient.ConnectAsync()を追加
    • .NET 4.5用のcsprojファイルを追加

§2.14 1.10 (2011-02-18)

主にUnique-IDまわりの実装の改善と細かい修正等。

  • 機能追加
    • PopClient
      • PopMessageInfo.GetUniqueId(), TryGetUniqueId()を追加
  • 修正・改善
    • コマンドの非同期実行開始時にヌル参照が発生する可能性があったのを修正
    • Mono 2.6.xでコマンドの非同期実行が不完全に停止する場合がある不具合に対する暫定対処を追加
    • ソケットエラーによりPopConnectionExceptionをスローする場合、例外メッセージに原因となったSocketErrorを含めるように修正
    • PopClient
      • PopMessageInfo.UniqueIdプロパティでIDの取得ができなかった場合、例外をスローせずnullを返すように変更
    • WebClients

§2.15 1.04 (2011-02-03)

主に細かい修正等。

  • 修正・改善
    • PopClient
      • PopClient.SendTimeout, PopClient.ReceiveTimeoutにTimeout.Infinite(-1)を設定した場合、0ではなく-1を返すように修正

§2.16 1.03 (2011-01-22)

主にバグ修正。

  • 機能追加
    • PopIncapableException.RequiredCapabilityおよびPopErrorResponseException.Resultをシリアライズするようにした
    • Smdn.Net.Pop3.Protocol名前空間のいくつかのクラスをシリアライズできるようにした
  • 修正・改善
    • status indicatorの直後にSPが1文字だけ続くレスポンスを受信した場合にinternal errorとなる不具合を修正 (バグ報告ありがとうございました)

§2.17 1.02 (2011-01-08)

主に機能追加と細かい修正等。

  • 機能追加
    • PopClient
      • PopClientクラスにDownloadMessage(AsText|AsByteArray|AsStream|ToFile)等のメソッドを追加
      • PopClientProfileにISerializableを実装
  • 修正・改善
    • PopCapabilityList等のクラスについて、ISetインターフェイス(.NET 2.0, 3.5では同等のインターフェイス)を実装し、クラス名をPopCapabilitySet等に変更
    • 接続時のタイムアウトが有効になっていなかったのを修正
    • シンボルTRACEを無効にするとビルドエラーとなる箇所があったのを修正
    • その他内部実装の細かい修正と若干のパフォーマンス改善

§2.18 1.01 (2010-12-11)

主にバグ修正。

  • 機能追加
    • PopClient
      • PopMessageInfo.ReadAs(Func)を追加 (Func<Stream, T, TResult>からFunc<Stream, T1, T2, T3, T4, TResult>までの4つ)
  • 修正・改善
    • ライブラリがスローするArgumentExceptionなどいくつかの例外メッセージをよりわかりやすい表記に統一
    • その他上位ライブラリのバグ等細かい修正
    • PopClient
      • PopMessageInfo.OpenRead等が返すStreamに対してシークして上書きを行おうとするとLength, Positionが正しくない値を返す場合がある不具合を修正
      • PopMessageInfo.OpenRead等が返すStreamを閉じた場合、CanRead, CanWrite, CanSeek, CanTimeoutはObjectDisposedExceptionをスローせず常にfalseを返すように修正 (Streamの仕様に合わせた修正)

§2.19 1.00 (2010-05-15)

主に匿名・平文での認証に関する機能の強化、不具合と実装の細かい修正等。

  • 機能追加
    • TraceSourceへのプロトコルログの出力時に、フォーマット済みのstringではなく構造化された型(Smdn.Net.MessageAccessProtocols.Diagnostics)を使用するように修正
    • PopConnection.TraceSourceプロパティを公開
    • PopClient
      • セッションがSSL/TLSで保護されているかどうかを取得するPopClient.IsSecureSessionプロパティを追加
      • SSL/TLSで保護されていない接続で認証方式を自動的に選択する場合、平文およびAPOPによる認証を許可するかどうかを設定するPopClientProfile.AllowInsecureLoginプロパティを追加 (デフォルトはfalse)
      • PopAuthenticationExceptionを追加、認証に失敗した場合および適切な認証方式が見つからない場合にスローするようにした
    • WebClients
      • SSL/TLSで保護されていない接続で認証方式を自動的に選択する場合、平文およびAPOPによる認証を許可するかどうかを設定するPopWebRequest.AllowInsecureLoginプロパティを追加 (デフォルトはfalse)
  • 修正・改善
    • 接続時のエラー原因をより把握しやすいように例外処理を修正、InnerExceptionを設定するようにした
    • URLのuserinfo部分にエスケープされていない':'が含まれている場合、':'以前の部分のみをユーザ名・認証方式として扱うように修正
    • '@'などURIの予約済み文字が含まれているユーザ名で認証を行おうとすると例外となる不具合を修正
    • PopUriBuilder.Portに0を指定した場合、ToString()が返すURLにポート番号が含まれない不具合を修正
    • PopEnumStringからstringへの明示的な型変換で、nullからの変換でもArgumentNullExceptionをスローしないように修正
    • SocketExceptionがキャッチされず一般的な例外としてスローしてしまう場合があったのを修正
    • PopClient
      • 既に接続済み、未接続、切断済みの状況で操作をしようとした場合にスローする例外をPopProtocolViolationExceptionからInvalidOperationExceptionに変更
      • PopClientProfile.UsingSaslMechanismsに"ANONYMOUS"が含まれていてもANONYMOUS認証は試行せずに無視するように修正
      • PopClientProfile.AnonymousCredentialを廃止、常にPopClientProfile.UserNameの値(指定されていない場合は'anonymous@')を使うように変更
      • PopClientProfile.UsingSaslMechanismsにnullを設定した状態でClone()を呼ぶとNullReferenceExceptionがスローされる不具合を修正
      • PopClient.BeginConnect()/EndConnect()
        • BeginConnect()が返す値をSystem.Runtime.Remoting.Messaging.AsyncResultからImapClient.ConnectAsyncResultに変更
        • BeginConnect()による接続が完了していても、EndConnect()を呼び出すまではIsConnectedをtrueにしないように修正
        • EndConnect()を呼び出す前にLogout(), Disconnect()を呼び出した場合、InvalidOperationExceptionをスローするように修正
        • EndConnect()を呼び出す前にPopClient.IDisposable.Dispose()を呼び出した場合、セッションが確立してもバックグラウンドで破棄し、EndConnect()が呼ばれてもIsConnectedをfalseのままとするように修正
        • 既に接続済みの場合、BeginConnect()を呼び出した時点でInvalidOperationExceptionをスローするように修正
    • WebClients
      • PopWebRequest.UsingSaslMechanismsに"ANONYMOUS"が含まれていてもANONYMOUS認証は試行せずに無視するように修正
      • PopWebRequestDefaults.AnonymousTokenを廃止、常にリクエストURIのユーザ名(指定されていない場合は'anonymous@')を使うように変更

§2.20 0.92 (2010-04-25)

.NET Frameworkの各バージョン向けビルドのサポート、不具合と実装の細かい修正等。

  • 機能追加
    • .NET Framework 2.0, 3.5, 4の各バージョン用のプロジェクトファイルを追加
    • PopUriBuilderにICloneableを実装
    • PopClient
      • PopClientProfileにICloneableを実装
      • PopClient.BeginConnect()/EndConnect()を追加
      • PopClient.GetFirstMessage(), GetLastMessage()を追加
      • PopMessageInfo.WriteTo(BinaryWriter)を追加
      • メッセージの削除・削除キャンセル後にPopClient.MessageCountおよびPopClient.TotalSizeプロパティの値を更新するようにした
      • 必要になるまでPopClient.MessageCountおよびPopClient.TotalSizeプロパティの値を取得しないようにした
  • 修正・改善
    • cscでビルドできない不具合を修正 (ご指摘ありがとうございました)
    • PopTransactionResultをSmdn.Net.Pop3.Protocol.Client.PopCommandResultに移動・改名
    • internal classをsealedにした
    • コマンド送受信関連の内部処理を簡略化
    • PopClient
      • PopClient.Disconnect()もしくはLogout()でセッションを切断した後、PopMessageInfoの各プロパティ・メソッドを参照しようとした場合、PopProtocolViolationExceptionをスローするようにした
      • 接続されていない状態でPopClient.GetMessage()を呼ぶとPopProtocolViolationExceptionではなくArgumentOutOfRangeExceptionがスローされる不具合を修正
      • 既に接続されている状態でPopClient.Connect()を呼ぶと新たにセッションが作成されてしまう不具合を修正、接続中の場合はPopProtocolViolationExceptionをスローするようにした

§2.21 0.91 (2010-04-18)

主に若干のパフォーマンス改善、実装の細かい修正等。

  • 機能追加
    • PopClient
      • PopMessageInfo.WriteTo(Stream)を追加
      • コンストラクタでもSSL/TLSを用いた接続を使用するかどうか、およびタイムアウト時間を指定できるようにした
  • 修正・改善
    • StringComparerの指定があいまいだった部分で明示的に指定するようにした
    • 上位ライブラリのインターフェイス変更にあわせて実装を修正
    • 例外を再スローしている箇所でスタックトレースを破棄しないように修正
    • 例外クラスのインターフェイスをカスタム例外のガイドラインに適合するように改善 (一部未完)
    • いくつかの冗長な内部処理をデバッグ時のみ有効になるように修正
    • .NET Framework 2.0 SP2以前などの環境でMissingMethodExceptionがスローされないようにメソッド呼び出しを修正
    • PopClient
      • コンストラクタのauthTypeに指定した値が無視されていたのを修正
      • PopMessageInfo.Save()がArgumentExceptionをスローする場合、空のファイルが作成されないようにした
      • 接続していない状態でPopClient.MessageCountおよびPopClient.TotalSizeプロパティを参照しようとした場合、PopProtocolViolationExceptionをスローするようにした

§2.22 0.90 (2010-04-04)

主にPopClientの機能強化・テストケースの追加と細かい修正等。

  • 機能追加
    • PopScanListingにIEquatable<long>を実装
    • PopUniqueIdListingにIEquatable<string>, IEquatable<long>を実装
    • 例外クラスにSerializableAttributeを設定 (実装は不完全)
    • PopClient
      • PopClient.GetMessage(), PopClient.GetMessages()にUnique-IDを取得するか指定できるバージョンを追加
      • 該当するUnique-IDを持つメッセージを取得するPopClient.GetMessage(string)を追加
      • PopMessageInfo.ReadAs<TOutput>(Converter<StreamReader, TOutput>)を追加
      • PopMessageInfo.Clientプロパティを追加
      • PopClient.GetMessage()でサーバが-ERRを返した場合は、PopMessageNotFoundExceptionをスローするようにした
      • 切断されるまでの間、PopClient.GetMessage(), GetMessages()は同一番号のメッセージに対して同一のインスタンスを返すようにした
      • 削除マーク済みのメッセージと同一番号のメッセージに対してPopClient.GetMessage()しようとした場合、PopMessageDeletedExceptionをスローするようにした
      • 削除マーク済みかつUnique-IDが未取得の場合にPopMessageInfo.UniqueIdを取得しようとした場合、PopMessageDeletedExceptionをスローするようにした
    • WebClients
  • 修正・改善
    • PopDropListing, PopUniqueIdListing, PopScanListingをstructに変更
    • PopDefaultPortクラスをPopDefaultPortsに改名
    • PopErrorResponseExceptionをSmdn.Net.Pop3名前空間に移動
    • PopFormatExceptionをSmdn.Net.Pop3.Protocol名前空間に移動、基底クラスをSystem.FormatExceptionに変更
    • ソケットエラー等の場合、PopExceptionではなくPopConnectionExceptionをスローするように変更
    • ArgumentOutOfRangeExceptionをスローする際に、ActualValueプロパティを設定するようにした
    • ArgumentExceptionのMessageとParamNameが逆になっていた箇所を修正
    • 拡張の必要がないクラスをsealedに変更
    • PopClient
      • PopProtocolViolationExceptionがPopInvalidOperationExceptionではなくPopExceptionを継承していたのを修正
      • 削除マーク済みのメッセージに対する不正な操作を行おうとした場合にスローする例外を、PopMessageDeletedExceptionに変更
      • PopClient.Refresh()メソッドを削除
      • PopClient.NoOp()を廃止、代わりにPopClient.KeepAlive()を追加
      • PopMessageInfo.Read*()およびOpen*()のオーバーロードおよび内部実装を整理
      • PopMessageInfo.ReadLines(), ReadAllLines()が常に例外をスローする不具合を修正
      • PopMessageInfo.OpenText()のデフォルトエンコーディングをEncoding.DefaultからISO-8859-1に変更
      • PopMessageInfo.IsMarkedAsDeletedがtrueの場合にPopMessageInfo.MarkAsDeleted()を呼んだ場合、DELEを再発行せず何もしないように修正

§2.23 0.29 (2010-03-22)

主にSmdn.Net.Pop3.WebClientsのアセンブリ化

  • 機能追加
    • PopClient
      • PopMessageInfo.Save()を追加
  • 修正・改善
    • StringComparison.Ordinal*の動作を期待していた箇所でInvariantCulture*を使用していたのを修正
    • stringの操作を行っている箇所について、StringComparison.Ordinalを指定するようにした
    • PopClient
      • PopInvalidOperationExceptionおよびその派生クラスをSmdn.Net.Pop3名前空間に移動
    • WebClients
      • 実装をアセンブリSmdn.Net.Pop3.WebClientsとして分離 (アプリケーション構成ファイルを使用している場合は、アセンブリ名の変更が必要)

§2.24 0.28 (2010-03-15)

  • 修正・改善
    • 既にTLS/SSLでの接続が確立している状態でもSTLSを発行してしまう不具合を修正
    • PopClient
      • エラーレスポンスの場合にPopExceptionをスローしていた箇所をPopErrorResponseExceptionをスローするように変更
      • InvalidOperationExceptionをスローしていた箇所をPopProtocolViolationExceptionをスローするように変更

§2.25 0.27 (2010-02-28)

主に新しいクライアント実装PopClientの追加とそれに付随する変更。

  • 機能追加
    • 新しいクライアント実装PopClientをSmdn.Net.Pop3.Client名前空間に追加(ただしインターフェイスは未確定、実装は不完全)
    • PopUriBuilderを追加

§2.26 0.26 (2010-02-22)

主にライブラリ本体と下位ライブラリの実装改善、新しいクライアント実装を追加するための下準備。

  • 修正・改善
    • SSL接続/STLSに失敗した場合、PopUpgradeConnectionExceptionをスローするようにした
    • ログ
      • POP/IMAPのプロトコルログを分けて収集できるように修正
      • プロトコルログのTraceSourceのnameを'POP'に変更
    • パフォーマンス関連
      • 下位ライブラリの実装の最適化、バッファアロケーションと動作速度を改善
      • RETR/TOPの実装を修正、取得したレスポンスは保持せずに破棄するようにし、またオーバーヘッドが少なくなるようにした
    • WebClients名前空間
      • すべて小文字でなければpopsスキームとみなされない不具合を修正

0.25と0.26のパフォーマンスの比較。

テストケース テスト環境
Ubuntu 9.10 + Mono(r151732) Windows Vista + .NET Framework 3.5
4kBのメッセージを1500回ダウンロード
3回試行
[1]04.39sec -> 02.97sec
[2]04.62sec -> 02.80sec
[3]04.55src -> 02.65sec
[1]04.31sec -> 03.93sec
[2]03.89sec -> 04.06sec
[3]04.19src -> 04.07sec
17MBのメッセージを10回ダウンロード
3回試行
[1]66.18sec -> 30.13sec
[2]60.20sec -> 30.09sec
[3]60.12src -> 29.24sec
[1]20.93sec -> 18.19sec
[2]21.23sec -> 18.29sec
[3]21.38src -> 18.30sec

§2.27 0.25 (2010-02-15)

主にアプリケーション構成ファイルでの設定のサポート、パフォーマンスと.NET Frameworkでの動作の改善。

  • 機能追加
    • WebClients名前空間
      • アプリケーション構成ファイルのconfiguration/system.net/webRequestModules要素でpop/popsスキームを登録できるようにした
      • PopWebRequestDefaultsクラスを追加、コード内もしくはアプリケーション構成ファイルでPopWebRequestの各プロパティのデフォルト値を設定できるようにした
  • 修正・改善
    • PopResponseCodeをSmdn.Net.Pop3.Protocol.ClientからSmdn.Net.Pop3.Protocolに移動
    • SslStream.AuthenticateAsClientでAuthenticationExceptionが発生した場合、ストリームを閉じるようにした
    • ライブラリ内のメッセージとサーバからのレスポンスを区別できるように内部処理と書式を変更した
    • パフォーマンス関連
      • レスポンスパーサの実装を最適化、冗長な処理を削除
      • 文字列比較処理を最適化
      • ロック処理にSemaphoreを使用していた箇所をMonitorに置き換えた
    • .NET Framework関連
      • NetworkCredentialの各プロパティがnullを返すことを期待していた実装を修正、nullではなくstring.Emptyの場合に認証をキャンセルするようにした
      • SocketError.TimedOutのSocketExceptionが発生した場合、ImapConnectionExceptionではなくTimeoutExceptionをスローするようにした
    • WebClients名前空間
      • SslStream作成用のコールバック、証明書関連のコールバックのプロパティ名を変更、また値をPopConnectionと共有しないようにした
      • PopSessionManagerからIWebRequestCreateの実装を分離、WebRequest.RegisterPrefixはPopWebRequestCreator.RegisterPrefixで行うようにした

§2.28 0.24 (2010-02-06)

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

§2.29 0.23 (2010-01-30)

  • 機能追加
    • Extended POP3 Response Codesに対応
    • AUTHコマンドを発行する場合、可能なら応答を待たずにinitial-responseを送信するようにした
    • プロトコル上不正な以下の操作を行おうとした場合、PopProtocolViolationException(SystemExceptionから派生)をスローするようにした
      • InvalidOperationExceptionをスローしていた箇所はImapProtocolViolationExceptionに変更
    • PopSession.ServerCapabilitiesに対してコレクションの変更を行おうとした場合、NotSupportedExceptionをスローするようにした
    • WebClients名前空間
      • PopWebRequest.ExpectedErrorResponseCodesプロパティを追加 (予期されるレスポンスコードが返された場合はWebExceptionをスローしない)
      • サーバがサポートしない機能を使用しようとした場合、およびプロトコル上不正な操作を行おうとした場合、System.Net.ProtocolViolationExceptionをスローするようにした
  • 修正・改善
    • 受信したレスポンスをstringで保持する機能を削除

§2.30 0.22 (2010-01-23)

  • Smdn.Net.Imap4.Clientをベースに再実装
  • PopWebRequest/PopWebResponseクラスの実装を追加
  • アセンブリ名・名前空間をSmdn.Protocols.Pop3からSmdn.Net.Pop3に改名

§2.31 0.13 (2008-04-27)

  • STLSコマンドによるTLSへのアップグレードに対応
  • 取得したメッセージの改行文字が環境によって変わってしまう不具合を修正

§2.32 0.12 (2008-04-07)

  • HMACMD5アルゴリズムの実装を独自の実装からライブラリ標準のクラスを用いたものに変更

§2.33 0.11 (2008-03-10)

  • TundereBirdバージョンアップに伴うリリース

§2.34 0.10 (2008-03-06)

  • 初版