Tag: exchangewebservices

如何让另一个邮箱离开办公室

我正在尝试使用EWS / EWS托管API 2.0来获取给定邮箱的“外出”设置。 设置如下; 单个“服务帐户/邮箱”读取其他邮箱日历和外出设置。 日历部分很容易使用EWS托管API,但我似乎无法弄清楚如何使用API​​获取Out of Office设置。 API有一个名为GetUserOofSettings(字符串smtpAddress)的方法,但如果给定smtpAddress的调用方不属于发出请求的邮箱,则会返回拒绝访问。 因此,我尝试使用Exchange直接发布的WSDL /服务来获取Out of Office设置。 通过这样做,我可以使用GetMailTips操作获取其他邮箱的Out of Office消息,但这只占我一半的路由于我无法获得持续时间。 我的问题是:是否可以使用EWS托管API获取其他邮箱的外出设置,如果不能通过直接调用EWS服务来获得外出时间?

401订阅使用Exchange服务和OAuth的推送通知时未经授权

我正在尝试使用oauth访问EWS托管API(订阅推送通知),如下所示: var authenticationTask = await authenticationContext.AcquireTokenAsync(“https://outlook.office365.com”, new ClientCredential(clientID, clientSecret)); string targetSmtp = “user123@mydomain.onmicrosoft.com”; ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013); exchangeService.Url = someURL; exchangeService.TraceEnabled = true; exchangeService.TraceFlags = TraceFlags.All; exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, “user123@mydomain.onmicrosoft.com”); exchangeService.HttpHeaders.Add(“X-AnchorMailbox”, targetSmtp); exchangeService.Credentials = new OAuthCredentials(authenticationTask.AccessToken); PushSubscription subscription = exchangeService.SubscribeToPushNotifications( new[] { someFolder }, new Uri(postBackUrl), 15, null, EventType.NewMail, EventType.Created, EventType.Deleted, EventType.Modified, EventType.Moved, […]

该帐户无权模拟所请求的用户

我尝试访问资源邮箱时收到此错误。 请任何人帮助我。 我是EWS的新手。 我可以通过OWA(Outlook Web应用程序)访问资源邮箱。 但我不是这个邮箱的所有者,因为它是共享邮箱。 我的代码: ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack; ExchangeService newExchangeService = new ExchangeService (ExchangeVersion.Exchange2007_SP1); newExchangeService.Credentials = new NetworkCredential(username, password, domain); newExchangeService.AutodiscoverUrl(email-id, RedirectionUrlValidationCallback); newExchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, email_which_i_want_to_access); Folder visitorsFolder = Folder.Bind(newExchangeService, WellKnownFolderName.Inbox); foreach (Folder childfolder in visitorsFolder.FindFolders(new FolderView(10))) { Console.WriteLine(childfolder.DisplayName); }

searchFilter与EWS FindItems方法调用无法正常工作

