コード例 #1
0
        public StatusCodeResult EmailEvent([FromBody] Object json)
        {
            try
            {
                //converting json to object
                var emailEvent = new EmailEvent(json.ToString());

                //Validate XML
                var xmlResponse = XsdValidation.XmlObjectValidation(emailEvent);

                if (xmlResponse != null)
                {
                    using (var connection = factory.CreateConnection())
                        using (var channel = connection.CreateModel())
                        {
                            var addUserBody = Encoding.UTF8.GetBytes(xmlResponse);
                            var properties  = channel.CreateBasicProperties();
                            properties.Headers = new Dictionary <string, object>();
                            properties.Headers.Add("eventType", "frontend.email_event");
                            channel.BasicPublish(exchange: "events.exchange",
                                                 routingKey: "",
                                                 basicProperties: properties,
                                                 body: addUserBody
                                                 );
                        }
                }
                return(StatusCode(201));
            }
            catch (Exception ex) {
                Sender.SendErrorMessage(ex);
                return(StatusCode(500));
            }
        }
コード例 #2
0
        public IActionResult ForgetPasswordViaEmail([FromBody] ForgetEmailReq forgetEmail)
        {
            try
            {
                if (!ValidateHelper.IsEmailFormat(forgetEmail.Email))
                {
                    return(Json(new JsonResultModel(ReturnCode.ParameterError, "Email format is not correct.")));
                }

                var reply = Client.ForgetPasswordViaEmail(forgetEmail);

                //发送邮件
                string emailMessage;
                bool   send = EmailEvent.ForgotPasswordEmail(forgetEmail.Email, reply.Secrect, out emailMessage);
                if (!send)
                {
                    return(Json(new JsonResultModel(ReturnCode.MessageError, $"Email send failed: {emailMessage}")));
                }

                return(Json(new JsonResultModel(ReturnCode.Success, "Retrieve the password from email successful.", reply)));
            }
            catch (RpcException ex)
            {
                return(Json(new JsonResultModel(ReturnCode.SubmitError, ex.Status.Detail)));
            }
        }
コード例 #3
0
ファイル: UserService.cs プロジェクト: namtel-hp/Sombra
        public async Task <bool> ForgotPassword(ForgotPasswordViewModel forgotPasswordViewModel)
        {
            var forgotPasswordRequest = new ForgotPasswordRequest(forgotPasswordViewModel.EmailAddress);
            var getUserByEmailRequest = new GetUserByEmailRequest {
                EmailAddress = forgotPasswordViewModel.EmailAddress
            };

            var clientInfo   = UserAgentParser.Extract(_userAgent);
            var userResponse = await _bus.RequestAsync(getUserByEmailRequest);

            var name = Helpers.GetUserName(userResponse.User);
            var forgotPasswordResponse = await _bus.RequestAsync(forgotPasswordRequest);

            var actionurl = $"{_baseUrl}/Account/ChangePassword/{forgotPasswordResponse.Secret}";

            var emailTemplateRequest = new EmailTemplateRequest(EmailType.ForgotPassword);
            var response             = await _bus.RequestAsync(emailTemplateRequest);

            var template = TemplateContentBuilder.Build(response.Template,
                                                        TemplateContentBuilder.CreateForgotPasswordTemplateContent(name, actionurl, clientInfo.OperatingSystem, clientInfo.BrowserName));

            var email = new EmailEvent(new EmailAddress("noreply", "*****@*****.**"), new EmailAddress(name, forgotPasswordViewModel.EmailAddress), "Wachtwoord vergeten ikdoneer.nu",
                                       template, true);

            await _bus.PublishAsync(email);

            return(true);
        }
コード例 #4
0
        public IActionResult ActivateNewUser([FromQuery] ForgetEmailReq emailReq)
        {
            try
            {
                if (!ValidateHelper.IsEmailFormat(emailReq.Email))
                {
                    return(Json(new JsonResultModel(ReturnCode.ParameterError, "Email format is not correct.")));
                }

                var activaeFactor = Client.ActivateNewUser(emailReq);

                //发送邮件
                string emailMessage;
                bool   send = EmailEvent.RegisterEmail(emailReq.Email, activaeFactor.UserId, activaeFactor.Code, out emailMessage);
                if (!send)
                {
                    return(Json(new JsonResultModel(ReturnCode.MessageError, $"Email send failed: {emailMessage}")));
                }

                return(Json(new JsonResultModel(ReturnCode.Success, "User active email send successful.")));
            }
            catch (RpcException)
            {
                return(Json(new JsonResultModel(ReturnCode.SubmitError, "Activate link is expired.")));
            }
        }
