/// <summary>
		/// Modify the Labels a Message is associated with.
		/// </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="messageId">ID of Message to modify.</param>
		/// <param name="labelsToAdd">List of label ids to add.</param>
		/// <param name="labelsToRemove">List of label ids to remove.</param>
		public static Message ModifyMessage(GmailService service, String userId,
			String messageId, List<String> labelsToAdd, List<String> labelsToRemove)
		{
			ModifyMessageRequest mods = new ModifyMessageRequest();
			mods.AddLabelIds = labelsToAdd;
			mods.RemoveLabelIds = labelsToRemove;

			try
			{
				return service.Users.Messages.Modify(mods, userId, messageId).Execute();
			}
			catch (Exception e)
			{
				Console.WriteLine("An error occurred: " + e.Message);
			}

			return null;
		}
 public void SetMessageAsRead(Message message)
 {
     BackgroundWorker bgworker = new BackgroundWorker();
     bgworker.DoWork += (s, e) =>
     {
         ModifyMessageRequest mods = new ModifyMessageRequest();
         mods.RemoveLabelIds = new List<string>() { UnreadLabel };
         var modifyReq = GmailSer.Users.Messages.Modify(mods, "me", message.Id);
         modifyReq.Execute();
     };
     bgworker.RunWorkerAsync();
 }
Exemple #3
0
        public void MoveEmail(string messageDataId, string orderLabel, string processedLabel)
        {
            List <string> addLableIds    = new List <string>();
            List <string> removeLableIds = new List <string>();

            //Label the email originated from
            removeLableIds.Add(orderLabel);

            //Label the email should be  moved to
            addLableIds.Add(processedLabel);

            try
            {
                //Write the body of the request to add/remove label
                ModifyMessageRequest mods = new ModifyMessageRequest();
                mods.RemoveLabelIds = removeLableIds;
                mods.AddLabelIds    = addLableIds;

                //Format/execute the full request to move the email properly
                UsersResource.MessagesResource.ModifyRequest moveEmailRequest = Connection.Users.Messages.Modify(mods, "me", messageDataId);
                moveEmailRequest.Execute();
            }
            catch (Exception e)
            {
                _log.LogInformation("Error when trying to move email to processed folder");
                _log.LogInformation(e.Message);
            }
        }
Exemple #4
0
 public void MarkMessageAsUnread(string messageId)
 {
     var markAsReadRequest = new ModifyMessageRequest {
         RemoveLabelIds = new[] { "UNREAD" }
     };
     var response = _service.Users.Messages.Modify(markAsReadRequest, "me", messageId).Execute();
 }
Exemple #5
0
        public Message getLastMessage(DateTime dateDebut)
        {
            try
            {
                UsersResource.MessagesResource.ListRequest req = service.Users.Messages.List("me");
                req.LabelIds = "UNREAD";
                IList <Message> mes;
                if ((mes = req.Execute().Messages) == null)
                {
                    return(null);
                }
                Message retour = service.Users.Messages.Get("me", mes.First().Id).Execute();

                //verifie la date quand celle ci est présente
                long dateDebutTimeStamp = (long)(dateDebut.Date.ToUniversalTime() - new DateTime(1970, 1, 1)).TotalMilliseconds;
                if (retour.InternalDate != null && retour.InternalDate < dateDebutTimeStamp)
                {
                    return(null);
                }

                ModifyMessageRequest mods = new ModifyMessageRequest();
                var label = new List <string>();
                label.Add("UNREAD");
                mods.RemoveLabelIds = label;
                service.Users.Messages.Modify(mods, "me", retour.Id).Execute();
                return(retour);
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
                return(null);
            }
        }
        public static void MODIFY(IList <String> LabelsToAdd, IList <String> LabelsToRemove, String MessageId)
        {
            ModifyMessageRequest modify = new ModifyMessageRequest();

            modify.AddLabelIds    = LabelsToAdd;
            modify.RemoveLabelIds = LabelsToRemove;
            Message message = Gmail.Connect.service.Users.Messages.Modify(modify, "me", MessageId).Execute();
        }
