public async Task <int> SyncEmails() { //Create a GmailService which crucial for accecing Gmail API. GmailService service = await this.GetServiceAsync(); //Get all the messages from INBOX which are mark with UNREAD label. ListMessagesResponse emailListResponse = await GetNewEmailsAsync(service); if (emailListResponse != null && emailListResponse.Messages != null) { foreach (var email in emailListResponse.Messages) { var emailInfoRequest = service.Users.Messages.Get(gmailAccountName, email.Id); //After executeAsync we recieve one email with all his data and attachments. var currentMessage = await emailInfoRequest.ExecuteAsync(); var emailDTO = this.messageToEmailDTOPmapper.MapToDTO(currentMessage); await emailService.CreateAsync(emailDTO); await this.MarkAsReadAsync(service, email.Id); } return(emailListResponse.Messages.Count); } return(0); }
/// <summary> /// Lists ALL messages in the user's mailbox according to the parameters /// </summary> /// <param name="userId">The user's email address. The special value "me" can be used to indicate the authenticated user.</param> /// <param name="includeSpamTrash">Include messages from SPAM and TRASH in the results. (Default: false)</param> /// <param name="labelIds">Only return messages with labels that match all of the specified label IDs.</param> /// <param name="maxResults">Maximum number of messages to return.</param> /// <param name="query">Only return messages matching the specified query. Supports the same query format as the Gmail search box. For example, "from:[email protected] rfc822msgid:<*****@*****.**> is:unread". Parameter cannot be used when accessing the api using the gmail.metadata scope.</param> /// <returns></returns> public List <Message> ListAllMessages(bool?includeSpamTrash = null, IEnumerable <string> labelIds = null, int?maxResults = null, string query = null) { List <Message> messages = new List <Message>(); UsersResource.MessagesResource.ListRequest request = GmailService.Users.Messages.List("me"); request.Q = query == null ? null : query; request.IncludeSpamTrash = includeSpamTrash == null ? false : includeSpamTrash; request.LabelIds = labelIds == null ? null : new Google.Apis.Util.Repeatable <string>(labelIds); request.MaxResults = maxResults == null ? null : maxResults; do { try { ListMessagesResponse response = request.Execute(); messages.AddRange(response.Messages); request.PageToken = response.NextPageToken; } catch (Exception ex) { Console.WriteLine($"An error occurred: {ex.Message}"); } } while (!String.IsNullOrEmpty(request.PageToken)); return(messages); }
private List <Message> GetMessages(GmailService service, string[] labels = null, string query = null, string userId = "me") { List <Message> result = new List <Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); if (labels != null) { request.LabelIds = labels; } if (!string.IsNullOrWhiteSpace(query)) { request.Q = query; } do { try { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); request.PageToken = response.NextPageToken; } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); } } while (!string.IsNullOrEmpty(request.PageToken)); return(result); }
public static List <Google.Apis.Gmail.v1.Data.Message> ListInboxMessages(GmailService service, String query) { List <Google.Apis.Gmail.v1.Data.Message> result = new List <Google.Apis.Gmail.v1.Data.Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(_userId); request.Q = query; request.LabelIds = "INBOX"; do { try { ListMessagesResponse response = request.Execute(); if (response.Messages != null && response.Messages.Count > 0) { result.AddRange(response.Messages); request.PageToken = response.NextPageToken; } } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); } } while (!String.IsNullOrEmpty(request.PageToken)); return(result); }
public List <Message> GetAllMessageIds() { List <Message> result = new List <Message>(); String query = "from: [email protected]"; UsersResource.MessagesResource.ListRequest request = this.user.GmailService.GmailService.Users.Messages.List(this.user.Email); request.Q = query; do { try { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); request.PageToken = response.NextPageToken; } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); } } while (!String.IsNullOrEmpty(request.PageToken)); return(result); }
public ListMessagesResponse MyInbox(long UserId) { ListMessagesResponse response = new ListMessagesResponse(); try { using (IDbConnection conn = GetConnection()) { response.messages = conn.GetList <Messages>("where RecipientID = ?UserId", new { UserId }).ToList(); if (response.messages.Count > 0) { response.Status = true; response.Description = "Successful"; } else { response.Status = false; response.Description = "No data"; } } } catch (Exception ex) { response.Status = false; response.Description = ex.Message; } return(response); }
/// <summary> /// List all Messages of the user's mailbox matching the query. /// </summary> /// <param name="query">String used to filter Messages returned.</param> public List <Message> ListMessages(GmailSearch query) { if (query == null) { throw new ArgumentNullException(nameof(query)); } List <Message> result = new List <Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); if (query.Label != null && query.Label.Any()) { request.LabelIds = new Repeatable <string>(GmailApiHelper.GetLabel(query.Label)); } request.Q = query.ToString(); do { ListMessagesResponse response = request.Execute(); if (response.Messages != null) { result.AddRange(response.Messages); } if (response.NextPageToken != null) { request.PageToken = response.NextPageToken; } }while (!string.IsNullOrEmpty(request.PageToken)); return(result); }
public List <Message> ListMessages(GmailService service, string userId) { List <Message> result = new List <Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); request.PageToken = response.NextPageToken; //var firstMessage = service.Users.Messages.Get(userId, result.First().Id).Execute(); var payload = new StringBuilder(); var emailsWithComponents = new List <Email>(); foreach (var message in result) { var email = new Email(); email.OriginalId = message.Id; foreach (var part in message.Payload.Parts) { byte[] data = FromBase64ForUrlString(part.Body.Data); string decodedString = Encoding.UTF8.GetString(data); payload.Append(decodedString); } } var mailMessage = payload.ToString(); return(result); }
// Send request for retrieving all emails of the given label with an optional search parameter. public static IList <Message> ListMessages(GmailService service, String userId, MessageLabel label, string query = null) { List <Message> result = new List <Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); request.LabelIds = label.ToString(); if (query != null) { request.Q = query; } do { try { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); } } while (!String.IsNullOrEmpty(request.PageToken)); return(result); }
public async void SynchronizeMails(ListMessagesResponse emailListResponse, List <Mail> MailsInDB) { try { GmailService gmailService = await GetGmailService(); foreach (Message msg in emailListResponse.Messages) { var emailInfoRequest = gmailService.Users.Messages.Get("*****@*****.**", msg.Id); //make another request for that email id... var emailInfoResponse = await emailInfoRequest.ExecuteAsync(); if (emailInfoResponse != null) { if (MailExistsinDB(emailInfoResponse, MailsInDB) == false) { await InsertMailIntoDB(emailInfoResponse); } } } } catch (Exception ex) { } }
public ListMessagesResponse ListByThreadID(string ThreadID) { ListMessagesResponse response = new ListMessagesResponse(); try { using (IDbConnection conn = GetConnection()) { response.messages = conn.GetList <Messages>("Where ThreadID = ?ThreadID", new { ThreadID }).ToList(); if (response.messages.Count > 0) { response.Status = true; response.Description = "Successful"; } else { response.Status = false; response.Description = "No data"; } } } catch (Exception ex) { response.Status = false; response.Description = ex.Message; } return(response); }
/// <summary> /// Populates the email queue and delete email asynchronous. /// </summary> /// <param name="response">The response.</param> /// <exception cref="ArgumentNullException">Response from email {nameof(response)} is null</exception> private async Task PopulateEmailQueueAndDeleteEmailAsync(ListMessagesResponse response, bool deleteEmail = true) { try { if (response is null) { throw new ArgumentNullException($"Response from email {nameof(response)} is null "); } int counter = 0; foreach (Message mail in response.Messages) { counter++; var message = await GoogleServiceHelper.UsersResource.Messages.Get(USER_ID, mail.Id).ExecuteAsync(); LabelSpecificEmails.Enqueue(message); LogInformation($"Adding emails to queue [ {counter} / {response.Messages.Count} ]"); if (deleteEmail) { await GoogleServiceHelper.UsersResource.Messages.Trash(USER_ID, mail.Id).ExecuteAsync(); LogInformation($"Deleting email [ {counter} / {response.Messages.Count} ]"); } } } catch (Exception e) { LogError(e); throw; } }
static void Main(string[] args) { UserCredential credential; using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { // The file token.json stores the user's access and refresh tokens, and is created // automatically when the authorization flow completes for the first time. string credPath = "token.json"; credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create Gmail API service. var service = new GmailService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); gmail gmail = new gmail(service); ListMessagesResponse MessagesList = gmail.getUnreadedMwssages(); foreach (var message in MessagesList.Messages) { var messageData = gmail.getMessageData(message.Id); foreach (var data in messageData.Payload.Headers) { if (data.Name == "From") { string sender = data.Value.Substring(data.Value.IndexOf("<")).Replace("<", "").Replace(">", ""); user user = new user(sender); int checkIndicator = user.check(); if (checkIndicator != 0) { break; } string attachmentId = messageData.Payload.Parts[1].Body.AttachmentId; string fileName = messageData.Payload.Parts[1].Filename; if (attachmentId != null && messageData.Payload.Parts[1].MimeType == "application/vnd.ms-excel") { fileName = fileName.Substring(0, fileName.IndexOf(".")); byte[] b = gmail.getAttachment(attachmentId, message.Id); string root = @"D:\gmail-store.net\gmail store\public\"; if (!Directory.Exists(root + fileName + @"\")) { Directory.CreateDirectory(root + fileName + @"\"); } File.WriteAllBytes(@"D:\gmail-store.net\gmail store\public\" + fileName + @"\" + sender + ".xls", b); } } } } }
private IList <Message> RetrieveMessagesInfoByFilter(string filterQuery) { UsersResource.MessagesResource.ListRequest request = this.service.Users.Messages.List("me"); request.Q = filterQuery; ListMessagesResponse res = request.Execute(); return(res.Messages); }
public async Task <int> calculateNewMails() { int x = 0; ListMessagesResponse MailsInGmail = await GetMailsFromGmail(); ListResultDto <MailListDTO> MailsInDB = GetMails(); x = (MailsInGmail.Messages.Count()) - (MailsInDB.Items.Count()); return(x); }
public IEnumerable <MailEntity> GetTransactionDetails(ListMessagesResponse listMessages, GmailService service) { foreach (var email in listMessages.Messages) { entity = new MailEntity(); var emailInfoRequest = service.Users.Messages.Get("me", email.Id); var emailInfoResponse = emailInfoRequest.Execute(); if (emailInfoResponse != null) { String from = ""; String date = ""; String subject = ""; //loop through the headers to get from,date,subject, body foreach (var mParts in emailInfoResponse.Payload.Headers) { if (mParts.Name == "Date") { int index = mParts.Value.LastIndexOf(':') + 3; string datepulled = mParts.Value.Remove(index, mParts.Value.Length - index); DateTime dt; while (!DateTime.TryParse(datepulled, out dt)) { datepulled = datepulled.Remove(0, 1); } entity.DOT = Convert.ToDateTime(datepulled); //datepulled = datepulled.Remove(index, datepulled.Length - index).Trim(); entity.DOT = Convert.ToDateTime(datepulled); } else if (mParts.Name == "From") { entity.From = mParts.Value; } else if (mParts.Name == "Subject") { entity.Subject = mParts.Value; } if (entity.DOT != null && !string.IsNullOrWhiteSpace(entity.From) && emailInfoResponse.Payload.Body != null && !string.IsNullOrWhiteSpace(entity.Subject)) { if (emailInfoResponse.Payload.MimeType == "text/html") { byte[] data = FromBase64ForUrlString(emailInfoResponse.Payload.Body.Data); entity.Body = Encoding.UTF8.GetString(data); lstentity.Add(entity); } } } } } return(lstentity); }
public async Task SyncMails() { try { ListMessagesResponse emailListResponse = await GetMailsFromGmail(); _iMailRepository.SynchronizeMails(emailListResponse, GetAllList()); } catch (Exception ex) { } }
/// <summary> /// List all Messages of the user's mailbox matching the query. /// </summary> /// /// /// <param name="service">Gmail API service instance.</param> /// <param name="userId">User's email address. The special value "me" /// can be used to indicate the authenticated user.</param> /// <param name="query">String used to filter Messages returned.</param> public List <Message> ListMessages(String userId, String query) { // If modifying these scopes, delete your previously saved credentials // at ~/.credentials/gmail-dotnet-quickstart.json string[] Scopes = { GmailService.Scope.GmailModify, GmailService.Scope.GmailReadonly, GmailService.Scope.MailGoogleCom }; string ApplicationName = "Gmail API .NET Quickstart"; UserCredential credential; using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials/gmail-dotnet-quickstart.json"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create Gmail API service var service = new GmailService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); List <Message> result = new List <Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); request.Q = query; do { try { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); request.PageToken = response.NextPageToken; } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); } } while (!String.IsNullOrEmpty(request.PageToken)); foreach (var item in result) { Console.WriteLine(item); } return(result); }
public async Task <IActionResult> GetListEmail(string labelId, string nameLabel) { string userEmail = User.FindFirst(u => u.Type == ClaimTypes.Email).Value; GmailService service = GetService(); List <My_Message> listMessages = new List <My_Message>(); List <Message> result = new List <Message>(); var emailListRequest = service.Users.Messages.List(userEmail); emailListRequest.LabelIds = labelId; emailListRequest.IncludeSpamTrash = false; emailListRequest.MaxResults = 1000; ListMessagesResponse emailListResponse = await emailListRequest.ExecuteAsync(); if (emailListResponse != null && emailListResponse.Messages != null) { foreach (Message email in emailListResponse.Messages) { var emailInfoRequest = service.Users.Messages.Get(userEmail, email.Id); var emailInfoResponse = await emailInfoRequest.ExecuteAsync(); if (emailInfoResponse != null) { message = new My_Message(); message.Id = listMessages.Count + 1; message.EmailId = email.Id; foreach (var mPart in emailInfoResponse.Payload.Headers) { if (mPart.Name == "Date") { message.Date_Received = mPart.Value; } else if (mPart.Name == "From") { message.From = mPart.Value; emailTo = mPart.Value; } else if (mPart.Name == "Subject") { message.Title = mPart.Value; } } listMessages.Add(message); } } } ViewBag.Message = nameLabel; return(View("~/Views/Home/Index.cshtml", listMessages)); }
/// <summary> /// List all Messages of the user's mailbox matching the query. /// </summary> /// <param name="service">Gmail API service instance.</param> /// <param name="userId">User's email address. The special value "me" /// can be used to indicate the authenticated user.</param> /// <param name="query">String used to filter Messages returned.</param> public List <Google.Apis.Gmail.v1.Data.Message> ListMessages(string box) { using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read)) { // The file token.json stores the user's access and refresh tokens, and is created // automatically when the authorization flow completes for the first time. string credPath = "token.json"; credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; //Console.WriteLine("Credential file saved to: " + credPath); } // Create Gmail API service. var service = new GmailService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); List <Google.Apis.Gmail.v1.Data.Message> result = new List <Google.Apis.Gmail.v1.Data.Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List("me"); request.LabelIds = box; //request.Q = query; long max = 200; request.MaxResults = max; do { try { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); request.PageToken = response.NextPageToken; } catch (Exception e) { Debug.WriteLine(" 4 An error occurred: " + e.Message); } } while (!String.IsNullOrEmpty(request.PageToken)); return(result); }
public static List<Message> GetMessagesList(GmailService service, string userId) { List<Message> result = new List<Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); do { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); request.PageToken = response.NextPageToken; } while (!string.IsNullOrEmpty(request.PageToken)); return result; }
/// <summary> /// List all Messages of the user's mailbox matching the query. /// </summary> /// <param name="service">Gmail API service instance.</param> /// <param name="userId">User's email address. The special value "me" /// can be used to indicate the authenticated user.</param> /// <param name="query">String used to filter Messages returned.</param> static List <Message> ListMessages(GmailService service, String userId, String query) { List <Message> result = new List <Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); request.Q = query; do { try { ListMessagesResponse response = request.Execute(); string listfile = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().Location) + ".list"; string[] SavedId = { "0" }; if (File.Exists(listfile)) { SavedId = File.ReadAllLines(listfile); } // исключаем сообщения, выгруженные ранее var messages = response.Messages.Where(m => !SavedId.Contains(m.Id)); if (messages != null && messages.ToList().Count > 0) { result.AddRange(messages); } request.PageToken = response.NextPageToken; } catch (Exception e) { string error = e.Message; if (e.InnerException != null) { error = e.InnerException.Message; } string logfile = Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetExecutingAssembly().Location) + ".log"; WriteErrorToLog(logfile, e.ToString()); Console.WriteLine(e.Message); } } while (!String.IsNullOrEmpty(request.PageToken)); return(result); }
public List <ListMessagesResponse> ListMessage(Guid idConversation) { try { var result = new List <ListMessagesResponse>(); var dataConversation = _conversationRepository.GetInclude(x => x.Id == idConversation, includes: source => source.Include(x => x.Participant) .ThenInclude(y => y.StatusNavigation) .Include(x => x.Messages) .ThenInclude(y => y.StatusNavigation) ).FirstOrDefault(); if (dataConversation != null) { var userSender = dataConversation.Messages .Select(x => x.Conversation.UserCreator); var userReciever = dataConversation.Messages .Select(x => x.Participant.UserAccount); var allUserConvensation = _userApiService.GetUsers(userSender.Union(userReciever).Distinct().ToList()); dataConversation.Messages.ToList().ForEach(item => { var tmp = new ListMessagesResponse { Title = item.Conversation.Title, ContentMessage = item.ContentMessage, Sender = allUserConvensation.Where(x => x.Id == item.Conversation.UserCreator).FirstOrDefault(), Reciever = allUserConvensation.Where(x => x.Id == item.Participant.UserAccount).FirstOrDefault(), StatusConversation = item.Conversation.IsActive == true ? "Open" : "Closed", StatusMessage = item.StatusNavigation.Name, Status = item.Participant.StatusNavigation.Name }; result.Add(tmp); }); } return(result); } catch (Exception ex) { throw ex; } }
/*Retrieves a list of messages given the userId, query, and max results to be returned */ public static List <MessageG> ListMessages(GmailService service, String userId, String query, int maxResults) { List <MessageG> result = new List <MessageG>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); request.MaxResults = maxResults; //request.Q = query; //sets Query try { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); } catch (Exception e) { Debug.WriteLine("An error occured: " + e.Message); } return(result); }
/// <summary> /// This public method will retrive the number of gmails that are in the Gmail Inbox of the user email especified in this class. /// </summary> /// <returns></returns> public int get_number_of_Gmails() { // Get a credential using our certificate. ServiceAccountCredential cred = get_GmailCred(); // instantiate a service object. GmailService service = new GmailService(new BaseClientService.Initializer() { HttpClientInitializer = cred }); // execute our request and store the list returned from google. ListMessagesResponse response = service.Users.Messages.List(ProudSourceEmail).Execute(); // return the count of mesages in the list returned to us. return(response.Messages.Count); }
public static List <Message> ListMessages(GmailService service, string userId, string query) { List <Message> result = new List <Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId); request.Q = query; do { try { ListMessagesResponse response = request.Execute(); result.AddRange(response.Messages); request.PageToken = response.NextPageToken; } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); } }while (!string.IsNullOrEmpty(request.PageToken)); return(result); }
public Stack <string> GetMessages(string query, ref string lastId) { UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(email); if (!String.IsNullOrEmpty(query)) { request.Q = query; // "label:отчеты-aliter-axi"; } request.MaxResults = Int32.MaxValue; Stack <string> buffer = new Stack <string>(); string first = String.Empty; do { ListMessagesResponse response = request.Execute(); IList <Message> messages = response.Messages; if (messages == null) { return(buffer); } request.PageToken = response.NextPageToken; if (!String.IsNullOrEmpty(lastId)) { foreach (Message mes in messages) { if (mes.Id == lastId) { return(buffer); } buffer.Push(mes.Id); ++allMessages; } } else { foreach (Message mes in messages) { buffer.Push(mes.Id); ++allMessages; } } } while (!String.IsNullOrEmpty(request.PageToken)); return(buffer); }
/// <summary> /// List all Messages of the user's mailbox matching the query. /// </summary> /// <param name="service">Gmail API service instance.</param> /// <param name="userId">User's email address. The special value "me" /// can be used to indicate the authenticated user.</param> /// <param name="query">String used to filter Messages returned.</param> private void ListMessages(String query) { UsersResource.MessagesResource.ListRequest request = gs.Users.Messages.List("me"); request.Q = query; do { try { ListMessagesResponse response = request.Execute(); Messages.AddRange(response.Messages); request.PageToken = response.NextPageToken; } catch (Exception e) { Console.WriteLine("An error occurred: " + e.Message); } } while (!String.IsNullOrEmpty(request.PageToken)); }
/// <summary> /// List all Messages of the user's mailbox matching the query. /// </summary> /// <param name="query">String used to filter Messages returned. By default, /// returns the full email message data with body content parsed in the payload field.</param> private List <GmailMessage> ListMessages(string query = "") { var messages = new List <GmailMessage>(); var request = _gmailService.Users.Messages.List(UserId); request.Q = query; do { ListMessagesResponse response = request.Execute(); if (response.Messages == null) { return(null); } messages.AddRange(response.Messages); request.PageToken = response.NextPageToken; }while (!string.IsNullOrEmpty(request.PageToken)); return(messages); }
//Mail important public List<MesImportant> getMesImportant(UserCredential credential) { // Create Gmail API service. var service = new GmailService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); //get Message id and threadid List<Message> resultMes = new List<Message>(); UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List("me"); request.LabelIds = "INBOX"; request.LabelIds = "IMPORTANT"; ListMessagesResponse response = request.Execute(); resultMes.AddRange(response.Messages); request.PageToken = response.NextPageToken; //get Detail Message List<Message> resultDetail = new List<Message>(); foreach (var item in resultMes) { Message mes = new Message(); Message mesd = service.Users.Messages.Get("me", item.Id).Execute(); mes.Snippet = mesd.Snippet; mes.Id = mesd.Id; mes.LabelIds = mesd.LabelIds; mes.Payload = mesd.Payload; resultDetail.Add(mes); } List<MesImportant> mesLHeader = new List<MesImportant>(); foreach (Message itemmes in resultDetail) { MesImportant mes = new MesImportant(); mes.idimportant = itemmes.Id; mesLHeader.Add(mes); } return mesLHeader; }