コード例 #5
0
        //[ProducesResponseType(typeof(UserReply), 200)]
        public IActionResult Signup([FromBody] RegisterReq register)
        {
            try
            {
                if (!ValidateHelper.IsEmailFormat(register.Email))
                {
                    return(Json(new JsonResultModel(ReturnCode.ParameterError, "Email format is not correct.")));
                }
                if (register.Password == "")
                {
                    return(Json(new JsonResultModel(ReturnCode.ParameterError, "Password should not blank.")));
                }
                if (register.DeviceId == "")
                {
                    return(Json(new JsonResultModel(ReturnCode.ParameterError, "Device id should not blank.")));
                }

                if (IsEnableInviteCode())
                {
                    register.EnableCode = true;
                    if (register.InviteCode == "")
                    {
                        return(Json(new JsonResultModel(ReturnCode.ParameterError, "Miss invite code parameter cannot complete register.")));
                    }
                }

                var     reply = Client.Signup(register);
                JObject data  = new JObject();
                data["Id"]        = reply.Id;
                data["Email"]     = reply.Email;
                data["Activated"] = reply.Activated.ToString();
                data["RegistIp"]  = reply.RegistIp;
                data["DeviceId"]  = reply.DeviceId;

                var factor = FactorClient.QueryFactor(new FactorReq()
                {
                    UserId = reply.Id, Type = FactorType.EmailAuthType
                });

                //发送邮件
                string emailMessage;
                bool   send = EmailEvent.RegisterEmail(reply.Email, reply.Id, factor.Code, out emailMessage);
                if (!send)
                {
                    return(Json(new JsonResultModel(ReturnCode.MessageError, $"Email send failed: {emailMessage}")));
                }

                return(Json(new JsonResultModel(ReturnCode.Success, "User register successful.", reply)));
            }
            catch (RpcException ex)
            {
                return(Json(new JsonResultModel(ReturnCode.SubmitError, ex.Status.Detail)));
            }
        }
コード例 #6
0
ファイル: UserService.cs プロジェクト: namtel-hp/Sombra
        private async Task SendActivationTokenEmail(string userName, string emailAddress, string activationToken)
        {
            var actionurl            = $"{_baseUrl}/Account/ActivateAccount?Token={activationToken}";
            var emailTemplateRequest = new EmailTemplateRequest(EmailType.ConfirmAccount);
            var response             = await _bus.RequestAsync(emailTemplateRequest);

            var template = TemplateContentBuilder.Build(response.Template,
                                                        TemplateContentBuilder.CreateConfirmAccountTemplateContent(userName, actionurl));

            var email = new EmailEvent(new EmailAddress("noreply", "*****@*****.**"), new EmailAddress(userName, emailAddress), "Account activatie ikdoneer.nu",
                                       template, true);

            await _bus.PublishAsync(email);
        }
コード例 #7
0
        public EmailTemplate EmailTemplateGet(EmailEvent emailEvent)
        {
            using (var conn = DbHelper.GetDBConnection())
            {
                EmailTemplate retVal;
                try
                {
                    var para = new DynamicParameters();
                    para.Add("@FdpEmailTemplateId", (int)emailEvent, DbType.Int32);
                    retVal = conn.Query<EmailTemplate>("dbo.Fdp_EmailTemplate_Get", para, commandType: CommandType.StoredProcedure).FirstOrDefault();
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    throw;
                }

                return retVal;
            }
        }
コード例 #8
0
        public EmailTemplate EmailTemplateGet(EmailEvent emailEvent)
        {
            using (var conn = DbHelper.GetDBConnection())
            {
                EmailTemplate retVal;
                try
                {
                    var para = new DynamicParameters();
                    para.Add("@FdpEmailTemplateId", (int)emailEvent, DbType.Int32);
                    retVal = conn.Query <EmailTemplate>("dbo.Fdp_EmailTemplate_Get", para, commandType: CommandType.StoredProcedure).FirstOrDefault();
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    throw;
                }

                return(retVal);
            }
        }
コード例 #9
0
ファイル: EmailServiceTest.cs プロジェクト: namtel-hp/Sombra
        public async Task SendTest()
        {
            // Arrange
            var smtpClientMock = new Mock <SmtpClient>();

            smtpClientMock.Setup(m => m.DisconnectAsync(It.IsAny <bool>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(true));
            smtpClientMock.Setup(m => m.SendAsync(It.IsAny <MimeMessage>(), It.IsAny <CancellationToken>(), It.IsAny <ITransferProgress>())).Returns(Task.FromResult(true));

            var mailboxTestTo   = new EmailAddress("TestRecipient", "*****@*****.**");
            var mailboxTestFrom = new EmailAddress("TestSender", "*****@*****.**");
            var subjectTest     = "Test Subject";
            var contentTest     = "Test Content";

            var emailMessage = new EmailEvent(mailboxTestFrom, mailboxTestTo, subjectTest, contentTest, true);
            var emailService = new EmailEventHandler(smtpClientMock.Object);
            // Act
            await emailService.ConsumeAsync(emailMessage);

            // Assert
            smtpClientMock.Verify(m => m.DisconnectAsync(It.Is <bool>(p => true), It.IsAny <CancellationToken>()), Times.Once);
            smtpClientMock.Verify(m => m.SendAsync(It.Is <MimeMessage>(p =>
                                                                       p.Subject == subjectTest && p.HtmlBody == contentTest && p.To[0].Name == mailboxTestTo.Name && p.From[0].Name == mailboxTestFrom.Name),
                                                   It.IsAny <CancellationToken>(), It.IsAny <ITransferProgress>()), Times.Once);
        }
コード例 #10
0
 public EmailTemplate GetEmailTemplate(EmailEvent forEmailEvent)
 {
     return(_templateData.EmailTemplateGet(forEmailEvent));
 }
コード例 #11
0
 public EmailTemplate GetEmailTemplate(EmailEvent forEmailEvent)
 {
     return _templateData.EmailTemplateGet(forEmailEvent);
 }
コード例 #12
0
 public void SendEmailThread()
 {
     string emailMessage = "";
     bool   send         = EmailEvent.RegisterEmail("*****@*****.**", 38, "32425678", out emailMessage);
 }