Example #1
0
        public void Start()
        {
            try
            {
                logger.Info("Iniciando Email Manager...");
                if (ConfigurationManager.AppSettings.AllKeys.Contains("SmtpServer"))
                {
                    _server = ConfigurationManager.AppSettings["SmtpServer"].ToString();
                }
                else
                {
                    throw new Exception("Parametro SmtpServer nao encontrado!!!");
                }

                if (ConfigurationManager.AppSettings.AllKeys.Contains("SmtpPort"))
                {
                    _port = Convert.ToInt32(ConfigurationManager.AppSettings["SmtpPort"].ToString());
                }
                else
                {
                    throw new Exception("Parametro SmtpPort nao encontrado!!!");
                }

                if (ConfigurationManager.AppSettings.AllKeys.Contains("EmailFrom"))
                {
                    _emailFrom = ConfigurationManager.AppSettings["EmailFrom"].ToString();
                }
                if (ConfigurationManager.AppSettings.AllKeys.Contains("EmailAlert"))
                {
                    _emailAlert = ConfigurationManager.AppSettings["EmailAlert"].ToString();
                }
                if (ConfigurationManager.AppSettings.AllKeys.Contains("EmailTo"))
                {
                    _emailTo = ConfigurationManager.AppSettings["EmailTo"].ToString();
                }
                if (ConfigurationManager.AppSettings.AllKeys.Contains("EmailCc"))
                {
                    _emailCc = ConfigurationManager.AppSettings["EmailCc"].ToString();
                }
                if (ConfigurationManager.AppSettings.AllKeys.Contains("EmailCco"))
                {
                    _emailCco = ConfigurationManager.AppSettings["EmailCco"].ToString();
                }


                _db           = new DbEmail();
                _cfg          = new ConfigMailInfo();
                _cfg.SmtpHost = _server;
                _cfg.SmtpPort = _port.ToString();
                _cqEmail      = new ConcurrentQueue <TOEmail>();
                _thEmail      = new Thread(new ThreadStart(this._queueEmail));
                _thEmail.Start();

                _isRunning = true;
            }
            catch (Exception ex)
            {
                logger.Error("Problemas no start do Email Manager: " + ex.Message, ex);
            }
        }
        private async Task SendMail(MailMessage mailMessage)
        {
            var mailMessageString = JsonConvert.SerializeObject(mailMessage);
            var dbEmail           = new DbEmail
            {
                Message    = mailMessageString,
                Status     = "PROCESSING",
                RetryCount = 0
            };

            _context.DbEmails.Add(dbEmail);
            await _context.SaveChangesAsync();

            var result = await _emailClient.SendEmail(mailMessage);

            if (result.Sent)
            {
                dbEmail.UpdatedAt = DateTime.UtcNow;
                dbEmail.Status    = "SENT";
            }
            else
            {
                dbEmail.UpdatedAt   = DateTime.UtcNow;
                dbEmail.Status      = "FAILED_REQUEUED";
                dbEmail.RetryCount += 1;
            }
            _context.DbEmails.Update(dbEmail);
            await _context.SaveChangesAsync();
        }
        public void TestSendMailSendsAnEmail()
        {
            DbEmail testMail = new DbEmail();

            testMail.Sender    = "*****@*****.**";
            testMail.Recipient = "*****@*****.**";
            testMail.Subject   = "hi hinnah";
            testMail.Body      = "test";
            SendComInteropEmail email = new SendComInteropEmail();

            Assert.IsTrue(email.SendMail(testMail));
        }
        public DbEmail Convert(CsvEmail csvEmail, int id)
        {
            var dbEmail = new DbEmail
            {
                Id               = id,
                SentDate         = csvEmail.SentDateTime.Date,
                SentDateTime     = csvEmail.SentDateTime,
                RecipientAddress = RecipientAddressCleaner(csvEmail.RecipientAddress),
                SenderAddress    = csvEmail.SenderAddress,
                SenderDomain     = SenderDomain(csvEmail.SenderAddress)
            };

            return(dbEmail);
        }
Example #5
0
        public DbEmail Execute(Guid sessionID, string recipientEmail, DbJob job)
        {
            // Get userEmail
            string qry = "SELECT email FROM FDMUSER JOIN SESSIONS ON FDMUSER.user_id = SESSIONS.user_id WHERE session_guid = '" + sessionID.ToString() + "'";
            ReadOneCommand cmd = new ReadOneCommand();
            string userEmail = cmd.Execute(qry);

            DbEmail email = new DbEmail();
            email.Sender = userEmail;
            email.Recipient = recipientEmail;
            email.Subject = "Application for " + job.Title + " at " + job.Location;
            email.Body = "Hi ";

            return email;
        }
