Smdn.Net.Imap4.Client.dll / Smdn.Net.Pop3.Client.dll / Smdn.Formats.Mime.dll / Smdn.Security.Authentication.Sasl.dllについての、今後の開発予定です。 厳密な予定ではないので状況により可変します。 リリース時期は名言できません。

最新の安定版

バージョン
ライブラリ バージョン
開発版 メンテナンス版
Smdn.Net.Imap4.Client 1.90 1.15
Smdn.Net.Pop3.Client 1.90 1.27
Smdn.Formats.Mime 0.90 0.40
Smdn.Security.Authentication.Sasl 1.90 1.01
Smdn 3.0beta1 2.02

上記のバージョンでは、開発版とメンテナンス版でAPIはほぼ同等ですが、メンテナンス版から開発版へ移行する場合は多少のコード修正が必要になる場合があります。 (ただし、Smdn.dllを除きます。 詳細はSmdn.dll §.Smdn.Core.*.dllの統合を参照してください。)

今後のリリース予定

メンテナンス版

本項での対象バージョン
ライブラリ バージョン
Smdn.Net.Imap4.Client 1.15
Smdn.Net.Pop3.Client 1.27
Smdn.Formats.Mime 0.40
Smdn.Security.Authentication.Sasl 1.01
Smdn 2.03

今後APIは固定し、機能追加等は基本行わず、変更は重要な更新のみ行います。 開発版と平行して、必要が生じた場合に適宜リリースします。 メンテナンス版は.NET Framework 4.6以降、および.NET Standard(.NET Core)には対応しないので、必要な場合は上記の最新安定版の開発版を使用してください。

開発版

本項での対象バージョン
ライブラリ バージョン
Smdn.Net.Imap4.Client 1.90
Smdn.Net.Pop3.Client 1.90
Smdn.Formats.Mime 0.90
Smdn.Security.Authentication.Sasl 1.90
Smdn 3.0beta1

今後のバージョンで、内部実装を中心としたAPIの破壊的変更を行います。 alpha・betaバージョンをリリース予定です。 最終的なAPIはまだ決定していません。

下記名前空間直下の型、およびドキュメントで使用例を明記しているような型に関しては、型名変更以外の変更はできるだけ抑える予定です。 型名・メソッド名の修正、キャッチする例外型の修正が必要になる場合はあると思われますが、ロジックレベルでの修正は概ね変更なしで済むようにする予定です。

  • Smdn.Net.Imap4.Client
  • Smdn.Net.Pop3.Client
  • Smdn.Formats.Mime
  • Smdn.Security.Authentication.Sasl
  • Smdn.Security.Authentication.Sasl.Client

上記以外の名前空間については、名前空間の移動・型名の変更、その他必要に応じてAPIの変更を予定しています。


ImapOpenedMailboxInfoについて。 IDisposable.Dispose(usingステートメント)によるメールボックスのクローズ処理は廃止を検討しています。 代替となる機能は提供予定ですが、APIは検討中です。 今後ImapOpenMailboxInfoを使ったコードを記述する場合は、usingステートメント内ではなく、

  1. メソッドとして分離して記述する
  2. try/finallyで記述する

のいずれかで記述することを推奨します。

既存コードでの実装例
using (var inbox = client.OpenInbox()) {
  // ImapOpenedMailboxInfoを使ったコード
  inbox.DoSomething();
}
// usingステートメント内でメールボックスのクローズ処理が行われる
メソッドとして分離して記述する
using (var inbox = client.OpenInbox()) {
  // ImapOpenedMailboxInfoを使ったコードはメソッドに分離する
  DoSomething(inbox);
}

void DoSomething(ImapOpenedMailboxInfo mailbox)
{
  ...
}
try/finallyで記述する
try {
  try {
    var inbox = client.OpenInbox();

    // ImapOpenedMailboxInfoを使ったコード
    inbox.DoSomething();
  }
  catch (...) {
  }
}
finally {
  // usingステートメントの代わりに、finally句でメールボックスのクローズ処理を行う
  if (client.IsConnected && client.OpeningMailbox != null)
    client.CloseMailbox();
  }
}

また、ImapOpenedMailboxInfoを含む*Info系クラスもリネームを予定しているので、型名にエイリアスを付けて参照するなどしてください。 特に、ImapOpenedMailboxInfoはImapOpenMailboxにリネームする予定です。 (リネーム後のクラス名は未確定です。)

*Info系クラスにエイリアスを付けて参照する
using ImapOpenMailbox = Smdn.Net.Imap4.Client.ImapOpenedMailboxInfo;
using ImapMailbox = Smdn.Net.Imap4.Client.ImapMailboxInfo;
using ImapMessage = Smdn.Net.Imap4.Client.ImapMessageInfo;

void DoSomething(ImapClient client)
{
  using (ImapOpenMailbox inbox = client.OpenInbox()) {
    ImapMessage message = inbox.GetMessageByUid(1);
  }
}

alpha

  • Smdn.Net.Imap4.dllのSmdn.Net.Imap4.Client.dllへの統合
  • 名前空間・クラスのリネーム
    • Smdn.Net.Imap4.Client.ImapOpenedMailboxInfo→ImapOpenMailboxInfo
    • (Imap|Pop)*Info系クラスのリネーム(Info削除)
      • ImapOpenMailboxInfo→ImapOpenMailbox
      • PopMessageInfo→PopMessage
      • など
    • その他内部クラスの配置整理
  • T[]→IReadOnlyList<T>, IEnumerable<T>へのインターフェイス変更
  • readonly用インターフェイスの定義、現在get/set可能な部分への適用
    • IImapMailboxFlagSet/IImapMessageFlagSetなど
  • ImapClient・PopClientの共通部分の整理
    • PopSecureConnectionExceptionの導入 (IMAP側と合わせる)
  • Smdn.ByteString→Span<byte>, Memory<byte>へのリプレース
    • これを実施する場合、.NET Framework 4.8には未対応となる可能性があります
  • デフォルト引数によるメソッドオーバーロードの削減
  • FormatExceptionをスローしている箇所の修正
    • InvalidDataExceptionあるいはArgumentException等への変更
予定バージョン番号
ライブラリ バージョン
Smdn.Net.Imap4.Client 2.0alpha1
Smdn.Net.Pop3.Client 2.0alpha1
Smdn.Formats.Mime 1.0alpha1
Smdn.Security.Authentication.Sasl 2.0alpha1
Smdn 3.0beta2

beta

  • 不足APIの追加
  • 追加されたIMAP/POP extension等への対応
予定バージョン番号
ライブラリ バージョン
Smdn.Net.Imap4.Client 2.0beta1
Smdn.Net.Pop3.Client 2.0beta1
Smdn.Formats.Mime 1.0beta1
Smdn.Security.Authentication.Sasl 2.0beta1
Smdn 3.0beta3

RC

  • API固定
予定バージョン番号
ライブラリ バージョン
Smdn.Net.Imap4.Client 2.0rc1
Smdn.Net.Pop3.Client 2.0rc1
Smdn.Formats.Mime 1.0rc1
Smdn.Security.Authentication.Sasl 2.0rc1
Smdn 3.0rc1