Example #1
0
        public void Context()
        {
            var template = EmailTemplateBuilder.New
                           .WithInitialHtml("12345")
                           .Build();
            const int emailId = 78;
            var       email   = new EmailBuilder()
                                .WithId(emailId)
                                .WithEmailTemplate(template)
                                .Build();
            var emailDto = new EmailDto
            {
                EmailId = emailId,
                Parts   = new[]
                {
                    new EmailPartDto
                    {
                        PartId        = 123,
                        PartType      = PartType.Variable,
                        VariableValue = "A"
                    },
                }
            };

            _exception = Should.Throw <InvalidOperationException>(() => email.UpdateVariables(emailDto));
        }
Example #2
0
        void UserEmailEventMoudle_After(User sender, CreateUserEventArgs eventArgs)
        {
            EmailService emailService = new EmailService();

            //发送注册成功邮件
            emailService.SendAsyn(EmailBuilder.Instance().RegisterSuccess(eventArgs.Password, sender));
        }
        public async Task <StoreUserModel> CreateUserAsync(CreateStoreUserModel createStoreUserModel)
        {
            var storeUser = mapper.Map <StoreUser>(createStoreUserModel);

            var user = await userManager.CreateAsync(storeUser, createStoreUserModel.Password);

            if (user.Succeeded)
            {
                var token = await userManager.GenerateEmailConfirmationTokenAsync(storeUser);

                var confirmPasswordLink = string.Concat(GlobalConfig.APIBaseUrl, $"/api/security/user/confirmemail?token={Base64UrlEncoder.Encode(token)}&email={storeUser.Email}");
                var result = mapper.Map <StoreUserModel>(storeUser);


                var messageBuilder = new EmailBuilder(configuration)
                {
                    To         = new[] { storeUser.Email },
                    Subject    = "Welcome To Bread2Bun",
                    IsBodyHtml = true,
                    Body       = $"Hi {storeUser.FullName} , please click on the link below so that we can confirm your email address. <br/><br/>" +
                                 $"{confirmPasswordLink} <br/><br/>" +
                                 $"Happy eating!!!"
                };
                await EmailBuilder.SendEmailAsync(messageBuilder);

                return(result);
            }

            else
            {
                var error = user.Errors.FirstOrDefault();
                throw new ArgumentException(error.Description);
            }
        }
Example #4
0
        public void Spool_PurgesUnsendableEmailOlderThanConfiguredKeepSentForValue()
        {
            // test setup
            var email = CreateSubstituteEmail();
            var func  = EmailGeneratorWith(email);
            var dto   = EmailBuilder.BuildRandomWithRecipient();
            var ctx   = SubstituteEmailContextBuilder.Create().WithEmails(dto).Build();
            var deps  = FakeEmailSpoolerDependenciesBuilder.Create()
                        .WithDbContext(ctx)
                        .WithEmailGenerator(func)
                        .Build();
            var dayVal = RandomValueGen.GetRandomInt(30, 40);

            deps.EmailSpoolerConfig.PurgeMessageWithAgeInDays.ReturnsForAnyArgs(ci => dayVal);
            dto.Sent         = false;
            dto.SendAttempts = deps.EmailSpoolerConfig.MaxSendAttempts;
            dto.LastModified = DateTime.Now.AddDays(-dayVal).AddSeconds(-10);

            // pre-conditions
            Assert.AreEqual(1, ctx.Emails.Count());


            // execute test
            using (var spooler = new EmailSpooler(deps))
            {
                spooler.Spool();
            }

            // test result
            email.DidNotReceive().Send();
            Assert.AreEqual(0, ctx.Emails.Count());
            ctx.Received().SaveChanges();
        }
        public async Task ForgotPasswordAsync(ForgotPassowrdModel forgotPassowrdModel)
        {
            var user = await userManager.FindByEmailAsync(forgotPassowrdModel.Email);

            if (user != null)
            {
                var token = await userManager.GeneratePasswordResetTokenAsync(user);

                var passwordReseLink = string.Concat(GlobalConfig.PresentationBaseUrl, $"/reset/resetpassword?token={Base64UrlEncoder.Encode(token)}&email={user.Email}");

                var messageBuilder = new EmailBuilder(configuration)
                {
                    To         = new[] { user.Email },
                    Subject    = "Reset Password",
                    IsBodyHtml = true,
                    Body       = $"Hi {user.FullName} , please click on the link below reset your password. <br/><br/>" +
                                 $"{passwordReseLink} <br/><br/>" +
                                 $"Happy eating!!!"
                };
                await EmailBuilder.SendEmailAsync(messageBuilder);
            }
            else if (user == null)
            {
                throw new NullReferenceException("This email does not belong to any acccount");
            }
        }
Example #6
0
        public void Spool_DoesNotSendDisabledMails()
        {
            // test setup
            var email = CreateSubstituteEmail();
            var func  = EmailGeneratorWith(email);
            var dto   = EmailBuilder.Create().WithRandomProps().WithRandomRecipient().WithRandomAttachment(2).Build();

            dto.EmailRecipients.First().IsBCC = true;
            dto.EmailRecipients.First().IsCC  = true;
            dto.SendAt  = DateTime.Now.AddYears(-1);
            dto.Enabled = false;

            var ctx  = SubstituteEmailContextBuilder.Create().WithEmails(dto).Build();
            var deps = FakeEmailSpoolerDependenciesBuilder.Create()
                       .WithDbContext(ctx)
                       .WithEmailGenerator(func)
                       .Build();

            // pre-conditions
            Assert.AreEqual(2, dto.EmailAttachments.Count(a => a.Data.Length > 0 && a.Name.Length > 0));

            // execute test
            using (var spooler = new EmailSpooler(deps))
            {
                spooler.Spool();
            }

            // test result
            email.DidNotReceive().Send();
        }