Exemple #7
0
        //Removes all the labels from email with provided ID and label "UNREAD".
        public async Task MarkAsReadAsync(GmailService service, string emailId)
        {
            var markAsReadEmail = new ModifyMessageRequest {
                RemoveLabelIds = new List <string> {
                    "UNREAD"
                }
            };

            await service.Users.Messages.Modify(markAsReadEmail, gmailAccountName, emailId).ExecuteAsync();
        }
        public static bool MarkAsRead(string emailId)
        {
            GmailService service    = InitGmailConnection();
            var          markAsRead = new ModifyMessageRequest {
                RemoveLabelIds = new[] { "UNREAD" }
            };

            service.Users.Messages.Modify(markAsRead, "me", emailId).Execute();
            return(true);
        }
Exemple #9
0
        public IActionResult UpdateContent(string id, [FromBody] string content)
        {
            var request = new ModifyMessageRequest()
            {
                MessageId         = id,
                NewMessageContent = content
            };
            var response = _modifyMessage.Handle(request);

            return(Ok());
        }
Exemple #10
0
        public static IEnumerable <IList <Annonce> > GetMessages(GmailService service)
        {
            var list = service.Users.Messages.List("me");

            list.Q = "from:[email protected] is:unread";
            // List labels.
            IList <Message> labels = list.Execute().Messages;

            if (labels != null && labels.Count > 0)
            {
                foreach (var labelItem in labels)
                {
                    var messageRequest    = service.Users.Messages.Get("me", labelItem.Id);
                    var emailInfoResponse = messageRequest.Execute();
                    var tuple             = new SimpleGmailMessage();
                    if (emailInfoResponse != null)
                    {
                        // Loop through the headers and get the fields we need...
                        foreach (var mParts in emailInfoResponse.Payload.Headers)
                        {
                            if (mParts.Name == "Date")
                            {
                                tuple.Date = DateTime.Parse(mParts.Value);
                            }
                        }
                        var    part      = emailInfoResponse.Payload.Parts[0];
                        String codedBody = part.Body.Data.Replace("-", "+");
                        codedBody = codedBody.Replace("_", "/");
                        byte[] data = Convert.FromBase64String(codedBody);
                        tuple.Message = Encoding.UTF8.GetString(data);

                        List <Annonce> annonces = new List <Annonce>();
                        var            result   = tuple.Message.Split(new[] { '\r', '\n' });
                        foreach (var line in result)
                        {
                            if (line.Contains("Voir l'annonce"))
                            {
                                annonces.Add(new Annonce(tuple.Date, line.Replace(" Voir l'annonce", "").Trim()));
                            }
                        }

                        yield return(annonces);

                        ModifyMessageRequest request = new ModifyMessageRequest();
                        request.RemoveLabelIds = new List <string>();
                        request.RemoveLabelIds.Add("UNREAD");
                        var requeste = service.Users.Messages.Trash("me", labelItem.Id);
                        requeste.Execute();
                    }
                }
            }
        }
Exemple #11
0
        Task SetRead(string messageId)
        {
            ModifyMessageRequest mods = new ModifyMessageRequest
            {
                RemoveLabelIds = new List <string> {
                    "UNREAD"
                }
            };

            //TODO: add imported tag and check

            return(service.Users.Messages.Modify(mods, Constants.Me, messageId).ExecuteAsync());
        }
Exemple #12
0
        public static FormattedMessage ModifyMessageLabels(Service service, string messageId, List <string> addedLabels = null, List <string> removedLabels = null, string eTag = null)
        {
            var modifyMessageRequest = new ModifyMessageRequest
            {
                ETag           = eTag,
                AddLabelIds    = addedLabels,
                RemoveLabelIds = removedLabels
            };
            var modifyRequest   = service.GmailService.Users.Messages.Modify(modifyMessageRequest, "me", messageId);
            var messageResponse = modifyRequest.Execute();
            var getRequest      = service.GmailService.Users.Messages.Get("me", messageResponse.Id);

            messageResponse = getRequest.Execute();
            return(new FormattedMessage(messageResponse));
        }
Exemple #13
0
    public static Message ModifyMessage(GmailService service, string userId, string messageId)
    {
        var mods = new ModifyMessageRequest {
            RemoveLabelIds = new[] { Status }
        };                                                                         // заголовок, который нужно удалить

        try
        {
            return(service.Users.Messages.Modify(mods, userId, messageId).Execute());//удаляем пометку не прочитано
        }
        catch (Exception)
        {
            return(null);
        }
    }
