GrapeCity Secure Mail for .NET 4.0J
SelectedMailbox プロパティ
使用例 

選択されているMailboxを取得または設定します。
シンタックス
<BrowsableAttribute(False)>
<DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Hidden)>
Public Property SelectedMailbox As Mailbox
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Mailbox SelectedMailbox {get; set;}

プロパティ値

選択状態にあるMailboxを返します。Mailboxが選択されていない場合はnullを返します。
解説

絶対パスでメールボックスを選択する場合は Selectを使用します。

このプロパティを設定してMailboxを選択すると、ImapコンポーネントによってSELECTコマンドが送信され、Mailbox.FirstUnseenMailbox.MarkedMailbox.RecentMailbox.SelectableMailbox.SublevelsAllowedが初期化されます。 これでサーバーはこのMailboxを"Selected"状態と見なし、メッセージにアクセスできるようになります。

IMAPの特質は、他のクライアントがいつでもサーバー上のメッセージを削除できる点にあります。そのため、"foreach"を使用してメールボックス内のメッセージを列挙することは推奨されません(列挙が完了する前に、非請求の応答によってメールボックスからメッセージを削除しなければならない場合があります)。その代わりに、SelectedMailbox.ToArray()に対して"foreach"を使用します。この方法で列挙している間に別のクライアントによってメッセージが削除された場合、MessageBase.Idが0に設定されます。そのため、この値をチェックすることで、メッセージを処理する前にそのメッセージが存在することを保証できます。

メッセージにアクセスするメソッドを実行すると、このプロパティは、対象のメッセージを含むMailboxに更新されます。

nullに設定すると、選択されたメールボックスが閉じ、"Authenticated"状態になります。この操作を行うと、削除対象としてマークされたすべてのメッセージが削除されます。

使用例
以下のサンプルコードでは、Imapコンポーネントを使用して指定したメールボックスからメッセージを取得し、それらのメッセージをディスクに保存します。
private void getMessages(object sender)
{
    // サーバーとアカウントの情報を設定します。
    imap1.Session.RemoteEndPoint = 
        new Dart.Mail.IPEndPoint(myServer, Imap.GetDefaultPort(imap1.Session));
    imap1.Session.Username = myUsername;
    imap1.Session.Password = myPassword;

    // 接続してアカウントにログインします。
    imap1.Connect();
    imap1.Authenticate();

    // 取得するメッセージを含むメールボックスを開きます。
    imap1.SelectedMailbox = imap1.Mailboxes["INBOX"];

    // メッセージを保存するフォルダーを指定します。
    string messageFolder = Application.StartupPath + "\\messages";

    // アカウントのすべてのメッセージをダウンロードしてディスクに保存します。
    foreach (ImapMessage imapMessage in imap1.SelectedMailbox.ToArray())
    {
        imapMessage.Get();
        imapMessage.Message.Save(messageFolder + "\\" + imapMessage.Uid + ".eml");
    }

    // セッションから適切にログアウトします。
    imap1.Close();
}

private void imap1_Progress(object sender, ImapProgressEventArgs e)
{
    // メッセージの送信状況に従ってプログレスバーを更新します。
    progressBar1.Value = (e.Final) ? 0 : (int)((e.Position * 100) / e.Length);
}
Private Sub getMessages(ByVal sender As Object)
    ' サーバーとアカウントの情報を設定します。
    imap1.Session.RemoteEndPoint = New Dart.Mail.IPEndPoint(myServer, Imap.GetDefaultPort(imap1.Session))
    imap1.Session.Username = myUsername
    imap1.Session.Password = myPassword

    ' 接続してアカウントにログインします。
    imap1.Connect()
    imap1.Authenticate()

    ' 取得するメッセージを含むメールボックスを開きます。
    imap1.SelectedMailbox = imap1.Mailboxes("INBOX")

    ' メッセージを保存するフォルダーを指定します。
    Dim messageFolder As String = Application.StartupPath & "\messages"

    ' アカウントのすべてのメッセージをダウンロードしてディスクに保存します。
    For Each imapMessage As ImapMessage In imap1.SelectedMailbox.ToArray()
        imapMessage.Get()
        imapMessage.Message.Save(messageFolder & "\" & imapMessage.Uid & ".eml")
    Next imapMessage

    ' セッションから適切にログアウトします。
    imap1.Close()
End Sub

Private Sub imap1_Progress(ByVal sender As Object, ByVal e As ImapProgressEventArgs) Handles imap1.Progress
    ' メッセージの送信状況に従ってプログレスバーを更新します。
    progressBar1.Value = If(e.Final, 0, CInt((e.Position * 100) \ e.Length))
End Sub
参照

参照

Imap クラス
Imap メンバ

 

 


© 2003, GrapeCity inc. All rights reserved.