Example #6
0
        public DbEmail Execute(Guid sessionID, string recipientEmail, DbJob job)
        {
            // Get userEmail
            string         qry       = "SELECT email FROM FDMUSER JOIN SESSIONS ON FDMUSER.user_id = SESSIONS.user_id WHERE session_guid = '" + sessionID.ToString() + "'";
            ReadOneCommand cmd       = new ReadOneCommand();
            string         userEmail = cmd.Execute(qry);

            DbEmail email = new DbEmail();

            email.Sender    = userEmail;
            email.Recipient = recipientEmail;
            email.Subject   = "Application for " + job.Title + " at " + job.Location;
            email.Body      = "Hi ";

            return(email);
        }
        /// <summary>
        /// Метод для добавления email.
        /// </summary>
        /// <param name="id">Id авторизованного пользователь, инициировавшего смену</param>
        /// <param name="email">Email, который необходимо добавить.</param>
        /// <returns>Id добавленного e-mail</returns>
        public int AddEmail(string id, Email email)
        {
            if (_unitOfWork.EmailRepository.Get()
                .FirstOrDefault(c => c.Name == email.Name) != null)
            {
                throw new ValidationException(Resources.EmailDuplicate);
            }
            if (!Regex.IsMatch(email.Name, _pattern, RegexOptions.IgnoreCase)) //  TODO: change to attribute
            {
                throw new ValidationException(Resources.WrongEmailFormat);
            }
            var emails = new DbEmail()
            {
                Name = email.Name, DbUserProfileId = id
            };                                                                       //  TODO: to map

            _unitOfWork.EmailRepository.Insert(emails);
            _unitOfWork.SaveChanges();
            return(emails.Id);
        }
Example #8
0
        public void ProcessEmailPath(string path, FileWatcherConfigItem cfg)
        {
            try
            {
                StringBuilder sbAlert = new StringBuilder();
                _composeMessageAlert(ref sbAlert, "Diretorio a processar: " + path, 1);

                // Buscando os emails
                Dictionary <int, List <string> > dicEmails = new Dictionary <int, List <string> >();
                logger.Info("Buscando Emails: " + cfg.Exchange);
                switch (cfg.Type)
                {
                case TypeWatcher.BMF:
                    dicEmails = new DbEmailOracle().BuscarClienteBmf();
                    break;

                case TypeWatcher.BOVESPA:
                    dicEmails = new DbEmailOracle().BuscarClienteBovespa();
                    break;

                case TypeWatcher.POSICAO_BMF:
                    dicEmails = new DbEmail().BuscarPosicaoClienteEmail();
                    break;
                }
                if (dicEmails == null || dicEmails.Count == 0)
                {
                    logger.Error("Problemas na consulta dos emails dos clientes...");
                    return;
                }
                logger.InfoFormat("Fim busca Emails. Tipo [{0}]. Accounts: [{1}] ", cfg.NameType, dicEmails.Count);



                // Ler o diretorio com os arquivos
                if (Directory.Exists(path))
                {
                    string[] arqNames = Directory.GetFiles(path);
                    logger.Info("Numero de Arquivos: " + arqNames.Length);
                    foreach (string arqName in arqNames)
                    {
                        int idClient = this._extractIdCliente(arqName);
                        if (idClient == 0)
                        {
                            _composeMessageAlert(ref sbAlert, "ERRO. Não foi possivel extrair  IdCliente", 2);
                            logger.Error("ERRO. Impossivel buscar cliente");
                            continue;
                        }

                        string emailTo = string.Empty;
                        if (!this._getEmail(idClient, dicEmails, ref emailTo))
                        {
                            _composeMessageAlert(ref sbAlert, "Email inexistente para cliente :" + idClient, 2);
                        }
                        else
                        {
                            string msg = string.Format("FileName: [{0}] IdCliente: [{1}] Email: [{2}]", arqName, idClient.ToString("D8"), emailTo);
                            _composeMessageAlert(ref sbAlert, msg, 1);
                            TOEmail toMsg = _composeEmailMsg(_emailFrom, emailTo, arqName, cfg.Exchange, idClient.ToString(), cfg, dicEmails);
                            this.AddEmail(toMsg);
                        }
                    }
                }
                else
                {
                    _composeMessageAlert(ref sbAlert, "Diretorio nao existe!!", 2);
                }

                // Gerando mensagem de processamento
                TOEmail toEmailAlert = this._composeEmailAlert(_emailFrom, _emailAlert, _emailCc,
                                                               _emailCco, string.Format("{0} - Processamento de Arquivo", cfg.NameType));
                toEmailAlert.Msg.Body = sbAlert.ToString();
                this.AddEmail(toEmailAlert);
            }
            catch (Exception ex)
            {
                logger.Error("Problemas no processamento do diretorio de arquivos: " + path + " " + ex.Message, ex);
            }
        }