private async Task <bool> ForwardMessage(string messageID, string recipientName, string recipientAddress, string forwardMessage) { //get authorization token Authenticator authenticator = new Authenticator(); var authInfo = await authenticator.AuthenticateAsync(ExchangeResourceId); //send request through HttpClient HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri(ExchangeResourceId); //add authorization header httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await authInfo.GetAccessToken()); ForwardMessage forwardContent = new Models.ForwardMessage(); forwardContent.Comment = forwardMessage; forwardContent.ToRecipients.Add(new Recipient() { Address = recipientAddress, Name = recipientName }); StringContent postContent = new StringContent(JsonConvert.SerializeObject(forwardContent)); postContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); //send request var response = httpClient.PostAsync("/ews/odata/Me/Inbox/Messages('" + messageID + "')/Forward", postContent).Result; if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.Accepted) { return(true); } else { return(false); } }
public async Task <ActionResult> Index(LeadContactViewModel vm) { var client = await GetExchangeClient(); var contactResults = await(from i in client.Me.Contacts select i).ExecuteAsync(); var contact = contactResults.CurrentPage.Where(c => c.Id == vm.selectedSalesStaffID).SingleOrDefault(); //USE HTTPCLIENT //get authorization token Authenticator authenticator = new Authenticator(); var authInfo = await authenticator.AuthenticateAsync(ExchangeResourceId); //send request through HttpClient HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri(ExchangeResourceId); //add authorization header httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", await authInfo.GetAccessToken()); //prepare POST content for forward request ForwardMessage forwardContent = new Models.ForwardMessage(); forwardContent.Comment = "This lead has been reassigned to you"; forwardContent.ToRecipients.Add(new Recipient() { Address = contact.EmailAddress1, Name = contact.DisplayName }); //convert POST content to JSON StringContent postContent = new StringContent(JsonConvert.SerializeObject(forwardContent)); postContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); //send forward request var forwardResponse = httpClient.PostAsync("/ews/odata/Me/Inbox/Messages('" + vm.selectedLeadID + "')/Forward", postContent).Result; //delete message to remove from INBOX/Lead List //send delete request var deleteResponse = httpClient.DeleteAsync("/ews/odata/Me/Inbox/Messages('" + vm.selectedLeadID + "')").Result; //refresh leads vm.leads.Clear(); var messageResults = await(from i in client.Me.Inbox.Messages where i.Subject.Contains("[SKU:") orderby i.DateTimeSent descending select i).ExecuteAsync(); foreach (var message in messageResults.CurrentPage) { LeadInfo newContact = new LeadInfo(); newContact.ID = message.Id; newContact.email = message.From.Address; newContact.message = message.BodyPreview; newContact.dateReceived = message.DateTimeReceived.Value.DateTime; vm.leads.Add(newContact); } return(View(vm)); }