Esempio n. 1
0
        public async Task <Data.Entities.Email> Save(Data.Entities.Email record)
        {
            if (record.EmailId <= 0)
            {
                await _dbContext.AddAsync(record);
            }
            else
            {
                _dbContext.Update(record);
            }

            await _dbContext.SaveChangesAsync();

            return(record);
        }
Esempio n. 2
0
        public static List <Data.Entities.Email> getGMailEmail(string inboxPath, string username, string password)
        {
            List <Data.Entities.Email> emails = new List <Data.Entities.Email>();

            Data.Entities.Email email = null;

            bool isHtml = true;

            ImapX.ImapClient client = new ImapX.ImapClient("imap.gmail.com", 993, true);
            bool             result = false;

            result = client.Connection();


            result = client.LogIn(username, password);
            if (result)
            {
                ImapX.FolderCollection folders = client.Folders;

                ImapX.MessageCollection messages = client.Folders["export"].Search("ALL", true);                        // .Search("export", true); //true - means all message parts will be received from server

                if (messages != null && messages.Count > 0)
                {
                    for (int i = 0; i < messages.Count; i++)
                    {
                        email          = new Data.Entities.Email();
                        email.From     = messages[i].From.DisplayName;
                        email.Subject  = messages[i].Subject;
                        email.TextBody = messages[i].GetDecodedBody(out isHtml);

                        //email.TextBody = messages[i].TextBody.TextData;
                        email.ReceivedDate = messages[i].Date;


                        emails.Add(email);
                    }
                }
            }

            return(emails);
        }
Esempio n. 3
0
        public static List<Data.Entities.Email> getGMailEmail(string inboxPath, string username, string password)
        {
            List<Data.Entities.Email> emails = new List<Data.Entities.Email>();
            Data.Entities.Email email = null;

            bool isHtml = true;

            ImapX.ImapClient client = new ImapX.ImapClient("imap.gmail.com", 993, true);
            bool result = false;

            result = client.Connection();

            result = client.LogIn(username, password);
            if (result) {
                ImapX.FolderCollection folders = client.Folders;

                ImapX.MessageCollection messages = client.Folders["export"].Search("ALL", true);	// .Search("export", true); //true - means all message parts will be received from server

                if (messages != null && messages.Count > 0) {
                    for (int i = 0; i <  messages.Count; i++) {
                        email = new Data.Entities.Email();
                        email.From = messages[i].From.DisplayName;
                        email.Subject = messages[i].Subject;
                        email.TextBody = messages[i].GetDecodedBody(out isHtml);

                        //email.TextBody = messages[i].TextBody.TextData;
                        email.ReceivedDate = messages[i].Date;

                        emails.Add(email);
                    }
                }
            }

            return emails;
        }
        public async Task <IActionResult> Post([FromBody] EmailRequest model)
        {
            Data.Entities.Email newRecord = null;

            if (ModelState.IsValid)
            {
                InitUserCredentials();

                newRecord = new Data.Entities.Email
                {
                    Guid             = Guid.NewGuid(),
                    CompanyGuid      = CompanyGuid,
                    CreationTime     = DateTime.UtcNow,
                    CreationUserGuid = UserGuid
                };

                newRecord = _mapper.Map(model, newRecord);

                try
                {
                    User user = await _userService.Get((Guid)model.ToUserGuid);

                    if (user != null)
                    {
                        var toEmailAddress = user.Email;

                        #if !RELEASE
                        toEmailAddress = "*****@*****.**";
                        #endif

                        var response = await _sendGridService.SendEmail(new SendGridRequest
                        {
                            To = new [] { new EmailAddress(toEmailAddress) },
                            DynamicTemplateData = new SendGridDynamicData
                            {
                                TicketGuid = (Guid)model.TicketGuid
                            },
                            Template = (Enumerations.SendGridTemplateEnum)model.SendGridTemplate
                        });

                        if (response.StatusCode != HttpStatusCode.BadRequest)
                        {
                            var messageKvp = response.Headers.FirstOrDefault(x => x.Key == "X-Message-Id");

                            if (messageKvp.Value.Any())
                            {
                                newRecord.SendGridId = messageKvp.Value.FirstOrDefault();
                            }

                            await _emailService.Save(newRecord);
                        }
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e.StackTrace);
                    throw;
                }
            }

            return(CreatedAtAction(nameof(Post), _mapper.Map(newRecord, new EmailResponse())));
        }