POP3 クライアントによる非同期メール処理
Contents
[
Hide
]
Pop3Client を使用した非同期操作
メッセージの操作は、Aspose.Email を使用して非同期に実行することもできます。 Pop3Client本記事では、メールボックスからメッセージを非同期で取得する方法を示します。また、検索条件を指定してメッセージを一覧取得する方法も示します。 MailQueryタスクベースの非同期パターンで開始されたメールボックス操作を中断する方法は別途示します(TAP) メソッドです。
メッセージを非同期で取得
以下のコードスニペットは、メッセージを非同期で取得する方法を示します。
MailQuery を使用したメッセージの非同期一覧取得
この MailQuery クラスは、以下のコードサンプルに示すように、非同期でメッセージ一覧を取得するための検索条件を指定するために使用できます。
TAP メソッドの中断
.NET Framework 4.5 以降では、TAP モデルに従って実装された非同期メソッドを使用できます。以下のコードスニペットは、タスクベースの非同期パターンメソッドを使用してメールボックスの情報を取得する方法を示しています。 GetMailboxInfoAsync しばらくしてこのプロセスを中断します。
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
using (Pop3Client client = new Pop3Client(host, 995, senderEmail, password, SecurityOptions.Auto))
{
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
AutoResetEvent autoResetEvent = new AutoResetEvent(false);
Exception exception = null;
ThreadPool.QueueUserWorkItem(delegate
{
try
{
// start receiving mailbox information
var task = client.GetMailboxInfoAsync(cancellationTokenSource.Token);
Pop3MailboxInfo mailboxInfo = task.GetAwaiter().GetResult();
Console.WriteLine("Message count: " + mailboxInfo.MessageCount);
}
catch (Exception e)
{
exception = e;
}
finally
{
autoResetEvent.Set();
}
});
Thread.Sleep(2000);
// stop receiving mailbox information
cancellationTokenSource.Cancel();
autoResetEvent.WaitOne();
if (exception is OperationCanceledException)
Console.WriteLine("Operation has been interrupted: " + exception.Message);
}