public static async Task<SendMessageResponse> SendMessageAsync(string accessToken, SendMessageRequest sendMessageRequest) { var sendMessageResponse = new SendMessageResponse { Status = SendMessageStatusEnum.NotSent }; using (var client = new HttpClient()) { using (var request = new HttpRequestMessage(HttpMethod.Post, Settings.SendMessageUrl)) { request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); request.Content = new StringContent(JsonConvert.SerializeObject(sendMessageRequest), Encoding.UTF8, "application/json"); using (HttpResponseMessage response = await client.SendAsync(request)) { if (response.IsSuccessStatusCode) { sendMessageResponse.Status = SendMessageStatusEnum.Sent; sendMessageResponse.StatusMessage = null; } else { sendMessageResponse.Status = SendMessageStatusEnum.Fail; sendMessageResponse.StatusMessage = response.ReasonPhrase; } } } } return sendMessageResponse; }
public static async Task<SendMessageResponse> SendMessageAsync(string accessToken, SendMessageRequest sendMessageRequest, string username) { var message = new MimeMessage(); //message.From.Add(new MailboxAddress(sendMessageRequest.Message.)); foreach (var to in sendMessageRequest.Message.ToRecipients) { message.To.Add(new MailboxAddress(to.EmailAddress.Name, to.EmailAddress.Address)); } message.Subject = sendMessageRequest.Message.Subject; var builder = new BodyBuilder(); // Set the plain-text version of the message text //builder.TextBody = @""; // Set the html version of the message text builder.HtmlBody = sendMessageRequest.Message.Body.Content; // Now we just need to set the message body and we're done message.Body = builder.ToMessageBody(); var encodedEmail = Base64UrlEncode(message.ToString()); var url = $"https://www.googleapis.com/upload/gmail/v1/users/{username}/messages/send?uploadType=media"; var sendMessageResponse = new SendMessageResponse { Status = SendMessageStatusEnum.NotSent }; using (var client = new HttpClient()) { using (var request = new HttpRequestMessage(HttpMethod.Post, url)) { request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); request.Content = new StringContent(encodedEmail, Encoding.UTF8, "message/rfc822"); using (var response = await client.SendAsync(request)) { if (response.IsSuccessStatusCode) { sendMessageResponse.Status = SendMessageStatusEnum.Sent; sendMessageResponse.StatusMessage = null; } else { sendMessageResponse.Status = SendMessageStatusEnum.Fail; sendMessageResponse.StatusMessage = response.ReasonPhrase; } } } } return sendMessageResponse; }