Click or drag to resize
MimeKit

Pop3ClientGetMessagesAsync(Int32, Int32, CancellationToken, ITransferProgress) Method

Asynchronously get the messages within the specified range.

Namespace: MailKit.Net.Pop3
Assembly: MailKit (in MailKit.dll) Version: 4.3.0
Syntax
C#
public override Task<IList<MimeMessage>> GetMessagesAsync(
	int startIndex,
	int count,
	CancellationToken cancellationToken = default,
	ITransferProgress progress = null
)

Parameters

startIndex  Int32
The index of the first message to get.
count  Int32
The number of messages to get.
cancellationToken  CancellationToken  (Optional)
The cancellation token.
progress  ITransferProgress  (Optional)
The progress reporting mechanism.

Return Value

TaskIListMimeMessage
The messages.

Implements

IMailSpoolGetMessagesAsync(Int32, Int32, CancellationToken, ITransferProgress)
IMailSpoolGetMessagesAsync(Int32, Int32, CancellationToken, ITransferProgress)
Exceptions
ExceptionCondition
ArgumentOutOfRangeExceptionstartIndex and count do not specify a valid range of messages.
ObjectDisposedException The Pop3Client has been disposed.
ServiceNotConnectedException The Pop3Client is not connected.
ServiceNotAuthenticatedException The Pop3Client is not authenticated.
NotSupportedException The POP3 server does not support the UIDL extension.
OperationCanceledException The operation was canceled via the cancellation token.
IOException An I/O error occurred.
Pop3CommandException The POP3 command failed.
Pop3ProtocolException A POP3 protocol error occurred.
Remarks

Gets the messages within the specified range.

When the POP3 server supports the Pipelining extension, this method will likely be more efficient than using GetMessage(Int32, CancellationToken, ITransferProgress) for each message because it will batch the commands to reduce latency.

Example
C#
public static void DownloadMessages ()
{
    using (var client = new Pop3Client ()) {
        client.Connect ("pop.gmail.com", 995, SecureSocketOptions.SslOnConnect);

        client.Authenticate ("username", "password");

        var messages = client.DownloadMessages (0, count);

        foreach (var message in messages) {
            // write the message to a file
            message.WriteTo (string.Format ("{0}.msg", i));
        }

        client.DeleteMessages (0, count);

        client.Disconnect (true);
    }
}
See Also