Example #7
0
        public void Spool_WhenOneEmailNotSent_WhenEmailSendsSuccessfully_MarksEmailAsSent()
        {
            // test setup
            var email = CreateSubstituteEmail();
            var func  = EmailGeneratorWith(email);
            var dto   = EmailBuilder.Create().WithRandomProps().WithRandomRecipient().WithRandomAttachment(2).Build();

            dto.EmailRecipients.First().IsBCC = true;
            dto.EmailRecipients.First().IsCC  = true;
            var ctx  = SubstituteEmailContextBuilder.Create().WithEmails(dto).Build();
            var deps = FakeEmailSpoolerDependenciesBuilder.Create()
                       .WithDbContext(ctx)
                       .WithEmailGenerator(func)
                       .Build();

            // pre-conditions
            Assert.AreEqual(2, dto.EmailAttachments.Count(a => a.Data.Length > 0 && a.Name.Length > 0));

            // execute test
            ctx.DidNotReceive().SaveChanges();
            using (var spooler = new EmailSpooler(deps))
            {
                spooler.Spool();
            }

            // test result
            Assert.IsTrue(dto.Sent);
            ctx.Received().SaveChanges();
        }
Example #8
0
        public void Spool_WhenOneEmailNotSent_AddsAllAttachmentsWithContentIDsWithContentIds()
        {
            // test setup
            var email = CreateSubstituteEmail();
            var func  = EmailGeneratorWith(email);
            var dto   = EmailBuilder.Create().WithRandomProps().WithRandomRecipient().WithRandomAttachment(2).Build();

            dto.EmailRecipients.First().IsBCC = true;
            dto.EmailRecipients.First().IsCC  = true;
            var ctx  = SubstituteEmailContextBuilder.Create().WithEmails(dto).Build();
            var deps = FakeEmailSpoolerDependenciesBuilder.Create()
                       .WithDbContext(ctx)
                       .WithEmailGenerator(func)
                       .Build();

            // pre-conditions
            Assert.AreEqual(2, dto.EmailAttachments.Count(a => a.Data.Length > 0 && a.Name.Length > 0));

            // execute test
            using (var spooler = new EmailSpooler(deps))
            {
                spooler.Spool();
            }

            // test result
            foreach (var attachment in dto.EmailAttachments)
            {
                email.Received().AddAttachment(attachment.Name, attachment.Data, attachment.MIMEType, attachment.ContentID);
            }
        }
Example #9
0
        public void Spool_WhenOneEmailNotSentButSendAttemptsExceeded_DoesNotSendMail()
        {
            // test setup
            var email       = CreateSubstituteEmail();
            var func        = EmailGeneratorWith(email);
            var dto         = EmailBuilder.Create().WithRandomProps().WithRandomRecipient().WithRandomAttachment(2).Build();
            var maxAttempts = RandomValueGen.GetRandomInt(3, 6);

            dto.EmailRecipients.First().IsBCC = true;
            dto.EmailRecipients.First().IsCC  = true;
            dto.SendAt       = DateTime.Now.AddYears(-1);
            dto.SendAttempts = maxAttempts + 1;

            var ctx  = SubstituteEmailContextBuilder.Create().WithEmails(dto).Build();
            var deps = FakeEmailSpoolerDependenciesBuilder.Create()
                       .WithDbContext(ctx)
                       .WithEmailGenerator(func)
                       .Build();

            deps.EmailSpoolerConfig.MaxSendAttempts.ReturnsForAnyArgs(ci => maxAttempts);
            // pre-conditions
            Assert.AreEqual(2, dto.EmailAttachments.Count(a => a.Data.Length > 0 && a.Name.Length > 0));

            // execute test
            using (var spooler = new EmailSpooler(deps))
            {
                spooler.Spool();
            }

            // test result
            email.DidNotReceive().Send();
        }
Example #10
0
        public async Task <ActionResult> RecoverPassword(string email)
        {
            try
            {
                var user = await _userManager.Users.FirstOrDefaultAsync(e => e.Email == email);

                if (user == null)
                {
                    return(NotFound());
                }

                var tokenResetPassword = await _userManager.GeneratePasswordResetTokenAsync(user);

                var emailBuilder = new EmailBuilder("", "",
                                                    user.Id,
                                                    "",
                                                    tokenResetPassword);

                await _emailSender.SendEmailAsync(email,
                                                  EmailBuilder.SubjectConfirmEmail,
                                                  emailBuilder.GetPasswrodResetMessage());

                return(StatusCode(200, "Um email de recuperação de senha foi enviado."));
            }
            catch (NullReferenceException e)
            {
                return(StatusCode(404, e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }
Example #11
0
        public void Spool_WhenOneEmailNotSent_AddsRecipientsToAllConfiguredFields()
        {
            // test setup
            var email = CreateSubstituteEmail();
            var func  = EmailGeneratorWith(email);
            var dto   = EmailBuilder.Create().WithRandomProps().WithRandomRecipient().Build();

            dto.EmailRecipients.First().IsBCC = true;
            dto.EmailRecipients.First().IsCC  = true;
            var ctx  = SubstituteEmailContextBuilder.Create().WithEmails(dto).Build();
            var deps = FakeEmailSpoolerDependenciesBuilder.Create()
                       .WithDbContext(ctx)
                       .WithEmailGenerator(func)
                       .Build();

            // pre-conditions
            Assert.IsTrue(dto.EmailRecipients.Count(e => e.IsBCC && e.IsPrimaryRecipient && e.IsCC) == 1);

            // execute test
            using (var spooler = new EmailSpooler(deps))
            {
                spooler.Spool();
            }

            // test result
            foreach (var recipient in dto.EmailRecipients)
            {
                email.Received().AddRecipient(recipient.Recipient);
                email.Received().AddBCC(recipient.Recipient);
                email.Received().AddCC(recipient.Recipient);
            }
        }
Example #12
0
        } // delete soon

        protected void rg_email_history_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                GridDataItem item = (GridDataItem)e.Item;

                if (item["Pattern"].Text != "&nbsp;")
                {
                    Label l = new Label();
                    l.Text = item["Pattern"].Text;

                    System.Web.UI.WebControls.Image img_info = new System.Web.UI.WebControls.Image();
                    img_info.CssClass = "HandCursor";
                    img_info.ImageUrl = "~/images/leads/ico_info.png";
                    img_info.Height   = img_info.Width = 15;
                    img_info.ToolTip  = EmailBuilder.GetPatternDetailsByPatternID(item["Pattern"].Text);
                    img_info.Attributes.Add("style", "position:relative; top:2px; margin-left:4px;");

                    item["Pattern"].Controls.Add(l);
                    item["Pattern"].Controls.Add(img_info);
                }

                if (item["Failed"].Text == "1")
                {
                    item.ForeColor = Color.DarkOrange;
                }
            }
        }
        public ActionResult SignUpForm(NewUser newUser, EmailBuilder mailBuilder)
        {
            if (string.IsNullOrEmpty(newUser.Email))
            {
                ModelState.AddModelError("Email", "Please enter a valid Email");
            }
            if (string.IsNullOrEmpty(newUser.Password))
            {
                ModelState.AddModelError("Password", "Please enter a valid Password");
            }
            if (string.IsNullOrEmpty(newUser.Username))
            {
                ModelState.AddModelError("Username", "Please enter a valid Password");
            }

            if (ModelState.IsValid)
            {
                if (newUser.checkUser() == true)
                {
                    ModelState.AddModelError("ErrorMessage", "User already exists");
                }
                else
                {
                    newUser.generateSignUpCode();
                    mailBuilder.SendVerificationLinkEmail(newUser, newUser.generatedCode);
                    TempData["verificationCode"] = newUser.generatedCode;
                    TempData["NewUser"]          = newUser;

                    return(RedirectToAction("EmailConfirmation"));
                }
            }

            return(View("SignUp", newUser));
        }