Exemple #14
0
        /// <summary>
        /// Marks a message as unread by it's id
        /// </summary>
        public static Message MarkMessageRead(string id)
        {
            ModifyMessageRequest mod = new ModifyMessageRequest();
            mod.RemoveLabelIds = new string[] { "UNREAD" };
            try
            {
                return service.Users.Messages.Modify(mod, "me", id).Execute();
            }
            catch (Exception e)
            {
                log.Error("Error marking message as read.", e);
            }

            return null;
        }
Exemple #15
0
        private async Task <Message> GetEmailInfoAsync(GmailService service, string emailId)
        {
            var emailInfoRequest  = service.Users.Messages.Get(EmailAddress, emailId);
            var emailInfoResponse = await emailInfoRequest.ExecuteAsync();

            var markAsReadRequest = new ModifyMessageRequest {
                RemoveLabelIds = new List <string> {
                    "UNREAD"
                }
            };

            await service.Users.Messages.Modify(markAsReadRequest, "me", emailInfoResponse.Id).ExecuteAsync();

            return(emailInfoResponse);
        }
Exemple #16
0
        public static Google.Apis.Gmail.v1.Data.Message MoifyMessage(GmailService service, String userId, String messageId, List <String> labelsToAdd, List <String> labelsToRemove)
        {
            ModifyMessageRequest mods = new ModifyMessageRequest();

            mods.RemoveLabelIds = labelsToRemove;
            mods.AddLabelIds    = labelsToAdd;

            try
            {
                return(service.Users.Messages.Modify(mods, userId, messageId).Execute());
            }
            catch (Exception e)
            {
                return(null);
            }
        }
        public static Message ModifyMessage(GmailService service, String userId, String messageId, List <String> labelsToRemove)
        {
            ModifyMessageRequest mods = new ModifyMessageRequest();

            mods.RemoveLabelIds = labelsToRemove;

            try
            {
                return(service.Users.Messages.Modify(mods, userId, messageId).Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
            }

            return(null);
        }
 public static void DeleteLabel(GmailService service, String userId, String labelId, String messageId)
 {
     try
     {
         //service.Users.Labels.Delete(userId, labelId).Execute();
         ModifyMessageRequest mods = new ModifyMessageRequest();
         mods.AddLabelIds    = null;
         mods.RemoveLabelIds = new List <string> {
             "UNREAD"
         };
         service.Users.Messages.Modify(mods, userId, messageId).Execute();
     }
     catch (Exception e)
     {
         Console.WriteLine("An error occurred: " + e.Message);
     }
 }
        public async Task <Message> ModifyMessageAsync(string messageId, IList <string> labelsToAdd, IList <string> labelsToRemove, string email)
        {
            var mods = new ModifyMessageRequest();

            mods.AddLabelIds    = labelsToAdd;
            mods.RemoveLabelIds = labelsToRemove;

            try
            {
                return(await emailService.Users.Messages.Modify(mods, email, messageId).ExecuteAsync());
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);
            }

            return(null);
        }
Exemple #20
0
        public static async Task <FormattedMessage> ModifyMessageLabelsAsync(string userId, string messageId, List <string> addedLabels = null, List <string> removedLabels = null, string eTag = null)
        {
            var service = SearchServiceByUserId(userId);
            var modifyMessageRequest = new ModifyMessageRequest
            {
                ETag           = eTag,
                AddLabelIds    = addedLabels,
                RemoveLabelIds = removedLabels
            };
            var modifyRequest   = service.GmailService.Users.Messages.Modify(modifyMessageRequest, "me", messageId);
            var messageResponse = await modifyRequest.ExecuteAsync();

            var getRequest = service.GmailService.Users.Messages.Get("me", messageResponse.Id);

            messageResponse = await getRequest.ExecuteAsync();

            return(new FormattedMessage(messageResponse));
        }
