示例#1
0
        public override Task <MailReply> GetMail(MailRequest request, ServerCallContext context)
        {
            var mailReply = new MailReply();

            try
            {
                List <Core.Entities.ScrapeData> links = storageRepository.GetDailyData();
                if (CollectionHasData(links))
                {
                    var linkReply = links.Select(x => new ScrapeDataReply {
                        Title = x.Title, Url = x.Url
                    });
                    mailReply.Links.Add(linkReply);
                }
            }
            catch
            {
                //Log exception
            }

            return(Task.FromResult(mailReply));
        }
示例#2
0
 public async Task AddReply(MailReply reply)
 {
     _context.MailReplies.Add(reply);
     await _context.SaveChangesAsync();
 }
示例#3
0
        public async Task <IActionResult> replyOnMail(MailReply email)
        {
            MimeMessage message = new MimeMessage();

            // Retrieve searched email.
            MailMessage originalMessage;

            using (ImapClient imap = new ImapClient())
            {
                imap.Connect("smtp.gmail.com", 993, true);
                imap.Authenticate("*****@*****.**", "Rstest123456");

                //imap.SelectInbox();


                var inbox = imap.Inbox;
                await inbox.OpenAsync(FolderAccess.ReadWrite);


                //string search = @"SUBJECT ""Subj za test""";

                //originalMessage = imap.GetMessage(imap.SearchMessageNumbers(search).First());

                var results = await inbox.SearchAsync(SearchOptions.All, SearchQuery.SubjectContains(email.Subject)).ConfigureAwait(false);

                foreach (var uniqueId in results.UniqueIds)
                {
                    message = inbox.GetMessage(uniqueId);
                }



                //Create reply email with sender and receiver addresses swapped.
                //InternetAddressList temp = message.To;

                MailMessage replyMessage = new MailMessage();
                replyMessage.From = new MailAddress(message.From.ToString());
                replyMessage.To.Add(email.From.ToString());



                //if (!string.IsNullOrEmpty(message.MessageId))
                //{
                //    replyMessage.ReplyTo= message.MessageId;
                //    foreach (var id in message.References)
                //        replyMessage.References.Add(id);
                //    replyMessage.References.Add(message.MessageId);
                //}



                replyMessage.Headers.Add("Message-Id", message.MessageId);


                // Add 'In-Reply-To' and 'References' header.
                //replyMessage.Headers.Add(
                //new Header(HeaderId.InReplyTo, message.MessageId));
                //replyMessage.Headers.Add(
                //    new Header(HeaderId.References, message.MessageId));


                // Set subject.

                replyMessage.Subject = $"Re: { message.Subject }";


                // Set reply message message.
                replyMessage.Body = email.Message;

                // Append original message text.
                replyMessage.Body +=
                    $"<div>On {message.Date.LocalDateTime}, {message.From} </div>" +
                    $"<blockquote>{message.TextBody}</blockquote>";


                replyMessage.IsBodyHtml = true;



                // Send reply email.
                using (SmtpClient smtp = new SmtpClient("smtp.gmail.com"))
                {
                    //smtp.Connect();
                    //smtp.Authenticate("<USERNAME>", "<PASSWORD>");
                    //smtp.SendMessage(replyMessage);

                    smtp.Port = 587;
                    smtp.UseDefaultCredentials = false;
                    smtp.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "Rstest123456");
                    smtp.EnableSsl             = true;
                    smtp.Send(replyMessage);
                }
            }



            return(Ok());
        }