Example #14
0
        public IActionResult ShareProductByEmail(long id, ShareInfo info)
        {
            var config  = new ConfigurationBuilder().AddJsonFile("appsettings.Development.Json").Build();
            var product = _context.Products.SingleOrDefault(x => x.Id == id);

            if (product != null)
            {
                var emailBuilder = new EmailBuilder(product, info.TargetEmail);
                try
                {
                    emailBuilder.SendEmail();
                    TempData["OperationStatus"] = "Success";
                }
                catch
                {
                    TempData["OperationStatus"] = "Fail";
                }
            }
            else
            {
                TempData["OperationStatus"] = "Fail";
            }

            return(RedirectToAction("Index", "Shop"));
        }
Example #15
0
        public async Task <ActionResult> Contact(SendAMessageViewModel sendAMessageViewModel)
        {
            try
            {
                sendAMessageViewModel.PhoneNumber  = Sanitizer.GetSafeHtmlFragment(sendAMessageViewModel.PhoneNumber);
                sendAMessageViewModel.Message      = Sanitizer.GetSafeHtmlFragment(sendAMessageViewModel.Message);
                sendAMessageViewModel.Name         = Sanitizer.GetSafeHtmlFragment(sendAMessageViewModel.Name);
                sendAMessageViewModel.Subject      = Sanitizer.GetSafeHtmlFragment(sendAMessageViewModel.Subject);
                sendAMessageViewModel.EmailAddress = Sanitizer.GetSafeHtmlFragment(sendAMessageViewModel.EmailAddress);

                var messageBuilder = new EmailBuilder()
                {
                    To         = MailingList.ToAllStaff,
                    Subject    = "Inquiry",
                    IsBodyHtml = true,
                    Body       = BuildMailTemplate.CreateContactUsTemplate(sendAMessageViewModel)
                };
                await EmailBuilder.SendEmailAsync(messageBuilder, sendAMessageViewModel.EmailAddress);

                return(Json(new { status = TransactionStatusEnum.success, subject = "Sent", message = "Your message has been sent successfully" }, JsonRequestBehavior.AllowGet));
            }

            catch (Exception ex)
            {
                return(Json(new { status = TransactionStatusEnum.fail, subject = "Failed", message = ex.Message.ToString() }, JsonRequestBehavior.AllowGet));

                //return Json(new { status = TransactionStatusEnum.fail, subject = "Failed", message = "Oops! Something went wrong while sending your message. Please try again" }, JsonRequestBehavior.AllowGet);
            }
        }
Example #16
0
        /// <summary>
        /// 修改密码页面
        /// </summary>
        /// <param name="emailBuilder"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static MailMessage ChangedPassword(this EmailBuilder emailBuilder, IUser user)
        {
            string  templateName = "ChangedPassword";
            dynamic model        = emailBuilder.GetUserEmailModel(user);

            return(emailBuilder.Resolve(templateName, model, new string[] { user.AccountEmail }));
        }
Example #17
0
        public void AddNew_ActingOnCollection_ShouldAddNewItemAndReturnIt_AfterExecutingInitializerActionAndAfterAddACtion()
        {
            using (var ctx = GetContext())
            {
                //---------------Set up test pack-------------------
                CollectionAssert.IsEmpty(ctx.Emails);
                var called = false;

                void SaveChanges()
                {
                    ctx.SaveChangesWithErrorReporting();
                    called = true;
                }

                var email = EmailBuilder.BuildRandom();

                //---------------Assert Precondition----------------

                //---------------Execute Test ----------------------
                var attachment = email.EmailAttachments.AddNew(a =>
                {
                    a.Data     = GetRandomBytes(100);
                    a.MIMEType = GetRandomString(2);
                    called     = true;
                }, o =>
                {
                    SaveChanges();
                });

                //---------------Test Result -----------------------
                Assert.IsTrue(called);  // just-in-casies
                CollectionAssert.IsNotEmpty(email.EmailAttachments);
                CollectionAssert.Contains(email.EmailAttachments, attachment);
            }
        }
Example #18
0
        public void RemoveRange_ActingOnICollection_ShouldRemoveParamsItems()
        {
            using (var ctx = GetContext())
            {
                //---------------Set up test pack-------------------
                var email        = EmailBuilder.BuildRandom();
                var anotherEmail = EmailBuilder.BuildRandom();
                // ReSharper disable once ConvertToLocalFunction
                Func <EmailAttachment> createAttachment = () => EmailAttachmentBuilder.Create().WithRandomProps().WithProp(o => o.Email = email).Build();
                var item1 = createAttachment();
                var item2 = createAttachment();
                var item3 = createAttachment();
                email.EmailAttachments.AddRange(item1, item2, item3);
                ctx.Emails.AddRange(email, anotherEmail);
                ctx.SaveChangesWithErrorReporting();

                //---------------Assert Precondition----------------
                CollectionAssert.IsNotEmpty(email.EmailAttachments);

                //---------------Execute Test ----------------------
                email.EmailAttachments.RemoveRange(item1, item3);
                anotherEmail.EmailAttachments.AddRange(item1, item3);
                ctx.SaveChangesWithErrorReporting();
                //---------------Test Result -----------------------
                CollectionAssert.DoesNotContain(email.EmailAttachments, item1);
                CollectionAssert.Contains(email.EmailAttachments, item2);
                CollectionAssert.DoesNotContain(email.EmailAttachments, item3);
            }
        }
        public void Deve_armazenar_um_email()
        {
            var email = EmailBuilder.Novo().Criar();

            _armazenadorDeEmail.Salvar(email);

            _emailRepository.Verify(repository => repository.Salvar(email), Times.Once);
        }