Exemple #21
0
        // currently not working I get a message about permissions
        public static Google.Apis.Gmail.v1.Data.Message MarkMessageAsRead(string MessageID, GmailService service)
        {
            List <string> modsList = new List <string>(new string[] { "UNREAD" });

            ModifyMessageRequest mods = new ModifyMessageRequest();

            mods.RemoveLabelIds = modsList;

            try
            {
                return(service.Users.Messages.Modify(mods, "me", MessageID).Execute());
            }
            catch (Exception e)
            {
                Console.WriteLine("An error occurred: " + e.Message);

                throw;
            }
        }
Exemple #22
0
        public async Task MarkMessageAsReadAsync(string id)
        {
            try
            {
                ModifyMessageRequest mods           = new ModifyMessageRequest();
                List <string>        labelsToRemove = new List <string>()
                {
                    "UNREAD"
                };
                mods.RemoveLabelIds = labelsToRemove;

                var updateRequest = service.Users.Messages.Modify(
                    mods, "me", id);
                await((IClientServiceRequest <GmailMessage>)updateRequest).ExecuteAsync();
            }
            catch (GoogleApiException ex)
            {
                throw GoogleClient.HandleGoogleAPIException(ex);
            }
        }
Exemple #23
0
        private async Task TakeDataWithAttachment(Message responseMail)
        {
            var service = await Service();

            string gmailId = responseMail.Id;

            string subjectOfEmail = responseMail.Payload.Headers
                                    .FirstOrDefault(s => s.Name == "Subject").Value;

            string dateOfEmail = responseMail.Payload.Headers
                                 .FirstOrDefault(s => s.Name == "Date").Value;

            string senderOfEmail = responseMail.Payload.Headers
                                   .FirstOrDefault(s => s.Name == "From").Value;

            var attachmentLists = responseMail.Payload.Parts.Skip(1).ToList();

            if (attachmentLists.Any())
            {
                foreach (var attachment in attachmentLists)
                {
                    string fileName = attachment.Filename;
                    double fileSize = double.Parse(attachment.Body.Size.ToString());
                    fileSize /= kbDivider;

                    await this.mapper.MappGmailAttachmentIntoEmailAttachment(gmailId, fileName, fileSize);
                }

                await this.mapper.MappGmailDataIntoEmailData(gmailId, subjectOfEmail, senderOfEmail, dateOfEmail);

                var changeEmailStatus = new ModifyMessageRequest {
                    RemoveLabelIds = new List <string> {
                        "UNREAD"
                    }
                };
                await service.Users.Messages.Modify(changeEmailStatus, "*****@*****.**", gmailId).ExecuteAsync();
            }
        }
Exemple #24
0
        private async Task TakeDataFromGmail(Message responseMail)
        {
            var service = await Service();

            string gmailId = responseMail.Id;

            string subjectOfEmail = responseMail.Payload.Headers
                                    .FirstOrDefault(subject => subject.Name == "Subject").Value;

            string dateOfEmail = responseMail.Payload.Headers
                                 .FirstOrDefault(date => date.Name == "Date").Value;

            string senderOfEmail = responseMail.Payload.Headers
                                   .FirstOrDefault(sender => sender.Name == "From").Value;

            await this.mapper.MappGmailDataIntoEmailData(gmailId, subjectOfEmail, senderOfEmail, dateOfEmail);

            var changeEmailStatus = new ModifyMessageRequest {
                RemoveLabelIds = new List <string> {
                    "UNREAD"
                }
            };
            await service.Users.Messages.Modify(changeEmailStatus, "*****@*****.**", gmailId).ExecuteAsync();
        }
 public MockModifyRequest(IClientService service, ModifyMessageRequest modifyRequest, string userId, string id)
     : base(service, modifyRequest, userId, id)
 {
 }
