在我的Silverlight 3应用程序中,我刚刚添加了一个服务引用到Exchange 2007 Web服务(EWS).这样做之后,我收到了以下警告:
自定义工具警告:未找到与Silverlight 3兼容的端点.除非通过构造函数提供端点信息,否则生成的客户端类将不可用.
因此,我无法使用Silverlight代码中的ExchangeServiceBinding(它似乎是用于调用服务的密钥类).有线索吗?
谢谢!
我正在尝试创建一个使用EWS api访问联系人的应用程序.
我需要在这个过程中查看一个outlook用户属性,但我不知道如何使用EWS.我刚试过的那一刻......
service.Url = new Uri("https://url/ews/Exchange.asmx");
service.Credentials = new WebCredentials("credentials");
var results = service.FindItems(folderId, new ItemView(100));
foreach (var item in results)
{
Contact contact = item as Contact;
foreach (var prop in contact.ExtendedProperties)
{
Console.WriteLine(prop.Value.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
哪个编译并执行没有问题,但对于每个联系人,ExtendedProperties计数为0,在outlook中约为30.
那么我怎样才能获得我正在寻找的属性?
只是一个FYI.我正在使用exhcnage 2007.
谢谢.
我们在使用EWS从Exchange删除约会时遇到问题.
我们尝试从这样删除Exchange中的约会
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Credentials = CurrentUser; // NetworkCredential
service.Url = new Uri(WebserviceAddress);
service.UseDefaultCredentials = false;
var appointment = Appointment.Bind(service, id);
deletedAppointment.Delete(DeleteMode.MoveToDeletedItems, SendCancellationsMode.SendToAllAndSaveCopy);
Run Code Online (Sandbox Code Playgroud)
我们收到一条消息"无法删除对象"的异常.
捕获到Microsoft.Exchange.WebServices.Data.ServiceResponseException消息=无法删除对象.
Source = Microsoft.Exchange.WebServices StackTrace:Microsoft.Exchange.WebServices.Data.ServiceResponse.InternalThrowIfNecessary()at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalDeleteItems(IEnumerable1 itemIds,DeleteMode deleteMode,Nullable1 sendCancellationsMode, Nullable1 affectedTaskOccurrences,ServiceErrorHandling errorHandling)at Microsoft.Exchange1 sendCancellationsMode, NullableMicrosoft.Exchange.WebServices.Data.Appointment上的Microsoft.Exchange.WebServices.Data.Item.InternalDelete(DeleteMode deleteMode,Nullable1 sendCancellationsMode, Nullable1 affectedTaskOccurrences)中的.WebServices.Data.ExchangeService.DeleteItem(ItemId itemId,DeleteMode deleteMode,Nullable 1 affectedTaskOccurrences).在OurNameSpace.ExchangeCalendar.ViewCalendars.ExchangeMethods.DeleteMeeting(ItemId id)中删除(DeleteMode deleteMode,SendCancellationsMode sendCancellationsMode)InnerException:
如果我们改为尝试使用取消会议
deletedAppointment.CancelMeeting();
Run Code Online (Sandbox Code Playgroud)
我们得到一个例外,消息"用户必须是CancelCalendarItem操作的组织者".这让我很困惑,因为当我检查deletedAppointment对象时,我的电子邮件地址被设置为组织者.
我们创建这样的会议
Appointment appointment = new Appointment(service);
appointment.Subject = subject;
appointment.Body = body; …Run Code Online (Sandbox Code Playgroud) 我们使用EWS托管API将我们的CRM与Exchange-Server同步.只要我使用EWS Mangage API 1.1,一切都很完美.现在我更新到Api 2.0(Dll-version:15.0.516.14)并且如果我从不同的线程绑定到同一个文件夹并且不明白原因,我会收到ArgumentException.
这是一个引发异常的示例代码:
private void TestAsyncFolderGet()
{
try
{
ExchangeService service = this.GetService();
Parallel.For(0, 20, (i) =>
{
Folder fo = Folder.Bind(service, WellKnownFolderName.Inbox);
});
}
catch (Exception ex)
{
this.State = "Failed: " + ex.Message;
}
}
private ExchangeService GetService()
{
ExchangeService result = new ExchangeService(ExchangeVersion.Exchange2010);
result.AutodiscoverUrl("test@foo.com");
return result;
}
Run Code Online (Sandbox Code Playgroud)
我的真实场景是我使用pullsubscription更改项目并处理更改异步.在这样做时,我绑定到父文件夹以获取一些信息.
任何人都可以帮我避免异常吗?
Stacktrace和异常信息:
System.ArgumentException:已添加具有相同键的项.
在System.Collections.Generic.Dictionary 2.Insert(TKey key, TValue value, Boolean add)
at Microsoft.Exchange.WebServices.Data.ExchangeServiceBase.SaveHttpResponseHeaders(WebHeaderCollection headers)
at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponse(IEwsHttpWebResponse response)
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable1 parentFolderIds,SearchFilter searchFilter,FolderView视图,ServiceErrorHandling errorHandlingMode)在Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId,FolderView视图)
我正在尝试编写一个小型Java客户端,以消费Microsoft Exchange服务器通过Exchange Web服务(EWS)提供的服务.为了进行试验,我从这里设置了Exchange Online帐户.
然后我配置我的Outlook客户端使用交换时新创建的邮件和outlook的测试电子邮件自动配置窗口我试图检索该客户端的Services.wsdl链接:

然后我尝试点击可用性服务网址,输入用户名和密码,然后打开以下页面:

然后我尝试点击该页面上为service.wsdl指定的url,但它给出了Page Not Found错误.所以
我正在编写一个应用程序来访问office 365中用户的数据(电子邮件,联系人,日历).所以我需要启用对外部用户的访问权限.
我已按照微软办公室的说明(http://msdn.microsoft.com/en-us/library/azure/dn132599.aspx#BKMK_MultiT)在Azure门户网站中将我的应用程序定义为多租户.
然后我必须使用Oauth2来访问数据(http://blogs.msdn.com/b/exchangedev/archive/2014/03/25/using-oauth2-to-access-calendar-contact-and-mail-api -in-exchange-online-in-office-365.aspx)
当我按照上面链接中的步骤操作时,我在第一个get请求(授权请求)的响应中收到错误:
请求发送:
GET_https://login.windows.net/ {key_provided} /的oauth2 /授权RESPONSE_TYPE =代码&CLIENT_ID = {client_id_of_my_app}&REDIRECT_URI = {redirec_uri_of_my_app}&资源= HTTPS:%2F%2foutlook.office365.com%2F&状态= 5fdfd60b-8457-4536 -b20f-fcb658d19458
响应:
{redirec_uri_of_my_app}误差= ACCESS_DENIED&ERROR_DESCRIPTION = AADSTS50034%3A +用户帐户+ + +是未注册+ + +为+的帐户.%0D%0ATrace + ID%3A + 3d9957b5-3d26-4193-b56a-0fbecd216499%0D%0ACorrelation + ID%3A + 3ff14789-ca86-47f1-A02B-baaf084c416e%0D%0ATimestamp%3A + 2014年8月14日+ 19%3A11%3a15Z&状态= 5fdfd60b-8457-4536-b20f-fcb658d19458
我可以为我的帐户的用户完美地检索身份验证代码和访问令牌,但不能为外部用户检索.
有没有人知道如何解决这个问题?
谢谢!
我的目标是获取给定文件夹中的所有电子邮件,但我不断收到属性错误:
属性Body不能在FindItem请求中使用
你能不能指出我做错了什么?下面是我使用.NET Framework 4.0的测试代码
private static void GetEmailMessageCollection(ExchangeService service)
{
ItemView view = new ItemView(100);
view.PropertySet = new PropertySet(PropertySet.FirstClassProperties);
view.PropertySet.Add(ItemSchema.HasAttachments);
view.PropertySet.Add(ItemSchema.Body);
view.PropertySet.Add(ItemSchema.DisplayTo);
view.PropertySet.Add(ItemSchema.IsDraft);
view.PropertySet.Add(ItemSchema.DateTimeCreated);
view.PropertySet.Add(ItemSchema.DateTimeReceived);
FindItemsResults<Item> findResults;
List<EmailMessage> emails = new List<EmailMessage>();
string archiveFolderID = " AQEuAAADGF6AegrId0+ekrWv0TJZtgEAZ2jpm1niGUS/jwC23X6j/AAAAgP/AAAA";
SearchFilter unreadSearchFilter = new SearchFilter.SearchFilterCollection();
Folder boundFolder = Folder.Bind(service, archiveFolderID );
findResults = boundFolder.FindItems(unreadSearchFilter, view);
foreach (var item in findResults.Items)
{
emails.Add((EmailMessage)item);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在创建一个应用程序,它将作为后台的窗口服务.此应用程序将解析收件箱中的新电子邮件并保存附件.我尝试了流媒体通知,但是当连接断开30分钟后,我想使用拉动通知.下面是我调试的代码但我在控制台上看不到任何输出.只要我运行应用程序,它就会关闭控制台窗口,因此不知道它是否正常工作.我希望在收到收件箱后立即收看新邮件,因此需要一些指导如何实现.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Exchange.WebServices.Data;
using System.Configuration;
using System.Timers;
namespace PullNotification
{
class Program
{
static void Main(string[] args)
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
WebCredentials wbcred = new WebCredentials(ConfigurationSettings.AppSettings["user"], ConfigurationSettings.AppSettings["PWD"]);
PullSubscription SubscriptionInbox;
service.Credentials = wbcred;
service.AutodiscoverUrl(ConfigurationSettings.AppSettings["user-id"], RedirectionUrlValidationCallback);
SubscriptionInbox = service.SubscribeToPullNotifications(new FolderId[] { WellKnownFolderName.Inbox }, 5/* subcription will end if the server is not polled within 5 mints*/, null/*to start a new subcription*/, EventType.NewMail, EventType.Modified);
//Timer myTimer = new Timer();
//myTimer.Elapsed += …Run Code Online (Sandbox Code Playgroud) 我正在开发一个管理邮件,联系人和用户日历的多租户Web应用程序.
在AzureAd管理门户网站上,我将我的应用程序注册为多租户,并设法为我的租户内外的人员获取OAuth令牌,在查询身份验证代码和令牌端点时将"tennantId"替换为"common".
现在,我想访问已登录并同意为我的应用授予权限的人的日历,邮件和联系信息.
我开始简单,通过查询租赁内部用户的基本用户信息,如下所示:
获取https://graph.windows.net/-tennantId-/me?api-version=2013-11-08 或GET https://graph.windows.net/-tennantId-/users/myAdress@company.com? api-version = 2013-11-08 {headers:{授权:"Bearer -accessToken-"}}
有用!
现在,我如何才能访问我租赁之外的用户信息?我试过了
获取https://graph.windows.net/-tennantId-/me?api-version=2013-11-08
获取https://graph.windows.net/-tennantId-/users/address@outside.com?api-version=2013-11-08
获取https://graph.windows.net/common/me?api-version=2013-11-08
获取https://graph.windows.net/common/users/address@outside.com?api-version=2013-11-08,
我总是最终得到400错误:{"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"请求中的域名无效网址."}}}
知道我做错了什么吗?
oauth ms-office multi-tenant exchangewebservices azure-active-directory
在EWS中,您可以创建像这样的草稿:
<tns:CreateItem MessageDisposition="SaveOnly">
<tns:Items>
<t:Message>
<t:ItemClass>IPM.Note</t:ItemClass>
<t:Subject>subject</t:Subject>
<t:Body BodyType="HTML">body</t:Body>
<t:IsRead>false</t:IsRead>
</t:Message>
</tns:Items>
</tns:CreateItem>
Run Code Online (Sandbox Code Playgroud)
我需要添加什么以创建常规消息而不是草稿,就像上面的代码一样(使用SOAP消息,而不是Managed API)?
c# ×4
.net ×2
ms-office ×2
azure ×1
email-client ×1
java ×1
multi-tenant ×1
oauth ×1
office365 ×1
outlook ×1
sharepoint ×1
silverlight ×1
soap ×1
web-services ×1
wsdl ×1
xml ×1