Example #20
0
        /// <summary>
        /// 注册成功
        /// </summary>
        /// <param name="emailBuilder">Email模板</param>
        /// <param name="password">密码</param>
        /// <param name="user">用户</param>
        /// <returns></returns>
        public static MailMessage RegisterSuccess(this EmailBuilder emailBuilder, string password, IUser user)
        {
            string  templateName = "RegisterSuccess";
            dynamic model        = emailBuilder.GetUserEmailModel(user);

            model.Password = password;
            return(emailBuilder.Resolve(templateName, model, new string[] { user.AccountEmail }));
        }
Example #21
0
        /// <summary>
        /// 忘记密码
        /// </summary>
        /// <param name="emailBuilder"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static MailMessage ResetPassword(this EmailBuilder emailBuilder, IUser user)
        {
            string  templateName = "ResetPassword";
            dynamic model        = emailBuilder.GetUserEmailModel(user);

            model.IP = WebUtility.GetIP();
            return(emailBuilder.Resolve(templateName, model, new string[] { user.AccountEmail }));
        }
Example #22
0
        /// <summary>
        /// 提醒
        /// </summary>
        /// <param name="emailBuilder"></param>
        /// <param name="userReminderInfos">用户提醒信息集合</param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static MailMessage Reminder(this EmailBuilder emailBuilder, IList <UserReminderInfo> userReminderInfos, IUser user)
        {
            string  templateName = "Reminder";
            dynamic model        = emailBuilder.GetUserEmailModel(user);

            model.UserReminderInfos = userReminderInfos;
            return(emailBuilder.Resolve(templateName, model, new string[] { user.AccountEmail }));
        }
Example #23
0
        /// <summary>
        /// 验证邮箱
        /// </summary>
        /// <param name="emailBuilder"></param>
        /// <param name="user"></param>
        /// <returns></returns>
        public static MailMessage RegisterValidateEmail(this EmailBuilder emailBuilder, IUser user)
        {
            string  templateName = "RegisterValidateEmail";
            dynamic model        = emailBuilder.GetUserEmailModel(user);

            model.EmailValidateUrl = SiteUrls.FullUrl(SiteUrls.Instance().RegisterValidateEmail(user.UserId));
            return(emailBuilder.Resolve(templateName, model, new string[] { user.AccountEmail }));
        }
        public void EnviarDanfeEmail(string _emailDestinatario, string _assunto, string _mensagem)
        {
            if (Nota.Empresa.ComponenteDfe == 0) //0 = Tecnospeed / 1 = Zeus Automação
            {
                string arquivo = "";

                SpdNFeX.EmailServidor     = Empresa.ServidorSMTP;
                SpdNFeX.EmailPorta        = Empresa.PortaSMTP;
                SpdNFeX.EmailRemetente    = Empresa.EmailUsuario;
                SpdNFeX.EmailUsuario      = Empresa.EmailUsuario;
                SpdNFeX.EmailSenha        = Empresa.EmailSenha;
                SpdNFeX.EmailDestinatario = _emailDestinatario;
                SpdNFeX.EmailAssunto      = _assunto;
                SpdNFeX.EmailMensagem     = _mensagem;

                if (Empresa.GMailAutenticacao)
                {
                    SpdNFeX.EmailAutenticacao = Empresa.GMailAutenticacao;
                }

                try
                {
                    arquivo = SpdNFeX.EnviarNotaDestinatario(Nota.ChaveNota, DiretorioPadrao + "\\LOG\\" + Nota.LogEnvio, DiretorioPadrao + "\\LOG\\" + Nota.LogRecibo);
                }
                catch
                {
                    arquivo = SpdNFeX.EnviarNotaDestinatario(Nota.ChaveNota, DiretorioPadrao + "\\LogHom\\" + Nota.LogEnvio, DiretorioPadrao + "\\LogHom\\" + Nota.LogRecibo);
                }
            }
            else
            {
                NFe.Utils.Email.ConfiguracaoEmail ConfigEmail = new NFe.Utils.Email.ConfiguracaoEmail(
                    Empresa.EmailUsuario,
                    Empresa.EmailSenha,
                    _assunto,
                    _mensagem,
                    Empresa.ServidorSMTP,
                    Empresa.PortaSMTP,
                    false,
                    true);
                // Nome da Empresa
                ConfigEmail.Nome = Empresa.Fantasia;

                if (Empresa.GMailAutenticacao)
                {
                    ConfigEmail.Ssl = true;
                }

                var emailBuilder = new EmailBuilder(ConfigEmail)
                                   .AdicionarDestinatario(_emailDestinatario)
                                   .AdicionarAnexo(DiretorioXML + "\\" + Nota.ChaveNota + "-nfe.xml")
                                   .AdicionarAnexo(DiretorioPadrao + "\\pdf\\" + Nota.ChaveNota + "-nfe.pdf");

                //emailBuilder.ErroAoEnviarEmail += erro => MessageBox.Show(erro.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);

                emailBuilder.Enviar();
            }
        }
Example #25
0
        static void Start()
        {
            var    emailSender  = new EmailSender();
            var    _pingTimeout = 200;
            var    emailBuilder = new EmailBuilder("cubicle23-pc");
            string emailMessage = emailBuilder.BuildReportAndRemoveServices(_pingTimeout);

            emailSender.Send(emailMessage, "*****@*****.**");
        }