我使用SearchFilter集合来限制使用EWS将请求返回到Exchange 2010邮箱的电子邮件。 我没有问题连接到服务,并打开邮箱。 问题是我的searchFilter被忽略,所有电子邮件都被请求返回给EWS。 这是我的代码: static void Main(string[] args) { ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack; //creates an object that will represent the desired mailbox Mailbox mb = new Mailbox(@”bbtest@bocuk.local”); // Find all items where the body contains “move reports”. //string qstring = “Body:\”move reports\””; // Identify the item properties to return. //view.PropertySet = new PropertySet(BasePropertySet.IdOnly, //ItemSchema.Subject); //creates […]

在构造ExtendedPropertyDefinition时,我应该使用GUID还是DefaultExtendedPropertySet.PublicStrings?

我正在使用EWS Managed API 1.2和Exchange Server 2007开发C#.NET Framework 4.5 Windows窗体应用程序,它执行某种类型的邮件同步。 既然我正在处理扩展属性,我想清楚一些事情: Q1。 DefaultExtendedPropertySet类的目的是什么? MSDN 说 “定义默认的扩展属性集”。 是否只是对扩展属性进行分组? 如果是的话,为什么首先在那里进行分组呢? 我们是否有任何Ews API方法可以获取属于项目上同一组的所有扩展属性的值? Q2。 在构造ExtendedPropertyDefinition时,我无法决定是否应该使用自定义GUID或DefaultExtendedPropertySet.PublicStrings : var MyXProp = new ExtendedPropertyDefinition( DefaultExtendedPropertySet.PublicStrings, “MyXProp”, MapiPropertyType.String); 要么 Guid MyPropertySetId = new Guid(“{C11FF724-AA03-4555-9952-FA248A11C3E}”); var extendedPropertyDefinition = new ExtendedPropertyDefinition( MyPropertySetId, “MyXProp”, MapiPropertyType.String); 应该决定上述决定的因素有哪些? 以上两种方法有何不同?

GetRoomLists成功但不返回任何数据

我使用Exchange Web服务调用GetRoomLists,我们正在运行Exchange 2010.以下代码正在通过控制台应用程序执行。 根据“无错误”的XML响应,调用成功,但不返回任何数据。 当您尝试通过Outlook约会添加一个时,我们列出了几百个房间,因此不确定为什么会发生这种情况。 我尝试使用EWS DLL版本1.2和2.0,使用默认凭据或传入凭据。 我注意到在最初发布之后,响应标题显示我们正在使用Exchange 2012 SP2,所以我尝试更新我的代码以使用该ExchangeVersion枚举值,但结果没有变化。 我已成功在此Exchange服务器上使用EWS来读取邮箱,但从未在之前使用过房间。 C# ExchangeService es = new ExchangeService(ExchangeVersion.Exchange2010); es.TraceFlags = TraceFlags.EwsResponse | TraceFlags.EwsRequest; es.TraceEnabled = true; es.UseDefaultCredentials = true; es.AutodiscoverUrl(“autodiscover@example.com”); //this collection is empty after processing EmailAddressCollection eac = es.GetRoomLists(); 来自Web服务请求/响应的XML跟踪 NoError GetRoomLists上的MSDN文档: http : //msdn.microsoft.com/en-us/library/dd899416( v = exchg.140) .aspx

Microsoft.Exchange.WebServices在VS2010中不起作用

我使用EWS ExchangeService来阅读来自outlook的电子邮件……我已经在Console项目和VS2008中编码…一切正常,因为它是……我可以阅读电子邮件。 为了与VS2010变得更加熟悉,我创建了一个控制台项目并将复制复制到VS2010项目。 所以我在Microsoft \ Exchange \ Web Services \ 1.1 \ Microsoft.Exchange.WebServices.dll文件夹中添加了引用“Microsoft.Exchange.WebServices”(版本14.2.51.0)。 一切都按原样运行,所以我看到了intellisence,我看到Exhange组件的方法属性等… 使用Microsoft.Exchange.WebServices.Data; 第一个问题: 问题: – 当我单击VS2010中的构建按钮时……我收到此错误:命名空间“Microsoft”中不存在类型或命名空间名称“Exchange”(您是否缺少程序集引用?)表单在这里,Exchange程序集的所有方法/属性都被挤压下划线… Intellisence不再适用于Exchange程序集。 当我从引用中删除程序集并重新添加时,我再次获得了Exchange程序集的intellesence …但是当我点击build时再次发生:(所以我转到我的代码并输入“Microsoft”。我看不到交换词再也出现…. 所以我不明白为什么会这样,它适用于VS2008和VS2010,它不起作用? 我认为VS的唯一方法是Framework 3.5,VS2010是V4.0 任何想法在哪里看? 以及如何解决这个问题? 第二个问题: 我需要获取电子邮件的附件..所以当电子邮件到达特殊电子邮件帐户时,我需要获取附件并将​​附件文件保存到特定文件夹。 这里最好的方法是什么? 在Console项目中创建代码并创建Windows服务项目? 或只是控制台项目或只是Classlibrry项目并添加到任务计划程序? 所以我需要一些关于如何在项目级别进行处理的建议…编程逻辑已经存在。 但正如我在第一个问题中所说,我在VS2008中使用它,但在按下Build按钮后VS2010不知道Exchange汇编。

EWS会计算所有文件夹中未读电子邮件的数量

我正在尝试从特定用户那里获取Exchange的未读电子邮件数量。 我可以从收件箱中获得大量电子邮件,如下所示: SearchFilter sf = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false)); ItemView view = new ItemView(int.MaxValue); FindItemsResults findResults = service.FindItems(WellKnownFolderName.Inbox, sf, view); int unreadCount = 0; foreach (EmailMessage i in findResults) { unreadCount++; } label1.Text = unreadCount.ToString(); 这很好用。 我也能够获得所有子文件夹的收件箱: FindFoldersResults findResults1 = service.FindFolders( WellKnownFolderName.Inbox, new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep }); foreach (Folder folder in findResults1.Folders) […]

使用OAuth进行Office 365 / EWS身份validation

我正在尝试使用OAuth和EWS托管API登录Office 365 Exchange Online。 我可以使用连接到Office 365 Web API(REST),因此我从Active Directory身份validation库(ADAL)获得了有效的令牌。 现在,我正在尝试使用EWS和TokenCredentials进行连接。 我认为代码非常简单: public static ExchangeService ConnectToServiceWithImpersonation(string token) { var service = new ExchangeService(ExchangeVersion.Exchange2013_SP1); if (true) { service.TraceListener = new TraceListener(); service.TraceFlags = TraceFlags.All; service.TraceEnabled = true; } var credentials = new TokenCredentials(token); service.Credentials = credentials; service.Url = new Uri(“https://outlook.office365.com/EWS/Exchange.asmx”); return service; } 该令牌由ADAL生成,而ADAL又使用“Office 365 API工具 – […]

在asp.net中使用EXCHANGE SERVER(Microsoft Outlook Web访问)发送邮件

我知道如何使用安装在同一台机器上的outlook发送邮件,我正在运行我的代码。 现在,这里的要求是访问我组织的Exchange服务器(Microsoft OWA),以便在asp.net代码中发送邮件。 可能吗? 如果是,那么请扔掉一些光。 日Thnx UPDATE 得到了解决方案。 在这里为任何想要帮助的人发布我的工作代码。 快乐的编码! protected void Button1_Click(object sender, EventArgs e) { ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); //service.AutodiscoverUrl(“youremailaddress@yourdomain.com”); service.Url = new Uri(“https://yourwebmailaddress.com/ews/Exchange.asmx”); service.UseDefaultCredentials = true; //service.Credentials = new WebCredentials(“username”, “password”); EmailMessage message = new EmailMessage(service); message.Subject = “My auto mail from exchange server”; message.Body = “hi everyone !”; message.ToRecipients.Add(“brad.pitt@hollywood.com”); message.Save(); […]