Dart.Mail 名前空間 > ImapMessage クラス : GetPart メソッド |
例外 | 解説 |
---|---|
ProtocolException | サーバーから受信したIMAPプロトコル応答が不良です。 |
System.Net.Sockets.SocketException | 通信エラーが発生しました。 |
このメソッドは、メッセージの単一のパートを取得します。 partは、MailMessage.Contentコレクションに存在する必要があります。 このメソッドを使用して、メッセージ全体を取得せずにメッセージの添付ファイルをダウンロードすることができます。
通常は、このメソッドの前にGet(ImapMessageInfo)を呼び出して、空のPartオブジェクトを含むContentコレクションを持つMailMessageを作成します。 これらのパートの1つをこのメソッドに渡します。
peekは、この操作によってメッセージを既読としてマークするかどうかを示します。peekがtrueの場合、Seenフラグは変更されません。peekがfalseの場合、Seenフラグはtrueに設定されます。
private void getMessageAttachments(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"]; // BodyStructureを使用して添付ファイルを検出してから、それらの添付ファイルを取得します。 foreach (ImapMessage imapMessage in imap1.SelectedMailbox.ToArray()) { imapMessage.Get(ImapMessageInfo.Structure); foreach (Attachment attachment in imapMessage.Message.Attachments) { imapMessage.GetPart(attachment, false); attachment.Content.MoveTo(Application.StartupPath + "\\attachments\\" + attachment.ContentDisposition.FileName); } } // セッションから適切にログアウトします。 imap1.Close(); }
Private Sub getMessageAttachments(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") ' BodyStructureを使用して添付ファイルを検出してから、それらの添付ファイルを取得します。 For Each imapMessage As ImapMessage In imap1.SelectedMailbox.ToArray() imapMessage.Get(ImapMessageInfo.Structure) For Each attachment As Attachment In imapMessage.Message.Attachments imapMessage.GetPart(attachment, False) attachment.Content.MoveTo(Application.StartupPath & "\attachments\" & attachment.ContentDisposition.FileName) Next attachment Next imapMessage ' セッションから適切にログアウトします。 imap1.Close() End Sub