首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在收到新邮件时让事件侦听器监听office 365

如何在收到新邮件时让事件侦听器监听office 365
EN

Stack Overflow用户
提问于 2020-03-06 17:32:41
回答 1查看 658关注 0票数 0

我已将邮箱从exchange server迁移到office 365。

我已经编写了使用凭据连接到office 365的代码,因此我可以阅读inbox.Please中的所有电子邮件。查找以下代码

代码语言:javascript
运行
复制
 public async System.Threading.Tasks.Task test()
        {
            var pcaOptions = new PublicClientApplicationOptions
            {
                ClientId = ConfigurationManager.AppSettings["appId"],
                TenantId = ConfigurationManager.AppSettings["tenantId"],
            };

            var pca = PublicClientApplicationBuilder
                .CreateWithApplicationOptions(pcaOptions).Build();

            var ewsScopes = new string[] { "https://outlook.office.com/EWS.AccessAsUser.All" };

            try
            {
                string password = "test";
                SecureString sec_pass = new SecureString();
                Array.ForEach(password.ToArray(), sec_pass.AppendChar);
                sec_pass.MakeReadOnly();
                // Make the interactive token request
                var authResult = await pca.AcquireTokenByUsernamePassword(ewsScopes, "test@demotenant.com", sec_pass).ExecuteAsync();
                //var authResult = await pca.AcquireTokenInteractive(ewsScopes).ExecuteAsync();
                // Configure the ExchangeService with the access token
                var ewsClient = new ExchangeService();
                //ewsClient.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "test@demotenant.onmicrosoft.com");
                ewsClient.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
                ewsClient.Credentials = new OAuthCredentials(authResult.AccessToken);

                FindItemsResults<Item> result = ewsClient.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
                foreach (Item item in result)
                {
                    EmailMessage message = EmailMessage.Bind(ewsClient, item.Id);
                    String body = message.ConversationTopic;
                    String from = message.From.Address.ToString();

                }
                // Make an EWS call
                var folders = ewsClient.FindFolders(WellKnownFolderName.MsgFolderRoot, new FolderView(10));
                foreach (var folder in folders)
                {
                    Console.WriteLine($"Folder: {folder.DisplayName}");
                }
            }
            catch (MsalException ex)
            {
                Console.WriteLine($"Error acquiring access token: {ex.ToString()}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: {ex.ToString()}");
            }
        }

现在,我希望添加一个侦听器,无论何时在收件箱中接收到新邮件,都可以运行此代码。有人能建议我如何做到这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2020-03-09 07:21:35

EWS 流式传输或推送通知将是在 EWS 中执行此操作的一种方式https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/notification-subscriptions-mailbox-events-and-ews-in-exchange. 交换中的新闻。 更好的方法是在 Graph API 中使用 Webbooks 而不要使用 EWS https://docs.microsoft.com/en-us/graph/api/resources/webhooks?view=graph-rest-1.0(除非你 需要你的代码来运行 OnPrem)。 我建议的另一件事是查看 Power Automate(以前称为 Flow),它还能够在新邮件收据上触发大量操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60561173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档