Dart.Mail 名前空間 > Imap クラス : Select メソッド |
Public Function Select( _ ByVal mailboxPath As String _ ) As Mailbox
public Mailbox Select( string mailboxPath )
Mailboxes と Mailbox.Mailboxes は、SelectedMailboxに設定して選択できるメールボックスのツリーを表します。しかし多くの場合、目的とするメールボックスのパスは分かっており、完全な階層は関係ありません。その場合、絶対パスを指定して目的のメールボックスを直接選択するためにこのメソッドが使用できます。サーバーで使用している区切り文字が不明な場合は、Delimiterはサーバーの区切り文字を返します。
コンポーネントは SELECTコマンドを送信して Mailbox.FirstUnseen、Mailbox.Marked、Mailbox.Recent、 Mailbox.Selectable、そしてMailbox.SublevelsAllowedを初期化します。これでサーバーはこのMailboxを"Selected"状態と見なし、メッセージにアクセスできるようになります。
IMAPの特質は、他のクライアントがいつでもサーバー上のメッセージを削除できる点にあります。そのため、"foreach"を使用してメールボックス内のメッセージを列挙することは推奨されません(列挙が完了する前に、非請求の応答によってメールボックスからメッセージを削除しなければならない場合があります)。 その代わりに、SelectedMailbox.ToArray()に対して"foreach"を使用します。この方法で列挙している間に別のクライアントによってメッセージが削除された場合、MessageBase.Idが0に設定されます。そのため、この値をチェックすることで、メッセージを処理する前にそのメッセージが存在することを保証できます。
Imap.Session.AutoUtf8が trueに設定され、サーバーが「UTF8=ACCEPT」を返す場合、UNICODE文字列のエンコードとデコードにUTF8が使用されます。