Exemple #26
0
        public static void LoadLineups(NPGGFFLDataContext context, DateTime triggerDate)
        {
            Console.WriteLine("Getting service...");
            var service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = GetCredentials(),
                ApplicationName = ApplicationName,
            });

            var seasonWeek = context.SeasonWeeks.Where(sw => sw.StartDtm <= triggerDate && sw.EndDtm >= triggerDate).First();
            ModifyMessageRequest mods = new ModifyMessageRequest();
            mods.AddLabelIds = (new string[] { }).ToList();
            mods.RemoveLabelIds = (new string[] { "INBOX" }).ToList();

            ListLabelsResponse response = service.Users.Labels.List(UserId).Execute();
            foreach (Label label in response.Labels)
            {
                if (label.Name.ToUpper().Equals(string.Format("WEEK {0}", seasonWeek.WeekNum)))
                {
                    mods.AddLabelIds.Add(label.Id);
                    break;
                }
            }

            Console.WriteLine("Getting messages...");
            var msgs = ListMessages(service, UserId, "label:inbox");
            foreach (var msg in msgs)
            {
                Console.WriteLine("Getting message email and body...");
                var message = service.Users.Messages.Get(UserId, msg.Id).Execute();
                var partsBody = (message.Payload.Parts == null ? message.Payload.Body.Data : message.Payload.Parts.Where(p => p.MimeType.Equals("text/plain")).First().Body.Data);
                var plainTextBody = Encoding.UTF8.GetString(Convert.FromBase64String(partsBody));
                var fromAddress = string.Empty;
                var body = string.Empty;

                //check for forward
                if (plainTextBody.Contains("Forwarded"))
                {
                    var fromLine = plainTextBody.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None).Where(l => l.Contains("From:")).FirstOrDefault();
                    MailAddress email = new MailAddress(fromLine.Substring(fromLine.IndexOf("From:")+6));
                    fromAddress = email.Address.ToUpper();

                    bool afterEmailForwardSignature = false;
                    foreach (var line in plainTextBody.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None))
                    {
                        if (line.Contains("To:"))
                        {
                            afterEmailForwardSignature = true;
                        }

                        if (afterEmailForwardSignature)
                        {
                            body += line + "\r\n";
                        }
                    }

                }
                else
                {
                    MailAddress email = new MailAddress(message.Payload.Headers.Where(h => h.Name.Equals("From")).FirstOrDefault().Value);
                    fromAddress = email.Address.ToUpper();
                    body = plainTextBody;
                }

                //Console.WriteLine("Loading Lineup..");
                //if (SaveLineup(context, fromAddress, body, seasonWeek.SeasonWeekId))
                //{
                //    //Console.WriteLine("Trash Message...");
                //    //service.Users.Messages.Trash(UserId, message.Id).Execute();
                //}

                service.Users.Messages.Modify(mods, UserId, message.Id).Execute();
            }
            Console.WriteLine("Done...");
        }
Exemple #27
0
        public IList <MailMessage> getUnreadEmails()
        {
            // The list of messages that we're going to return
            IList <MailMessage> result = new List <MailMessage>();

            // First we need to find the ID of the UNREAD label, which we'll use
            // to select all of the unread messages.
            GmailService service = new GmailService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = getGmailCred()
            });
            IList <Label> labels = service.Users.Labels.List(ProudSourceEmail).Execute().Labels;

            string unreadID = "";

            foreach (Label l in labels)
            {
                if (l.Name == "UNREAD")
                {
                    unreadID = l.Id;
                }
            }

            // This should be impossible, because UNREAD is a system label
            // rather than a user label
            if (unreadID == "")
            {
                throw new Exception();
            }

            // And now we see what messages we have.
            UsersResource.MessagesResource.ListRequest listRequest = service.Users.Messages.List(ProudSourceEmail);
            // We specify that we only want unread messages
            listRequest.LabelIds = unreadID;

            IList <Message> messages = listRequest.Execute().Messages;

            // Now we get the full messages, and add them to a list
            foreach (Message message in messages)
            {
                // We have to get each email -- we've only listed them up until this point
                result.Add(getEmail(message.Id)); UsersResource.MessagesResource.GetRequest getReq = new UsersResource.MessagesResource.GetRequest(service, "me", message.Id);
                getReq.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Full;

                Message     fullMessage    = getReq.Execute();
                MailMessage decodedMessage = convertToMailMessage(fullMessage);

                // Now we mark the message as read
                ModifyMessageRequest modMessageReq = new ModifyMessageRequest();
                // Because of the request parameters, we neeed to make a list.
                IList <string> labelIDs = new List <string>(); labelIDs.Add(unreadID);
                // We tell the request what labels we want to remove
                modMessageReq.RemoveLabelIds = labelIDs;
                // And execute
                //service.Users.Messages.Modify(modMessageReq, ProudSourceEmail, fullMessage.Id).Execute();

                result.Add(decodedMessage);
            }

            return(result);
        }