Example #26
0
        protected void BuildEmailHistoryTooltip(object sender, Telerik.Web.UI.ToolTipUpdateEventArgs args)
        {
            String EmailHistoryID = args.Value;

            String qry = "SELECT ContactID, ee.Email as 'E-mail', up.Fullname as 'Estimated By', EmailEstimationPatternID as 'Pattern', EmailEstimateByPatternFailed as 'Failed', Validated, DateAdded " +
                         "FROM db_contact_email_history ee LEFT JOIN db_userpreferences up ON ee.EstimatedByUserID=up.UserID WHERE EmailEstimateID=@EmailEstimateID ORDER BY DateAdded";
            DataTable dt_estimate = SQL.SelectDataTable(qry, "@EmailHistoryID", EmailHistoryID);

            if (dt_estimate.Rows.Count > 0)
            {
                String ContactID           = dt_estimate.Rows[0]["ContactID"].ToString();
                String PatternDetails      = EmailBuilder.GetPatternDetailsByPatternID(dt_estimate.Rows[0]["Pattern"].ToString());
                String EstimatedByFullName = dt_estimate.Rows[0]["Estimated By"].ToString();
                String DateAdded           = dt_estimate.Rows[0]["DateAdded"].ToString();

                qry = "SELECT TRIM(CONCAT(CASE WHEN FirstName IS NULL THEN '' ELSE CONCAT(TRIM(FirstName), ' ') END, " +
                      "CASE WHEN NickName IS NULL THEN '' ELSE '' END, CASE WHEN LastName IS NULL THEN '' ELSE TRIM(LastName) END)) as 'name' " +
                      "FROM db_contact WHERE ContactID=@ContactID";
                String ContactName = SQL.SelectString(qry, "name", "@ContactID", ContactID);

                Label lbl_title = new Label();
                lbl_title.CssClass = "MediumTitle";
                lbl_title.Text     = "E-mail estimation history for contact '<b>" + Server.HtmlEncode(ContactName) + "</b>'";
                lbl_title.Attributes.Add("style", "font-weight:500; margin-top:0px; margin-bottom:6px; position:relative; top:-3px;");

                Label  lbl_cur_email = new Label();
                String BuiltInfo     = "Currently estimated e-mail was built by " + Server.HtmlEncode(EstimatedByFullName) + " based on matched e-mail patterns of other contacts at this company."
                                       + "<br/>E-mail built using " + Server.HtmlEncode(PatternDetails)
                                       + "<br/>Built: " + Server.HtmlEncode(DateAdded);
                lbl_cur_email.Text      = BuiltInfo;
                lbl_cur_email.Font.Size = 8;

                Panel p = new Panel();
                p.Width = 679;

                qry = "SELECT Email as 'E-mail', Fullname as 'Estimated By', EmailEstimationPatternID as 'Pattern', EmailEstimateByPatternFailed as 'Failed', Validated, DateAdded " +
                      "FROM db_contact_email_history ee LEFT JOIN db_userpreferences up ON ee.EstimatedByUserID=up.UserID WHERE ContactID=@ContactID ORDER BY EmailEstimateByPatternFailed, DateAdded DESC";
                DataTable dt_email_history = SQL.SelectDataTable(qry.Replace("EmailHistoryID=@EmailHistoryID", "ContactID=@ContactID"), "@ContactID", ContactID);

                RadGrid rg_email_history = new RadGrid();
                rg_email_history.Skin                = "Silk";
                rg_email_history.Font.Size           = 7;
                rg_email_history.AutoGenerateColumns = true;
                rg_email_history.AllowSorting        = false;
                rg_email_history.DataSource          = dt_email_history;
                rg_email_history.DataBind();
                rg_email_history.Width          = 675;
                rg_email_history.ItemDataBound += rg_email_history_ItemDataBound;

                p.Controls.Add(lbl_title);
                p.Controls.Add(lbl_cur_email);
                p.Controls.Add(rg_email_history);

                args.UpdatePanel.ContentTemplateContainer.Controls.Add(p);
                args.UpdatePanel.ChildrenAsTriggers = true;
            }
        } // delete soon
Example #27
0
        public async Task <ActionResult> Register([FromBody] CreateUserViewModel newUser)
        {
            if (newUser.Password != newUser.PasswordConfirmation)
            {
                return(StatusCode(400, "A senha e confirmação de senha precisam ser iguais"));
            }

            if (!new User().IsValidEmail(newUser.Email))
            {
                return(StatusCode(400, "Formato de email inválido"));
            }

            var mappedUser = new User()
            {
                UserName = newUser.UserName,
                Email    = newUser.Email
            };

            try
            {
                IdentityResult checkUserCreation = await _userManager.CreateAsync(mappedUser, newUser.Password);

                if (checkUserCreation.Succeeded)
                {
                    _userManager.AddToRoleAsync(mappedUser, Roles.ROLE_USER).Wait();
                }
                else
                {
                    return(StatusCode(400, new
                    {
                        checkUserCreation.Errors
                    }));
                }

                var tokenConfirmEmail = await _userManager.GenerateEmailConfirmationTokenAsync(mappedUser);

                var emailBuilder = new EmailBuilder("", "",
                                                    mappedUser.Id,
                                                    tokenConfirmEmail,
                                                    "");

                await _emailSender.SendEmailAsync(mappedUser.Email,
                                                  EmailBuilder.SubjectConfirmEmail,
                                                  emailBuilder.GetEmailConfirmationMessage());

                return(StatusCode(200, "Por favor, confirme seu email antes de fazer login."));
            }
            catch (NullReferenceException e)
            {
                return(StatusCode(404, e.Message));
            }
            catch (Exception e)
            {
                return(StatusCode(500, e.Message));
            }
        }
Example #28
0
        protected void BuildAllEmailsAtCompany(object sender, EventArgs e)
        {
            String Output = EmailBuilder.BuildEmailsByCompanyID(CompanyID, true, true, false, false, Util.GetUserId());

            BindContacts(CompanyID);
            String Summary = Output.Substring(Output.IndexOf("E-mails Built:")).Replace("&emsp;", " - ").Replace("<p>", String.Empty);

            Util.PageMessageAlertify(this, Summary, "E-mails Built!", RadAjaxManager.GetCurrent(this.Page));
            btn_estimate_all_emails.Visible = false;
        }
