Exemplo n.º 1
0
        public async Task <ActionResult> EnviarEmail(MailMessageModel model)
        {
            try
            {
                SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
                client.UseDefaultCredentials = false;
                client.Credentials           = new NetworkCredential("*****@*****.**", "Id!li0cas");
                client.EnableSsl             = true;

                MailMessage mailMessage = new MailMessage();
                mailMessage.From = new MailAddress(model.Email);
                mailMessage.To.Add(model.Destinatario);
                mailMessage.IsBodyHtml = true;
                mailMessage.Body       = "<p><strong>Nome do cliente: </strong>" + model.Nome + "</p>"
                                         + "<p><strong>Email do cliente: </strong>" + model.Email + "</p>"
                                         + "<p><strong>Nº de animais: </strong>" + model.NAnimais + "</p>"
                                         + "<p><strong>Data da consulta: </strong>" + model.Data.Day + "/" + model.Data.Month + "/" + model.Data.Year + "</p>"
                                         + "<p><strong>Mensagem: </strong>" + model.Mensagem + "</p>";
                mailMessage.Subject = "SRCD - Pedido de marcação de consulta";
                await client.SendMailAsync(mailMessage);

                TempData["StatusMessage"] = "Email enviado!";
                return(RedirectToAction("Details", new { Id = model.ClinicId }));
            }
            catch (Exception)
            {
                TempData["StatusMessage"] = "Ocorreu um erro ao enviar o email. Preencha todos os campos e verifique a sua conexão a internet, por favor.";
                return(RedirectToAction("Details", new { Id = model.ClinicId }));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> CreateMail(MailMessageModel model)
        {
            var userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            if (userId == null)
            {
                throw new ApplicationException($"User ID was not found in user claims!");
            }

            var user = await _dbContext.Users
                       .Include(appUser => appUser.SmtpConfigurations)
                       .SingleOrDefaultAsync(appUser => appUser.Id == userId);

            // for now using only one configuration
            var firstSmtpConf = user.SmtpConfigurations.First();

            var sender = new MailSender(firstSmtpConf);

            var message = new MimeMessage();

            message.From.Add(new MailboxAddress(user.UserName, firstSmtpConf.Username));
            message.To.Add(new MailboxAddress(model.Recipent, model.Recipent));
            message.Subject = model.Title;

            message.Body = new TextPart("html")
            {
                Text = model.Content
            };

            await sender.SendMailAsync(message);

            return(RedirectToAction("Index"));
        }
Exemplo n.º 3
0
 private static SmtpClient InitSmtpMail(MailMessageModel entity, out MailMessage mail)
 {
     mail = new MailMessage();
     try
     {
         if (entity.ToMailList.Count > 0)
         {
             var client = new SmtpClient();
             foreach (string address in entity.ToMailList)
             {
                 mail.To.Add(new MailAddress(address));
             }
             mail.From = new MailAddress(entity.FromMail);
             mail.Subject = entity.Subject;
             mail.Body = entity.Body;
             mail.BodyEncoding = Encoding.UTF8;
             mail.IsBodyHtml = true;
             client.UseDefaultCredentials = false;
             client.Credentials = new NetworkCredential(entity.FromMail, entity.FromMailPwd);
             client.Host = entity.Host;
             client.Port = entity.Port;
             client.EnableSsl = true;
             return client;
         }
         return null;
     }
     catch (Exception ex)
     {
         LogHelp.Instance.Write(ex.Message, MessageType.Error, typeof(NetMailDAL), MethodBase.GetCurrentMethod().Name);
         return null;
     }
 }
Exemplo n.º 4
0
 internal MailMessageContext(MailboxContext mailbox, MailMessageModel message)
 {
     _mailbox     = mailbox;
     _message     = message;
     _attachments = new ObservableCollection <AttachmentContext>();
     _elevateTrustLevelCommand = new RelayCommand(OnElevateTrustCommand);
 }
Exemplo n.º 5
0
        private void IfCustomersRelayMessageToEachCustomer(MailMessageModel mailMessage, Dictionary <Guid, UserMessage> messages)
        {
            //If CustomerIds are provided, send message to every user for that customer
            if (mailMessage.CustomerIds != null && mailMessage.CustomerIds.Any())
            {
                foreach (var customer in mailMessage.CustomerIds)
                {
                    //var users = _userProfileLogic.GetUsers(new UserFilterModel() { CustomerId = customer });
                    var users = _userRepo.GetUsersForCustomerOrAccount(customer);

                    foreach (var user in users)
                    {
                        if (!messages.ContainsKey(user.UserId))
                        {
                            messages.Add(user.UserId, new UserMessage()
                            {
                                Body             = mailMessage.Message.Body,
                                Subject          = mailMessage.Message.Subject,
                                Label            = mailMessage.Message.Label,
                                Mandatory        = mailMessage.Message.Mandatory,
                                UserId           = user.UserId,
                                NotificationType = NotificationType.Mail
                            });
                        }
                    }
                }
            }
        }
Exemplo n.º 6
0
 private static SmtpClient InitSmtpMail(MailMessageModel entity, out MailMessage mail)
 {
     mail = new MailMessage();
     try
     {
         if (entity.ToMailList.Count > 0)
         {
             var client = new SmtpClient();
             foreach (string address in entity.ToMailList)
             {
                 mail.To.Add(new MailAddress(address));
             }
             mail.From                    = new MailAddress(entity.FromMail);
             mail.Subject                 = entity.Subject;
             mail.Body                    = entity.Body;
             mail.BodyEncoding            = Encoding.UTF8;
             mail.IsBodyHtml              = true;
             client.UseDefaultCredentials = false;
             client.Credentials           = new NetworkCredential(entity.FromMail, entity.FromMailPwd);
             client.Host                  = entity.Host;
             client.Port                  = entity.Port;
             client.EnableSsl             = true;
             return(client);
         }
         return(null);
     }
     catch (Exception ex)
     {
         LogHelp.Instance.Write(ex.Message, MessageType.Error, typeof(NetMailDAL), MethodBase.GetCurrentMethod().Name);
         return(null);
     }
 }
Exemplo n.º 7
0
        public async Task <IHttpActionResult> SendTestEmail()
        {
            var mailMessage = new MailMessageModel("*****@*****.**", "Test", "<strong style=\"color: red\">Zawartość<strong>");

            await mailService.SendEmailAsyncTask(mailMessage);

            return(Ok());
        }
Exemplo n.º 8
0
 private static void ExtractLinkIfPresent(MailMessageModel mailMessage)
 {
     if (mailMessage.Message.Link != null)
     {
         mailMessage.Message.Body += string.Format("{0}=\"{1}\"",
                                                   Constants.USERMESSAGES_LINKTOKEN,
                                                   mailMessage.Message.Link);
     }
 }
Exemplo n.º 9
0
        internal async Task DeleteMessagesAsync(MailMessageContext[] messages, string trashFolder)
        {
            var uids = messages.Select(x => x.Uid).ToArray();

            using (var connection = new ImapConnection {
                Security = _account.ImapSecurity
            }) {
                using (var auth = await connection.ConnectAsync(_account.ImapHost, _account.ImapPort)) {
                    using (var session = await auth.LoginAsync(_account.ImapUsername, _account.ImapPassword)) {
                        var mailbox = await session.SelectAsync(Name);

                        if (IsTrash)
                        {
                            await mailbox.DeleteMailsAsync(uids);
                        }
                        else
                        {
                            await mailbox.MoveMailsAsync(uids, trashFolder);
                        }
                    }
                }
            }

            using (var context = new DatabaseContext()) {
                await context.Database.Connection.OpenAsync();

                foreach (var message in messages)
                {
                    var id = message.Id;
                    using (var transaction = context.Database.BeginTransaction()) {
                        try {
                            var mime = await context.MimeMessages
                                       .FirstOrDefaultAsync(x => x.MessageId == id);

                            context.MimeMessages.Remove(mime);
                            await context.SaveChangesAsync();

                            var model = new MailMessageModel {
                                Id        = message.Id,
                                MailboxId = Id
                            };

                            context.MailMessages.Attach(model);
                            context.MailMessages.Remove(model);

                            await context.SaveChangesAsync();

                            transaction.Commit();

                            App.Context.NotifyMessageRemoved(message);
                        } catch (Exception) {
                            transaction.Rollback();
                        }
                    }
                }
            }
        }
Exemplo n.º 10
0
        protected Tuple <MailMessage, SmtpClient> GetData(MailMessageModel mailMessageModel, SmtpSettingsModel smtpSettingsModel)
        {
            PrepareSending(ref smtpSettingsModel);

            var message = mailMessageModel.GetMailMessage(smtpSettingsModel);

            var client = smtpSettingsModel.GetSmtpClient();

            return(Tuple.Create(message, client));
        }
Exemplo n.º 11
0
 private void RelayAlert(MailMessageModel mailMessage, Dictionary <Guid, UserMessage> messages)
 {
     if ((mailMessage.BranchesToAlert != null) && (mailMessage.BranchesToAlert.Length > 0))
     {
         RelayAlertToUsersInBranches(mailMessage, messages);
     }
     else
     {
         RelayAlertToAllUsers(mailMessage, messages);
     }
 }
Exemplo n.º 12
0
 /// <summary>
 /// Write log file message
 /// </summary>
 /// <param name="msg"></param>
 private void Send(MailMessageModel msg)
 {
     try
     {
         NetMailDAL.SendMail(msg);
     }
     catch (Exception e)
     {
         LogHelp.Instance.Write(e, MessageType.Error, GetType(), MethodBase.GetCurrentMethod().Name);
     }
 }
Exemplo n.º 13
0
        public Task SendAsync(IdentityMessage message)
        {
            // Plug in your email service here to send an email.
            //return Task.FromResult(0);

            var mailService = ServiceLocator.Current.GetInstance <IMailServiceAsyncTask>();

            var mailMessage = new MailMessageModel(message.Destination, message.Subject, message.Body);

            return(mailService.SendEmailAsyncTask(mailMessage));
        }
Exemplo n.º 14
0
 /// <summary>
 /// Enqueue a new log message and release a semaphore
 /// </summary>
 /// <param name="msg">Log message</param>
 public void SendMail(MailMessageModel msg)
 {
     if (msg != null)
     {
         lock (_lockObject)
         {
             _mailMessages.Enqueue(msg);
             _semaphore.Release();
         }
     }
 }
Exemplo n.º 15
0
        private static Task TestMail()
        {
            SmtpSettingsModel smtpSettingsModel = new SmtpSettingsModel("*****@*****.**", "*****@*****.**", "Pawl", "password", "smtp.gmail.com", 587, true);

            MailMessageModel mailMessageModel = new MailMessageModel("[email protected],[email protected]", "Test", "Testowy", true, new[] { @"D:\Downloads\teekst.txt", @"D:\Downloads\teekst2.txt" });


            IMailServiceAsyncTask mailService = new MailServiceAsyncTask(new TraceLogger(new LogMessageFactory()));


            return(mailService.SendEmailAsyncTask(mailMessageModel, smtpSettingsModel));
        }
Exemplo n.º 16
0
        public void SendMail(DateTime errorDateTime, string user, string className, string methodName, string messageContent, string stackContent)
        {
            MailMessageModel msg = new MailMessageModel()
            {
                FromMail    = ConfigurationManager.AppSettings[CommonConstants.FromMail],
                FromMailPwd = ConfigurationManager.AppSettings[CommonConstants.FromMailPwd],
                ToMailList  = new List <string>(ConfigurationManager.AppSettings[CommonConstants.ToMailList].Split(CommonConstants.CommaSplitTags.ToCharArray())),
                Host        = ConfigurationManager.AppSettings[CommonConstants.MailHost],
                Port        = Convert.ToInt32(ConfigurationManager.AppSettings[CommonConstants.MailPort]),
                Subject     = CommonConstants.MailSubjectTags,
                Body        = string.Format(CommonConstants.EmailBodyTags, errorDateTime, user, className, methodName, messageContent, stackContent)
            };

            SendMail(msg);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Write message to log file
        /// </summary>
        private void SendMailMessage()
        {
            MailMessageModel mailMessage = null;

            lock (_lockObject)
            {
                if (_mailMessages.Count > 0)
                {
                    mailMessage = _mailMessages.Dequeue();
                }
            }
            if (mailMessage != null)
            {
                Send(mailMessage);
            }
        }
Exemplo n.º 18
0
        public OperationReturnModel <bool> CreateMessage(MailMessageModel mailMessage)
        {
            OperationReturnModel <bool> ret = new OperationReturnModel <bool>();

            try
            {
                _msgLogic.CreateMailMessage(mailMessage);
                ret.SuccessResponse = true;
                ret.IsSuccess       = true;
            }
            catch (Exception ex)
            {
                _log.WriteErrorLog("CreateMessage", ex);
                ret.ErrorMessage    = ex.Message;
                ret.SuccessResponse = false;
                ret.IsSuccess       = false;
            }
            return(ret);
        }
Exemplo n.º 19
0
        public static void SendMail(MailUtilParaModel para, MailMessageModel message)
        {
            //Generate Message
            var mailMessage = new MimeMailMessage();

            mailMessage.From = new MimeMailAddress(para.MailAddress);
            //para.ReciverAddressList.ForEach(f=>mailMessage.To.Add(f));
            mailMessage.To.Add(para.ReciverAddresses);
            mailMessage.Subject = message.Subject;
            mailMessage.Body    = message.Text;

            //Create Smtp Client
            var mailer = new MimeMailer(para.ServerHost, para.ServerPort);

            mailer.User               = para.LogonUserName;
            mailer.Password           = para.Password;
            mailer.SslType            = (SslMode)para.SSLType;
            mailer.AuthenticationMode = AuthenticationType.Base64;
            mailer.SendMailAsync(mailMessage);
        }
Exemplo n.º 20
0
        public static bool SendAsync(MailMessageModel entity)
        {
            var result = false;

            if (entity == null || entity.ToMailList == null)
            {
                return(false);
            }
            MailMessage mail;
            var         client = InitSmtpMail(entity, out mail);

            if (client != null)
            {
                AsyncAciton           = entity.AsyncAction;
                client.SendCompleted += SendCompletedCallback;
                client.SendAsync(mail, null);
                result = true;
            }
            return(result);
        }
Exemplo n.º 21
0
        internal async Task RestoreMessagesAsync(ICollection <MailMessageContext> messages)
        {
            try {
                var inbox = GetInbox();
                var trash = GetTrashMailbox();
                using (var connection = new ImapConnection {
                    Security = _account.ImapSecurity
                }) {
                    using (var auth = await connection.ConnectAsync(_account.ImapHost, _account.ImapPort)) {
                        using (var session = await auth.LoginAsync(_account.ImapUsername, _account.ImapPassword)) {
                            var mailbox = await session.SelectAsync(trash.Name);

                            await mailbox.MoveMailsAsync(messages.Select(x => x.Uid).ToArray(), inbox.Name);
                        }
                    }
                }

                using (var database = new DatabaseContext()) {
                    foreach (var message in messages)
                    {
                        try {
                            var model = new MailMessageModel {
                                Id        = message.Id,
                                MailboxId = Id
                            };

                            database.MailMessages.Attach(model);
                            database.MailMessages.Remove(model);
                        } catch (Exception ex) {
                            Logger.Error(ex);
                            throw;
                        }
                    }
                    await database.SaveChangesAsync();
                }

                App.Context.NotifyMessagesRemoved(messages);
            } catch (Exception ex) {
                Logger.Error(ex);
            }
        }
Exemplo n.º 22
0
        private void GetBranchesToAlert(MailMessageModel mailMessage, List <UserProfile> users)
        {
            List <string> branches = Configuration.GetCommaSeparatedValues(mailMessage.BranchesToAlert);

            foreach (string branch in branches)
            {
                List <Customer> customers = _custRepo.GetCustomersForBranch(branch);
                Parallel.ForEach(customers,
                                 new ParallelOptions {
                    MaxDegreeOfParallelism = 4
                },
                                 customer =>
                {
                    var lusers = _userRepo.GetUsersForCustomerOrAccount(customer.CustomerId);
                    if (lusers != null && lusers.Count > 0)
                    {
                        users.AddRange(lusers);
                    }
                });
            }
        }
Exemplo n.º 23
0
        private void RelayAlertToAllUsers(MailMessageModel mailMessage, Dictionary <Guid, UserMessage> messages)
        {
            List <UserProfile> users = _userRepo.GetExternalUsers();

            users.AddRange(_userRepo.GetInternalUsers());
            foreach (var user in users)
            {
                if (!messages.ContainsKey(user.UserId))
                {
                    messages.Add(user.UserId, new UserMessage()
                    {
                        Body             = mailMessage.Message.Body,
                        Subject          = mailMessage.Message.Subject,
                        Label            = mailMessage.Message.Label,
                        Mandatory        = mailMessage.Message.Mandatory,
                        UserId           = user.UserId,
                        NotificationType = mailMessage.Message.NotificationType
                    });
                }
            }
        }
Exemplo n.º 24
0
        private void RelayAlertToUsersInBranches(MailMessageModel mailMessage, Dictionary <Guid, UserMessage> messages)
        {
            List <UserProfile> users = new List <UserProfile>();

            GetBranchesToAlert(mailMessage, users);
            foreach (var user in users)
            {
                if (!messages.ContainsKey(user.UserId))
                {
                    messages.Add(user.UserId, new UserMessage()
                    {
                        Body             = mailMessage.Message.Body,
                        Subject          = mailMessage.Message.Subject,
                        Label            = mailMessage.Message.Label,
                        Mandatory        = mailMessage.Message.Mandatory,
                        UserId           = user.UserId,
                        NotificationType = mailMessage.Message.NotificationType
                    });
                }
            }
        }
Exemplo n.º 25
0
 private void IfUsersRelayMessageToEachUser(MailMessageModel mailMessage, Dictionary <Guid, UserMessage> messages)
 {
     //Add any messages to specific users
     if (mailMessage.UserIds != null && mailMessage.UserIds.Any())
     {
         foreach (var user in mailMessage.UserIds)
         {
             if (!messages.ContainsKey(user))
             {
                 messages.Add(user, new UserMessage()
                 {
                     Body             = mailMessage.Message.Body,
                     Subject          = mailMessage.Message.Subject,
                     Label            = mailMessage.Message.Label,
                     Mandatory        = mailMessage.Message.Mandatory,
                     UserId           = user,
                     NotificationType = NotificationType.Mail
                 });
             }
         }
     }
 }
Exemplo n.º 26
0
        public void CreateMailMessage(MailMessageModel mailMessage)
        {
            Dictionary <Guid, UserMessage> messages = new Dictionary <Guid, UserMessage>();

            IfCustomersRelayMessageToEachCustomer(mailMessage, messages);

            IfUsersRelayMessageToEachUser(mailMessage, messages);

            //Add messages to all users in the case of system alert
            if (mailMessage.IsAlert)
            {
                ExtractLinkIfPresent(mailMessage);

                RelayAlert(mailMessage, messages);
            }

            //Create all of the message records
            foreach (var message in messages)
            {
                _userMessageRepository.Create(message.Value);
            }

            _uow.SaveChanges();
        }
Exemplo n.º 27
0
 public static bool SendMail(MailMessageModel entity)
 {
     try
     {
         var result = false;
         if (entity == null || entity.ToMailList == null)
         {
             return(false);
         }
         MailMessage mail;
         var         client = InitSmtpMail(entity, out mail);
         if (client != null)
         {
             client.Send(mail);
             result = true;
         }
         return(result);
     }
     catch (Exception ex)
     {
         LogHelp.Instance.Write(ex.Message, MessageType.Error, typeof(NetMailDAL), MethodBase.GetCurrentMethod().Name);
         return(false);
     }
 }
Exemplo n.º 28
0
 /// <summary>
 /// Write log file message
 /// </summary>
 /// <param name="msg"></param>
 private void Send(MailMessageModel msg)
 {
     try
     {
         NetMailDAL.SendMail(msg);
     }
     catch (Exception e)
     {
         LogHelp.Instance.Write(e, MessageType.Error, GetType(), MethodBase.GetCurrentMethod().Name);
     }
 }
Exemplo n.º 29
0
 /// <summary>
 /// Enqueue a new log message and release a semaphore
 /// </summary>
 /// <param name="msg">Log message</param>
 public void SendMail(MailMessageModel msg)
 {
     if (msg != null)
     {
         lock (_lockObject)
         {
             _mailMessages.Enqueue(msg);
             _semaphore.Release();
         }
     }
 }
Exemplo n.º 30
0
        public Task SendEmailAsyncTask(MailMessageModel mailMessageModel, SmtpSettingsModel smtpSettingsModel = null)
        {
            var data = GetData(mailMessageModel, smtpSettingsModel);

            return(SendEmailAsyncTask(data.Item1, data.Item2));
        }
Exemplo n.º 31
0
        public void SendEmailAsync(MailMessageModel mailMessageModel, SmtpSettingsModel smtpSettingsModel = null)
        {
            var data = GetData(mailMessageModel, smtpSettingsModel);

            SendEmailAsync(data.Item1, data.Item2);
        }
Exemplo n.º 32
0
 public static bool SendMail(MailMessageModel entity)
 {
     try
     {
         var result = false;
         if (entity == null || entity.ToMailList == null) return false;
         MailMessage mail;
         var client = InitSmtpMail(entity, out mail);
         if (client != null)
         {
             client.Send(mail);
             result = true;
         }
         return result;
     }
     catch (Exception ex)
     {
         LogHelp.Instance.Write(ex.Message, MessageType.Error, typeof(NetMailDAL), MethodBase.GetCurrentMethod().Name);
         return false;
     }
 }
Exemplo n.º 33
0
        public void SendMail(DateTime errorDateTime, string user, string className, string methodName, string messageContent, string stackContent)
        {
            MailMessageModel msg = new MailMessageModel()
            {
                FromMail = ConfigurationManager.AppSettings[CommonConstants.FromMail],
                FromMailPwd = ConfigurationManager.AppSettings[CommonConstants.FromMailPwd],
                ToMailList = new List<string>(ConfigurationManager.AppSettings[CommonConstants.ToMailList].Split(CommonConstants.CommaSplitTags.ToCharArray())),
                Host = ConfigurationManager.AppSettings[CommonConstants.MailHost],
                Port = Convert.ToInt32(ConfigurationManager.AppSettings[CommonConstants.MailPort]),
                Subject = CommonConstants.MailSubjectTags,
                Body = string.Format(CommonConstants.EmailBodyTags, errorDateTime, user, className, methodName, messageContent, stackContent)
            };

            SendMail(msg);
        }
Exemplo n.º 34
0
        public IActionResult CreateMail()
        {
            MailMessageModel model = new MailMessageModel();

            return(View("CreateMail"));
        }
Exemplo n.º 35
0
        public static bool SendAsync(MailMessageModel entity)
        {
            var result = false;
            if (entity == null || entity.ToMailList == null) return false;
            MailMessage mail;
            var client = InitSmtpMail(entity, out mail);

            if (client != null)
            {
                AsyncAciton = entity.AsyncAction;
                client.SendCompleted += SendCompletedCallback;
                client.SendAsync(mail, null);
                result = true;
            }
            return result;
        }