Q
檢查未讀電子郵件
4
A
回答
4
POP
You can use OpenPOP.net讀取使用POP協議電子郵件。 POP的問題在於它沒有保存它是否未讀的細節。所以我認爲這對你沒有多大用處。您有自己的方式來下載和標記已讀或未讀的電子郵件。
IMAP
This question in SO有使用IMAP的例子一些鏈接。 IMAP具有關於郵件狀態的詳細信息(讀取/未讀取)。
請詳細解釋您的要求。
+0
我編輯了我的問題。我將檢查IMAP鏈接,並將其視爲回答,如果這是要走的路。現在感謝。 – Qosmo 2010-10-24 03:13:10
1
這裏是代碼LumiSoft IMAP庫中的樣本:
using LumiSoft.Net.IMAP;
using LumiSoft.Net.IMAP.Client;
using LumiSoft.Net;
...
using (IMAP_Client client = new IMAP_Client())
{
client.Connect("imap.gmail.com", 993, true);
client.Login("[email protected]", "your_cool_password");
client.SelectFolder("INBOX");
IMAP_SequenceSet sequence = new IMAP_SequenceSet();
//sequence.Parse("*:1"); // from first to last
IMAP_Client_FetchHandler fetchHandler = new IMAP_Client_FetchHandler();
fetchHandler.NextMessage += new EventHandler(delegate(object s, EventArgs e)
{
Console.WriteLine("next message");
});
fetchHandler.Envelope += new EventHandler<EventArgs<IMAP_Envelope>>(delegate(object s, EventArgs<IMAP_Envelope> e){
IMAP_Envelope envelope = e.Value;
if (envelope.From != null && !String.IsNullOrWhiteSpace(envelope.Subject))
{
Console.WriteLine(envelope.Subject);
}
});
// the best way to find unread emails is to perform server search
int[] unseen_ids = client.Search(false, "UTF-8", "unseen");
Console.WriteLine("unseen count: " + unseen_ids.Count().ToString());
// now we need to initiate our sequence of messages to be fetched
sequence.Parse(string.Join(",", unseen_ids));
// fetch messages now
client.Fetch(false, sequence, new IMAP_Fetch_DataItem[] { new IMAP_Fetch_DataItem_Envelope() }, fetchHandler);
// uncomment this line to mark messages as read
// client.StoreMessageFlags(false, sequence, IMAP_Flags_SetType.Add, IMAP_MessageFlags.Seen);
}
有點複雜,但能正常工作。 Limisoft圖書館並不完美,所以請確保您對它進行了很好的測試。
0
如果你想要做的就是讓IMAP文件夾中的未讀郵件的數量,你可以使用MailKit做到這一點:
using MailKit;
using MailKit.Search;
using MailKit.Net.Imap;
...
using (var client = new ImapClient()) {
// Note: depending on your server, you might need to connect
// on port 993 using SecureSocketOptions.SslOnConnect
client.Connect ("imap.server.com", 143, SecureSocketOptions.StartTls);
// Note: use your real username/password here...
client.Authenticate ("username", "password");
// open the Inbox folder...
client.Inbox.Open (FolderAccess.ReadOnly);
// search the folder for new messages (aka recently
// delivered messages that have not been read yet)
var uids = client.Inbox.Search (SearchQuery.New);
Console.WriteLine ("You have {0} new message(s).", uids.Count);
// ...but maybe you mean unread messages? if so, use this query
uids = client.Inbox.Search (SearchQuery.NotSeen);
Console.WriteLine ("You have {0} unread message(s).", uids.Count);
client.Disconnect (true);
}
相關問題
- 1. 電子郵件閱讀/未讀郵件
- 2. 使用AppleScript,是否可以檢查未讀電子郵件?
- 3. !preg_match電子郵件檢查
- 4. netduino檢查電子郵件
- 5. Java獲取未讀電子郵件
- 6. 電子郵件存在檢查軟件
- 7. 在php中檢查未讀郵件
- 8. 從outlook中檢查未讀郵件
- 9. Symfony2:登記後檢查電子郵件
- 10. 檢查codeigniter中的電子郵件
- 11. 帶角度的電子郵件檢查
- 12. Javascript在電子郵件中檢查@
- 13. T-SQL:檢查電子郵件格式
- 14. jQuery的有效電子郵件檢查
- 15. 檢查電子郵件與PHP
- 16. Actionscript/Air - 可能檢查電子郵件
- 17. 如何檢查電子郵件在PHP?
- 18. Sitecore WFFM檢查重複電子郵件
- 19. 檢查電子郵件與TELNET和PHP
- 20. 檢查電子郵件的結尾
- 21. 檢查電子郵件已經存在
- 22. 檢查電子郵件是否有效
- 23. 檢查電子郵件是否存在
- 24. Oracle SQL Reg Exp檢查電子郵件
- 25. 檢查電子郵件是否啓用?
- 26. Loop僅檢查一封電子郵件
- 27. 用CasperJS或PhantomJS檢查電子郵件
- 28. 的Python:代碼檢查電子郵件
- 29. 檢查電子郵件憑據存在
- 30. 用Python檢查電子郵件
您需要包括更多信息。你已經將它標記爲C#,所以我們可以認爲這是有問題的編程語言,但是你需要指定郵件協議(POP,IMAP,Exchange,...) – greg 2010-10-24 02:08:33