GrapeCity Secure Mail for .NET 4.0J > メールの受信(IMAP) > ヘッダ情報のみを取得する(IMAP) |
IMAPサーバーからメールのヘッダ情報のみを取得するには、MailboxクラスのGetメソッドを、引数MessageInfoにImapMessageInfo.Headerを指定して実行します。
すべてのメールを取得する処理は、特に大容量の添付ファイルをダウンロードする場合など、非常に時間がかかることがあります。このような場合は、メールのヘッダ情報のみを取得する方法が有効です。
以下のサンプルコードでは、メールの取得時に発生するProgressイベント内で、ヘッダの情報をListViewにセットしています。
|
Imports Dart.Mail Imports Dart.Mail.Imap Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' Form上のListViewを設定します。 ListView1.GridLines = True ListView1.View = View.Details ListView1.Columns.Add("差出人", 200, HorizontalAlignment.Left) ListView1.Columns.Add("件名", 200, HorizontalAlignment.Left) ListView1.Columns.Add("送信日時", 200, HorizontalAlignment.Left) ' ヘッダ情報を取得します。 Imap1.Start(AddressOf ReceiveMailImapAllHeaders, Nothing) End Sub Private Sub ReceiveMailImapAllHeaders(ByVal sender As Object) ' "INBOX"メールボックスを選択します。 Imap1.SelectedMailbox = Imap1.Mailboxes("INBOX") ' メールのヘッダ情報を取得します。 Dim box As Mailbox = Imap1.SelectedMailbox box.Get(0, box.Count, ImapMessageInfo.Header) ' Imapサーバーとの接続を閉じます。 Imap1.Close() End Sub Private Sub Imap1_Progress(sender As Object, e As ImapProgressEventArgs) Handles Imap1.Progress If e.Final Then ' 1つのメールについて情報の取得が完了したら、 ' ヘッダ情報から、From、Subject、送信日時を取得します。 Dim header() As String = {e.Message.Message.From, e.Message.Message.Subject, e.Message.Message.Date.ToString()} ' 取得したヘッダ情報をListViewにセットします。 ListView1.Items.Add(New ListViewItem(header)) End If End Sub
using Dart.Mail; using Dart.Mail.Imap; private void Form1_Load(object sender, EventArgs e) { // Form上のListViewを設定します。 ListView1.GridLines = true; ListView1.View = View.Details; ListView1.Columns.Add("差出人", 200, HorizontalAlignment.Left); ListView1.Columns.Add("件名", 200, HorizontalAlignment.Left); ListView1.Columns.Add("送信日時", 200, HorizontalAlignment.Left); // ヘッダ情報を取得します。 imap1.Start(ReceiveMailPopAllHeaders, null); } private void previewMessagesImap(object sender) { // "INBOX"メールボックスを選択します。 imap1.SelectedMailbox = imap1.Mailboxes["INBOX"]; // メールのヘッダ情報を取得します。 Mailbox box = imap1.SelectedMailbox; box.Get(0, box.Count, ImapMessageInfo.Header); // サーバーとの接続を閉じます。 imap1.Close(); } private void imap1_Progress(object sender, ImapProgressEventArgs e) { if (e.Final) { // 1つのメールについて情報の取得が完了したら、 // ヘッダ情報から、From、Subject、送信日時を取得します。 string[] header = {e.Message.Message.From, e.Message.Message.Subject, e.Message.Message.Date.ToString()}; // 取得したヘッダ情報をListViewにセットします。 ListView1.Items.Add(new ListViewItem(header)); } }