2

我想使用EWS Managed API 2.2和从Office javascript api 1.1 中的Office.context.mailbox.getCallbackTokenAsync()方法 获得的身份验证令牌 发送邮件。我也使用 asp.net web api 项目来调用 ews 函数。执行 messge.Send()方法时发生 execption 。这是代码示例和错误

public class HomeController : ApiController
        {
            string EwsUrl = "https://outlook.office365.com/EWS/Exchange.asmx";
            string rawToken = "eyJ0eXAiOiJKV1QiLCJhbGciO……WER";

            public void GetSendMailResponse()
            {
                ExchangeService service = new ExchangeService();
                service.Credentials = new OAuthCredentials(rawToken);
                service.Url = new Uri(EwsUrl);

                // Create an email message and identify the Exchange service.
                EmailMessage message = new EmailMessage(service);

                // Add properties to the email message.
                message.Subject = "Interesting";
                message.Body = "The merger is finalized.";
                message.ToRecipients.Add("aaa@aaa.com");
                message.Send();
            }
        } 

完全例外

<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The requested web method is unavailable to this caller or application.
</ExceptionMessage>
<ExceptionType>
Microsoft.Exchange.WebServices.Data.ServiceResponseException
</ExceptionType>
<StackTrace>
at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException) at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request) at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.InternalExecute() at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable`1 items, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode, ServiceErrorHandling errorHandling) at Microsoft.Exchange.WebServices.Data.ExchangeService.CreateItem(Item item, FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode) at Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable`1 messageDisposition, Nullable`1 sendInvitationsMode) at Microsoft.Exchange.WebServices.Data.EmailMessage.InternalSend(FolderId parentFolderId, MessageDisposition messageDisposition) at Microsoft.Exchange.WebServices.Data.EmailMessage.Send() at VirtruInterface.Controllers.HomeController.GetSendMailResponse() in \Controllers\HomeController.cs:line 42 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClassc.<GetExecutor>b__6(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()
</StackTrace>

4

1 回答 1

1

您从邮件应用程序中的 getCallbackTokenAsync 获得的令牌不能用于发送邮件。您只能检索当前项目或当前项目上的附件。请参阅http://msdn.microsoft.com/en-us/library/office/jj984589(v=office.1501401).aspx上的备注。

于 2014-12-27T04:50:27.557 回答