Böyle bir kod yazdım. IMAP sunucusundan gelen mailleri işliyor. Ama yazdığım kod tüm mailleri teker teker sıralıyor. Ben uygulama açıldığı tarihten sonra atılan maillerin gelmesini istiyorum kısaca anlık mail. Nasıl yaparım?
C#:
using (var client = new ImapClient())
{
client.Connect(imapServer, imapPort, true);
client.Authenticate(email, password);
var inbox = client.Inbox;
inbox.Open(FolderAccess.ReadWrite);
while (true)
{
int messageCount = inbox.Count;
if (messageCount > 0)
{
for (int i = 0; i < messageCount; i++)
{
var message = inbox.GetMessage(i);
MessageBox.Show($"Yeni e-posta: {message.Subject}");
}
inbox.Expunge();
}
Thread.Sleep(TimeSpan.FromMinutes(1));
}
}
Bu kullanım teoride doğru, pratikte hatalıdır. Client’a bütün veriyi çekip kontrol etmek performans zafiyetine sebep olur.
Onun yerine IMAP sunucusundan fitreli veri istemek daha doğrudur. StackOverFlow’da böyle bir syntax mevcut. Bunu kendinize göre düzenleyerek daha sağlıklı bir düzenleme yapabilirsiniz.
C#:
var messages = inbox.SearchParse("SEARCH SINCE 27-Nov-2011 NOT BEFORE 28-NOV-2011");
Bu kullanım teoride doğru, pratikte hatalıdır. Client’a bütün veriyi çekip kontrol etmek performans zafiyetine sebep olur.
Onun yerine IMAP sunucusundan fitreli veri istemek daha doğrudur. StackOverFlow’da böyle bir syntax mevcut. Bunu kendinize göre düzenleyerek daha sağlıklı bir düzenleme yapabilirsiniz.
C#:
var messages = inbox.SearchParse("SEARCH SINCE 27-Nov-2011 NOT BEFORE 28-NOV-2011");