当我在收件箱中收到新邮件时如何收到通知(使用 IMAP 和 C#)?
How to get notification when I'm getting a new message in my inbox(using IMAP and C#)?
我有一个代码可以将收到的消息读取到邮件中,但我想创建一个触发器,以便在收到某些消息时发生某些操作。例如,您可以简单地创建一个控制台应用程序,触发器将为 Console.WriteLine("New message");
当然,理想情况下,也是阅读此消息,但我以后已经可以自己阅读了。我不知道如何实现通知。
我将添加我工作的代码,但在这种情况下,它似乎没有帮助。我是 Imap 的新手。如果有任何帮助和建议,我将不胜感激。
static void GetItems()
{
ExchangeService service;
String pattern = "file:///C:/Users/";
service = new ExchangeService
{
Credentials = new WebCredentials("mail", "password")
};
FolderView view = new
FolderView(10);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.PropertySet.Add(FolderSchema.DisplayName);
service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
SearchFilter searchFilter = new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0);
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.Inbox, searchFilter, view);
foreach (Folder f in findFolderResults)
{
Console.WriteLine("Handling folder: " + f.DisplayName);
SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, true));
ItemView view1 = new ItemView(1);
FindItemsResults<Item> findEmailResults = service.FindItems(f.Id, sf, view1);
foreach (Item i in findEmailResults)
{
Console.WriteLine("Processing email: " + i.Subject);
}
}
}
我建议改用 Graph API 而不是 EWS,Use the Microsoft Graph API to get change notifications。
EWS 支持通知。它允许推送、拉取和流式传输通知,任何在您的特定情况下有意义的内容。
从 Notification subscriptions, mailbox events, and EWS in Exchange 开始。
所以,我对这个 mail-notification 系统进行了自己的研究,并找到了一篇非常好的文章和代码。
这是文章:
MailKit : Obtaining new mail notification from IMAP server
这是 mail-notification 的代码:
https://github.com/jstedfast/MailKit/blob/6c813d02617edc3e3de5481a413b1e2fb43bfe8c/samples/ImapIdle/ImapIdle/Program.cs
一切正常,我已经用过了。您只需要下载一些库。
我有一个代码可以将收到的消息读取到邮件中,但我想创建一个触发器,以便在收到某些消息时发生某些操作。例如,您可以简单地创建一个控制台应用程序,触发器将为 Console.WriteLine("New message");
当然,理想情况下,也是阅读此消息,但我以后已经可以自己阅读了。我不知道如何实现通知。
我将添加我工作的代码,但在这种情况下,它似乎没有帮助。我是 Imap 的新手。如果有任何帮助和建议,我将不胜感激。
static void GetItems()
{
ExchangeService service;
String pattern = "file:///C:/Users/";
service = new ExchangeService
{
Credentials = new WebCredentials("mail", "password")
};
FolderView view = new
FolderView(10);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
view.PropertySet.Add(FolderSchema.DisplayName);
service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
SearchFilter searchFilter = new SearchFilter.IsGreaterThan(FolderSchema.TotalCount, 0);
view.Traversal = FolderTraversal.Deep;
FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.Inbox, searchFilter, view);
foreach (Folder f in findFolderResults)
{
Console.WriteLine("Handling folder: " + f.DisplayName);
SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, true));
ItemView view1 = new ItemView(1);
FindItemsResults<Item> findEmailResults = service.FindItems(f.Id, sf, view1);
foreach (Item i in findEmailResults)
{
Console.WriteLine("Processing email: " + i.Subject);
}
}
}
我建议改用 Graph API 而不是 EWS,Use the Microsoft Graph API to get change notifications。
EWS 支持通知。它允许推送、拉取和流式传输通知,任何在您的特定情况下有意义的内容。
从 Notification subscriptions, mailbox events, and EWS in Exchange 开始。
所以,我对这个 mail-notification 系统进行了自己的研究,并找到了一篇非常好的文章和代码。
这是文章: MailKit : Obtaining new mail notification from IMAP server
这是 mail-notification 的代码: https://github.com/jstedfast/MailKit/blob/6c813d02617edc3e3de5481a413b1e2fb43bfe8c/samples/ImapIdle/ImapIdle/Program.cs
一切正常,我已经用过了。您只需要下载一些库。