Pop3DownloadEntireMessages Method (Int32, Int32) |
Namespace: MailBee.Pop3Mail
Exception | Condition |
---|---|
MailBeeException | An error occurred and ThrowExceptions is true. |
If the POP3 server supports pipelining, this method will download all the messages in a single network operation, which greatly increases performance and reduces network traffic.
Note |
---|
As this method downloads multiple e-mails at once, you must have plenty of memory to have such operation done. In case of out-of-memory issues, reduce count or download large emails individually. |
You can use GetMessageSizes method to learn the sizes of all e-mails in the inbox without downloading them. For instance, if you found that you have 10 small e-mails less than 10MB total, then a large 100MB e-mail, then many small e-mails 500MB total, you can first download 10 small emails with a single call of DownloadEntireMessages(Int32, Int32) overload, process them, then download a large e-mail with DownloadEntireMessage(Int32) method, process it, and then use DownloadEntireMessages(Int32, Int32) overload again several times to get e-mails downloaded in approx. 100MB groups. This way, you won't need to download each and every e-mail one-by-one (which would defeat the idea of using pipelining) and still won't use too much memory. Small e-mails will be downloaded in a batch while large ones will get downloaded on their own.
using System; using MailBee; using MailBee.Pop3Mail; using MailBee.Mime; class Sample { // MessageDownloaded event handler. private static void OnMessageDownloaded(object sender, Pop3MessageDownloadedEventArgs e) { Console.WriteLine("Message #" + e.MessageNumber + " downloaded"); } // The actual code. static void Main(string[] args) { Pop3 pop = new Pop3(); pop.Connect("mail.domain.com"); pop.Login("jdoe", "secret"); // Subscribe to the MessageDownloaded event. pop.MessageDownloaded += new Pop3MessageDownloadedEventHandler(OnMessageDownloaded); // Download the messages. MailMessageCollection msgs = pop.DownloadEntireMessages(pop.InboxMessageCount - 9, 10); // Display some information about downloaded messages. foreach (MailMessage msg in msgs) { Console.WriteLine("Message #" + msg.IndexOnServer + " contains " + msg.Attachments.Count + " attachment(s)"); } pop.Disconnect(); } }