Example #29
0
        public ConfirmAccountEmailBuilderTest()
        {
            _confirmAccountTemplateModel = new ConfirmAccountTemplateModel();
            var mockViewRenderService = new Mock <IViewRenderService>();

            mockViewRenderService.Setup(x => x.RenderToString("ConfirmAccountTemplate", _confirmAccountTemplateModel))
            .ReturnsAsync("test");

            _emailBuilder = new ConfirmAccountEmailBuilder <ConfirmAccountTemplateModel>(mockViewRenderService.Object);
        }
Example #30
0
    static void Main(string[] args)
    {
        Console.WriteLine("Email BUILDER!");
        var emailBuilder = new EmailBuilder();
        var diretor      = new EmailDirector(emailBuilder);

        var email = diretor.Work();

        email.Send();
    }
        public data_using_default_person_builder()
        {
            _personBuilder = new PersonBuilder(DataContainer);
            _emailBuilder = new EmailBuilder(DataContainer);

            _builder = new Builder<MyPerson>()
                .With(x =>
                          {
                              var person = _personBuilder.Build();
                              var emails = _emailBuilder.WithPerson(person).Build(1, 3).ToArray();

                              x.Name = person.FullName;
                              x.Emails = emails.Select(e => e.Address);
                          });
        }
        public IHttpActionResult ChangePassword(ChangePasswordRequest request)
        {
            var response = new ChangePasswordResponse();

            try
            {
                var isValidRequest = false;

                var memberId = request.GetMemberId();
                var member = MembershipAdapter.GetMember(memberId);

                if (request.IsValidModel())
                {
                    if (!request.PasswordsMatch())
                    {
                        request.AddError("Password", "Passwords do not match");
                    }
                }

                if (member.Authenticate(request.CurrentPassword))
                {
                    if (!request.HasErrors())
                    {
                        isValidRequest = true;
                    }
                }
                else
                {
                    request.AddError("Current password", "Current password is invalid");
                }

                if (isValidRequest)
                {
                    var memberPassword = new MemberPassword();

                    memberPassword.MemberId = member.Id;
                    memberPassword.InitializePassword(request.Password);

                    memberPassword = MembershipAdapter.UpdatePassword(memberPassword);

                    var email = new ChangePasswordEmail
                    {
                        DomainName = ConfigHelper.DomainName,
                        DomainBaseUrl = ConfigHelper.DomainBaseUrl,
                        Alias = member.Profile.Alias
                    };

                    var emailBuilder = new EmailBuilder(EmailReference.HTML.Templates.Main, EmailReference.HTML.Contents.ChangePassword);
                    var emailBody = emailBuilder.BuildBody<ChangePasswordEmail>(email);
                    var emailResult = EmailHelper.SendEmail(ConfigHelper.NoReplayEmailAddress,
                                                            ConfigHelper.DomainName,
                                                            member.Email,
                                                            member.Profile.Alias,
                                                            email.Subject,
                                                            emailBody,
                                                            true);

                    if (emailResult)
                    {
                        response.IsSuccessful = true;
                        response.StatusMessage = "Password update succeeded";
                    }
                }
                else
                {
                    response.IsSuccessful = false;
                    response.StatusMessage = "Password update was unsuccessful";
                    response.Errors.AddRange(request.GetErrors());
                }
            }
            catch (Exception ex)
            {
                request.CurrentPassword = string.Empty;
                request.Password = string.Empty;
                request.PasswordConfirm = string.Empty;

                this.Log<ChangePasswordRequest>(LogCategories.Error, request, ex.Message);

                response.IsSuccessful = false;
                response.StatusMessage = this.StatusMessageForExpection;
                response.Errors.Add(ex.Message);
            }

            return Ok(response);
        }
        public IHttpActionResult UpdateProfile(ProfileUpdateRequest request)
        {
            var response = new ProfileUpdateResponse();

            try
            {
                var isValidRequest = false;
                var emailChanged = false;

                var memberId = request.GetMemberId();

                var member = MembershipAdapter.GetMember(memberId);

                if (request.IsValidModel())
                {
                    if (member.Exists())
                    {
                        if (member.ConfirmedRegistration())
                        {
                            if (memberId == member.Id)
                            {
                                isValidRequest = true;
                                emailChanged = !string.Equals(request.Email, member.Email, StringComparison.InvariantCultureIgnoreCase);
                            }
                        }
                    }
                }

                if (isValidRequest)
                {
                    var memberProfile = new MemberProfile
                    {
                        MemberId = member.Id,
                        TimeZoneId = request.TimeZoneId,
                        Alias = request.Alias,
                        Gender = request.Gender,
                        BirthDate = request.BirthDate
                    };

                    memberProfile = MembershipAdapter.UpdateProfile(memberProfile);

                    if (emailChanged)
                    {
                        var memberEmailChange = MembershipAdapter.GetMemberEmailChange(member.Id);

                        if (memberEmailChange.Exists())
                        {
                            if (!string.Equals(memberEmailChange.Email, request.Email, StringComparison.InvariantCultureIgnoreCase))
                            {
                                memberEmailChange.Email = request.Email;

                                MembershipAdapter.UpdateEmailChange(memberEmailChange);
                            }
                        }
                        else
                        {
                            memberEmailChange.MemberId = member.Id;
                            memberEmailChange.Email = request.Email;

                            MembershipAdapter.CreateEmailChange(memberEmailChange);
                        }

                        var memberTokens = MembershipAdapter.GetMemberTokens(member.Id, TokenTypes.EmailChange, true);

                        var memberToken = new MemberToken();

                        memberToken.MemberId = member.Id;
                        memberToken.TokenType = TokenTypes.EmailChange;
                        memberToken.RequestDate = DateTime.Now.ToUniversalTime();

                        if (memberTokens.Any())
                        {
                            memberToken.Token = memberTokens.ElementAt(0).Token;
                            memberToken = MembershipAdapter.UpdateToken(memberToken);
                        }
                        else
                        {
                            memberToken.Token = Guid.NewGuid();
                            memberToken = MembershipAdapter.CreateToken(memberToken);
                        }

                        var email = new EmailChangeEmail
                        {
                            DomainName = ConfigHelper.DomainName,
                            DomainBaseUrl = ConfigHelper.DomainBaseUrl,
                            Alias = request.Alias,
                            ConfirmationToken = memberToken.Token
                        };

                        var emailBuilder = new EmailBuilder(EmailReference.HTML.Templates.Main, EmailReference.HTML.Contents.EmailChange);
                        var emailBody = emailBuilder.BuildBody<EmailChangeEmail>(email);
                        var emailResult = EmailHelper.SendEmail(ConfigHelper.NoReplayEmailAddress,
                                                                ConfigHelper.DomainName,
                                                                request.Email,
                                                                member.Profile.Alias,
                                                                email.Subject,
                                                                emailBody,
                                                                true);
                    }

                    response.IsSuccessful = true;
                    response.StatusMessage = "Update profile succeeded";
                }
                else
                {
                    response.IsSuccessful = false;
                    response.StatusMessage = "Update profile was unsuccessful";
                    response.Errors.AddRange(request.GetErrors());
                }
            }
            catch (Exception ex)
            {
                this.Log<ProfileUpdateRequest>(LogCategories.Error, request, ex.Message);

                response.IsSuccessful = false;
                response.StatusMessage = this.StatusMessageForExpection;
                response.Errors.Add(ex.Message);
            }

            return Ok(response);
        }
        public IHttpActionResult ResetPasswordToken(ResetPasswordRequest request)
        {
            var response = new SignInResponse();

            try
            {
                var isValidRequest = false;

                var memberId = request.GetMemberId();
                var member = MembershipAdapter.GetMember(request.Token);

                if (request.IsValidModel())
                {
                    if (!request.PasswordsMatch())
                    {
                        request.AddError("Password", "Passwords do not match");
                    }
                    else
                    {
                        if (member.Exists())
                        {
                            if (memberId == member.Id)
                            {
                                if (member.HasTokens())
                                {
                                    if (member.Tokens.ElementAt(0).IsValid(TokenTypes.PasswordReset))
                                    {
                                        isValidRequest = true;
                                    }
                                }
                            }
                        }
                    }
                }

                if (isValidRequest)
                {
                    var memberPassword = new MemberPassword();
                    memberPassword.MemberId = member.Id;
                    memberPassword.InitializePassword(request.Password);

                    MembershipAdapter.UpdatePassword(memberPassword);

                    var memberToken = new MemberToken
                    {
                        Token = member.Tokens.ElementAt(0).Token,
                        MemberId = member.Id,
                        TokenType = member.Tokens.ElementAt(0).TokenType,
                        ExpirationDate = member.Tokens.ElementAt(0).ExpirationDate,
                        ConfirmedDate = DateTime.Now.ToUniversalTime(),
                        RequestDate = member.Tokens.ElementAt(0).RequestDate
                    };

                    MembershipAdapter.UpdateToken(memberToken);

                    response.MemberId = member.Id.ToString();
                    response.Alias = member.Profile.Alias;
                    response.IsActive = member.IsActive;
                    response.IsAdmin = member.IsAdmin;

                    var email = new ResetPasswordEmail
                    {
                        DomainName = ConfigHelper.DomainName,
                        DomainBaseUrl = ConfigHelper.DomainBaseUrl,
                        Alias = member.Profile.Alias
                    };

                    var emailBuilder = new EmailBuilder(EmailReference.HTML.Templates.Main, EmailReference.HTML.Contents.ResetPassword);
                    var emailBody = emailBuilder.BuildBody<ResetPasswordEmail>(email);
                    var emailResult = EmailHelper.SendEmail(ConfigHelper.NoReplayEmailAddress,
                                                            ConfigHelper.DomainName,
                                                            member.Email,
                                                            member.Profile.Alias,
                                                            email.Subject,
                                                            emailBody,
                                                            true);

                    if (emailResult)
                    {
                        response.IsSuccessful = true;
                        response.StatusMessage = "Reset password succeeded";
                    }
                }
                else
                {
                    response.IsSuccessful = false;
                    response.StatusMessage = "Reset password was unsuccessful";
                    response.Errors.AddRange(request.GetErrors());
                }
            }
            catch (Exception ex)
            {
                request.Password = string.Empty;
                request.PasswordConfirm = string.Empty;

                this.Log<ResetPasswordRequest>(LogCategories.Error, request, ex.Message);

                response.IsSuccessful = false;
                response.StatusMessage = this.StatusMessageForExpection;
                response.Errors.Add(ex.Message);
            }

            return Ok(response);
        }
        public IHttpActionResult Register(RegistrationRequest request)
        {
            var response = new RegistrationResponse();

            try
            {
                var member = MembershipAdapter.GetMember(request.Email);

                if (member.Exists() && member.ConfirmedRegistration())
                {
                    request.AddError("Email", "Email already exists");
                }

                if (request.IsValidModel())
                {
                    if (!request.PasswordsMatch())
                    {
                        request.AddError("Password", "Passwords do not match");
                    }
                }

                if (!request.HasErrors())
                {
                    if (member.IsNewRegistration())
                    {
                        member.Email = request.Email;
                        member.RegistrationDate = DateTime.Now.ToUniversalTime();
                        member.IsActive = true;
                        member.IsAdmin = false;

                        member.Security = new MemberPassword();
                        member.Security.InitializePassword(request.Password);

                        member.Profile = new MemberProfile();
                        member.Profile.Alias = request.Alias;
                        member.Profile.TimeZoneId = ConfigHelper.DefaultTimeZoneId;

                        var registrationToken = new MemberToken();

                        registrationToken.Token = Guid.NewGuid();
                        registrationToken.TokenType = TokenTypes.Registration;
                        registrationToken.RequestDate = member.RegistrationDate;

                        member.Tokens.Add(registrationToken);

                        member = MembershipAdapter.AddMember(member);
                    }
                    else if (member.IsPendingRegistrationConfirmation())
                    {
                        member.Security.InitializePassword(request.Password);
                        member.Profile.Alias = request.Alias;

                        var registrationToken = MembershipAdapter.GetMemberTokens(member.Id, TokenTypes.Registration, true);

                        member.Tokens.Add(registrationToken.ElementAt(0));

                        member = MembershipAdapter.ReRegisterMember(member);
                    }

                    var email = new RegistrationEmail
                    {
                        DomainName = ConfigHelper.DomainName,
                        DomainBaseUrl = ConfigHelper.DomainBaseUrl,
                        Alias = request.Alias,
                        ConfirmationToken = member.Tokens.ElementAt(0).Token
                    };

                    var emailBuilder = new EmailBuilder(EmailReference.HTML.Templates.Main, EmailReference.HTML.Contents.Registration);
                    var emailBody = emailBuilder.BuildBody<RegistrationEmail>(email);
                    var emailResult = EmailHelper.SendEmail(ConfigHelper.NoReplayEmailAddress,
                                                            ConfigHelper.DomainName,
                                                            request.Email,
                                                            request.Alias,
                                                            email.Subject,
                                                            emailBody,
                                                            true);

                    if (emailResult)
                    {
                        response.IsSuccessful = true;
                        response.StatusMessage = "Registration succeeded";
                    }
                }
                else
                {
                    response.Errors.AddRange(request.GetErrors());
                    response.IsSuccessful = false;
                    response.StatusMessage = "Registration was unsuccessful";
                }
            }
            catch (Exception ex)
            {
                request.Password = string.Empty;
                request.PasswordConfirm = string.Empty;

                this.Log<RegistrationRequest>(LogCategories.Error, request, ex.Message);

                response.IsSuccessful = false;
                response.StatusMessage = this.StatusMessageForExpection;
                response.Errors.Add(ex.Message);
            }

            return Ok(response);
        }
        public IHttpActionResult ForgotPassword(ForgotPasswordRequest request)
        {
            var response = new ForgotPasswordResponse();

            try
            {
                var isValidRequest = false;

                var member = MembershipAdapter.GetMember(request.Email);

                if (request.IsValidModel())
                {
                    if (member.Exists())
                    {
                        if (member.ConfirmedRegistration())
                        {
                            isValidRequest = true;
                        }
                    }
                }

                if (isValidRequest)
                {
                    MemberToken memberToken = new MemberToken();

                    memberToken.MemberId = member.Id;
                    memberToken.TokenType = TokenTypes.PasswordReset;
                    memberToken.RequestDate = DateTime.Now.ToUniversalTime();
                    memberToken.ExpirationDate = memberToken.RequestDate.AddHours(ConfigHelper.PasswordResetExpiration);

                    var memberTokens = MembershipAdapter.GetMemberTokens(member.Id, TokenTypes.PasswordReset, true);

                    if (!memberTokens.Any())
                    {
                        memberToken.Token = Guid.NewGuid();

                        memberToken = MembershipAdapter.CreateToken(memberToken);
                    }
                    else
                    {
                        memberToken.Token = memberTokens.ElementAt(0).Token;

                        memberToken = MembershipAdapter.UpdateToken(memberToken);
                    }

                    var email = new ForgotPasswordEmail
                    {
                        DomainName = ConfigHelper.DomainName,
                        DomainBaseUrl = ConfigHelper.DomainBaseUrl,
                        Alias = member.Profile.Alias,
                        Token = memberToken.Token
                    };

                    var emailBuilder = new EmailBuilder(EmailReference.HTML.Templates.Main, EmailReference.HTML.Contents.ForgotPassword);
                    var emailBody = emailBuilder.BuildBody<ForgotPasswordEmail>(email);
                    var emailResult = EmailHelper.SendEmail(ConfigHelper.NoReplayEmailAddress,
                                                            ConfigHelper.DomainName,
                                                            member.Email,
                                                            member.Profile.Alias,
                                                            email.Subject,
                                                            emailBody,
                                                            true);
                    if (emailResult)
                    {
                        response.IsSuccessful = true;
                        response.StatusMessage = "Forgot password succeeded";
                    }

                }
                else
                {
                    response.IsSuccessful = false;
                    response.StatusMessage = "Forgot password was unsuccessful";
                    response.Errors.AddRange(request.GetErrors());
                }
            }
            catch (Exception ex)
            {
                this.Log<ForgotPasswordRequest>(LogCategories.Error, request, ex.Message);

                response.IsSuccessful = false;
                response.StatusMessage = this.StatusMessageForExpection;
                response.Errors.Add(ex.Message);
            }

            return Ok(response);
        }
        public IHttpActionResult ConfirmRegistrationToken(Guid token)
        {
            var response = new SignInResponse();

            try
            {
                var isValidToken = false;

                var member = MembershipAdapter.GetMember(token);

                if (member.Exists())
                {
                    if (member.HasTokens())
                    {
                        if (member.Tokens.ElementAt(0).IsValid(TokenTypes.Registration))
                        {
                            isValidToken = true;
                        }
                    }
                }

                if (isValidToken)
                {
                    member.MembershipDate = DateTime.Now.ToUniversalTime();
                    member.Tokens.ElementAt(0).ConfirmedDate = member.MembershipDate;

                    member = MembershipAdapter.ConfirmRegistration(member);

                    var email = new RegistrationConfirmationEmail
                    {
                        DomainName = ConfigHelper.DomainName,
                        DomainBaseUrl = ConfigHelper.DomainBaseUrl,
                        Alias = member.Profile.Alias
                    };

                    var emailBuilder = new EmailBuilder(EmailReference.HTML.Templates.Main, EmailReference.HTML.Contents.RegistrationConfirmation);
                    var emailBody = emailBuilder.BuildBody<RegistrationConfirmationEmail>(email);
                    var emailResult = EmailHelper.SendEmail(ConfigHelper.NoReplayEmailAddress,
                                                            ConfigHelper.DomainName,
                                                            member.Email,
                                                            member.Profile.Alias,
                                                            email.Subject,
                                                            emailBody,
                                                            true);
                    if (emailResult)
                    {
                        response.MemberId = member.Id.ToString();
                        response.Alias = member.Profile.Alias;
                        response.IsActive = member.IsActive;
                        response.IsAdmin = member.IsAdmin;

                        response.IsSuccessful = true;
                        response.StatusMessage = "Confirm registration succeeded";
                    }
                }
                else
                {
                    response.IsSuccessful = false;
                    response.StatusMessage = "Confirm registration was unsuccessful";
                }
            }
            catch (Exception ex)
            {
                this.Log(LogCategories.Error, token.ToString(), ex.Message);

                response.IsSuccessful = false;
                response.StatusMessage = this.StatusMessageForExpection;
                response.Errors.Add(ex.Message);
            }

            return Ok(response);
        }