コード例 #1
0
        public async Task <ApplicationUser> RegisterNewUserAsync(string userName, string email, string password, bool requireConfirmEmail)
        {
            var user = new ApplicationUser
            {
                UserName = userName,
                Email    = email
            };

            var result = password == null ?
                         await _userManager.CreateAsync(user) :
                         await _userManager.CreateAsync(user, password);

            if (!result.Succeeded)
            {
                throw new DomainException(string.Join(",", result.Errors.Select(i => i.Description)));
            }

            await _userManager.AddClaimsAsync(user, new Claim[] {
                new Claim(Policies.IsUser, string.Empty),
                new Claim(JwtClaimTypes.Name, user.UserName),
                new Claim(JwtClaimTypes.Email, user.Email),
                new Claim(JwtClaimTypes.EmailVerified, "false", ClaimValueTypes.Boolean)
            });

            if (await _roleManager.RoleExistsAsync(DefaultRoleNames.User))
            {
                await _userManager.AddToRoleAsync(user, DefaultRoleNames.User);
            }

            _logger.LogInformation("New user registered: {0}", user);

            var emailMessage = new EmailMessageDto();

            if (requireConfirmEmail)
            {
                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
                var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var callbackUrl = $"{_configuration["BlazorBoilerplate:ApplicationUrl"]}/Account/ConfirmEmail/{user.Id}?token={token}";

                emailMessage.BuildNewUserConfirmationEmail(user.UserName, user.Email, callbackUrl, user.Id.ToString(), token); //Replace First UserName with Name if you want to add name to Registration Form
            }
            else
            {
                emailMessage.BuildNewUserEmail(user.FullName, user.UserName, user.Email, password);
            }

            emailMessage.ToAddresses.Add(new EmailAddressDto(user.Email, user.Email));

            try
            {
                await _emailManager.SendEmailAsync(emailMessage);
            }
            catch (Exception ex)
            {
                _logger.LogError("New user email failed: Body: {0}, Error: {1}", emailMessage.Body, ex.GetBaseException().Message);
            }

            return(user);
        }
コード例 #2
0
        async Task SendMailAsync(EmailMessageDto emailMessage)
        {
            var message = new MimeMessage();

            message.From.Add(new MailboxAddress(_mailSettings.SenderName, _mailSettings.Email));
            message.To.Add(new MailboxAddress(emailMessage.ToName, emailMessage.ToAddress));
            message.Subject = emailMessage.Subject;
            message.Body    = new TextPart("plain")
            {
                Text = emailMessage.Text
            };

            using (var client = new SmtpClient())
            {
                await client.ConnectAsync(_mailSettings.SmtpServer, _mailSettings.Port);

                client.AuthenticationMechanisms.Remove("XOAUTH2");

                await client.AuthenticateAsync(_mailSettings.Email, _mailSettings.Password);

                await client.SendAsync(message);

                await client.DisconnectAsync(true);
            }
        }
コード例 #3
0
        public ResultDto SendMessage(EmailMessageDto messageDto)
        {
            if (messageDto.Sender.Id == messageDto.Receiver.Id)
            {
                return new ResultDto()
                       {
                           Message = "You cannot send e-mail to yourself", RequestStatus = RequestStatus.Error
                       }
            }
            ;

            var message = new EmailMessage()
            {
                DateSent            = DateTime.Now,
                IsRead              = false,
                ReceiverId          = messageDto.Receiver.Id,
                SenderId            = messageDto.Sender.Id,
                RequestDeliveryNote = messageDto.RequestDeliveryNote,
                Message             = messageDto.Message,
                Title = messageDto.Title
            };

            _messageRepository.SaveAndSendMessage(message);

            return(new ResultDto()
            {
                Message = "E-mail has been sent", RequestStatus = RequestStatus.Success
            });
        }
コード例 #4
0
        public virtual void Email(int invoiceUid, int templateUid, EmailMessageDto emailMessage)
        {
            TasksRunner tasksRunner = new TasksRunner(this.WSAccessKey, this.FileUid);

            tasksRunner.Tasks.Add(this.CreateEmailTask(invoiceUid, templateUid, emailMessage));
            this.HandleEmailResult(tasksRunner.Execute());
        }
コード例 #5
0
        public async Task SendTestMail2()
        {
            //Arrange
            var settings = new ConfigSettingsDto
            {
                RelayAddress = "10.200.7.116"
            };

            var accessor = new EmailAccessor(settings);

            var msg = new EmailMessageDto
            {
                To              = "",
                From            = "no-repy@",
                Subject         = "Test2",
                Body            = "This is a test with zipped excel.",
                FileName        = "sample.zip",
                AttatchmentMime = "application/zip",
                File            = GetEmbededFileByName("stuff.zip")
            };

            //Act
            await accessor.SendEmail(msg);

            //Assert
        }
コード例 #6
0
        public override async Task <CreateEmailMessageResponse> CreateEmailMessage(
            CreateEmailMessageRequest request, ServerCallContext context)
        {
            var emailMessage = new EmailMessageDto()
            {
                From    = request.Message.From,
                Tos     = request.Message.Tos,
                CCs     = request.Message.CCs,
                BCCs    = request.Message.BCCs,
                Subject = request.Message.Subject,
                Body    = request.Message.Body,
            };

            var result = await mediator.Send(new CreateEmailMessageCommand(emailMessage));

            var response = new CreateEmailMessageResponse
            {
                Message = new EmailMessage
                {
                    Id = result.Message.Id.ToString()
                }
            };

            return(response);
        }
コード例 #7
0
        public async Task SendMailAsync(string toName, string toAddress, string subject, string text)
        {
            if (!_mailSettings.IsEnabled)
            {
                return;
            }

            var email = new EmailMessageDto {
                ToName = toName, ToAddress = toAddress, Subject = subject, Text = text
            };
            await _messagePublisher.Publish(email);

            //var message = new MimeMessage();
            //message.From.Add(new MailboxAddress(_mailSettings.SenderName, _mailSettings.Email));
            //message.To.Add(new MailboxAddress(toName, toAddress));
            //message.Subject = subject;
            //message.Body = new TextPart("plain")
            //{
            //    Text = text
            //};

            //using (var client = new SmtpClient())
            //{
            //    await client.ConnectAsync(_mailSettings.SmtpServer, _mailSettings.Port);

            //    client.AuthenticationMechanisms.Remove("XOAUTH2");

            //    await client.AuthenticateAsync(_mailSettings.Email, _mailSettings.Password);

            //    await client.SendAsync(message);
            //    await client.DisconnectAsync(true);
            //}
        }
コード例 #8
0
ファイル: EmailManager.cs プロジェクト: TPGInsights/Portal
        public async Task <ApiResponse> QueueEmail(EmailMessageDto emailMessage, EmailType emailType)
        {
            try
            {
                _dbContext.QueuedEmails.Add(new QueuedEmail()
                {
                    Email = JsonConvert.SerializeObject(emailMessage), EmailType = emailType
                });

                await _dbContext.SaveChangesAsync();

                QueueSync.Release();

                var msg = $"Email to {string.Join(" - ", emailMessage.ToAddresses.Select(i => i.Address))} queued";

                _logger.LogInformation(msg);

                return(new ApiResponse(Status200OK, msg));
            }
            catch (Exception ex)
            {
                _logger.LogError($"QueueEmail failed {ex.GetBaseException().Message} {ex.StackTrace}");

                return(new ApiResponse(Status500InternalServerError, ex.GetBaseException().Message));
            }
        }
コード例 #9
0
        public IActionResult Index(EmailMessageDto email)
        {
            try
            {
                var result = _teacherService.SendEmailToParent(email);
                if (result)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    return(RedirectToAction("Index", "Teacher"));
                }
            }
            catch (Exception e)
            {
                if (e is ArgumentNullException || e is ArgumentException)
                {
                    ViewBag.Info = e.Message;
                    return(View());
                }

                return(View("Error"));
            }
        }
コード例 #10
0
        public virtual void UpdateAndEmail(InvoiceDto invoice, int templateUid, EmailMessageDto emailMessage)
        {
            TasksRunner tasksRunner = new TasksRunner(this.WSAccessKey, this.FileUid);

            tasksRunner.Tasks.Add(this.CreateUpdateTask(invoice, templateUid, emailMessage));
            this.HandleUpdateResult(tasksRunner.Execute(), invoice);
            invoice.IsSent = true;              //	Reaches here - no error. Assume invoice has been sent successfully.
        }
コード例 #11
0
ファイル: EmailManager.cs プロジェクト: TPGInsights/Portal
        //Used by API
        public async Task <ApiResponse> SendTestEmail(EmailDto parameters)
        {
            EmailMessageDto email = _emailFactory.BuildTestEmail(parameters.ToName);

            email.ToAddresses.Add(new EmailAddressDto(parameters.ToName, parameters.ToAddress));

            return(parameters.Queued ? await QueueEmail(email, EmailType.Test) : await SendEmail(email));
        }
コード例 #12
0
ファイル: EmailManager.cs プロジェクト: 1002527441/QDCOA
        public async Task <ApiResponse> SendEmailAsync(EmailMessageDto emailMessage)
        {
            var message = new MimeMessage();

            // Set From Address it was not set
            if (emailMessage.FromAddresses.Count == 0)
            {
                emailMessage.FromAddresses.Add(new EmailAddressDto(_emailConfiguration.FromName, _emailConfiguration.FromAddress));
            }

            message.To.AddRange(emailMessage.ToAddresses.Select(x => new MailboxAddress(x.Name, x.Address)));
            message.From.AddRange(emailMessage.FromAddresses.Select(x => new MailboxAddress(x.Name, x.Address)));
            message.Cc.AddRange(emailMessage.CcAddresses.Select(x => new MailboxAddress(x.Name, x.Address)));
            message.Bcc.AddRange(emailMessage.BccAddresses.Select(x => new MailboxAddress(x.Name, x.Address)));

            //Use for testing - send a copy of any email to from address when in debug mode
            //if (System.Diagnostics.Debugger.IsAttached)
            //{
            //    message.To.Clear();
            //    message.To.Add(new MailboxAddress(_emailConfiguration.FromName, _emailConfiguration.FromAddress));
            //}

            message.Subject = emailMessage.Subject;

            message.Body = emailMessage.IsHtml ? new BodyBuilder {
                HtmlBody = emailMessage.Body
            }.ToMessageBody() : new TextPart("plain")
            {
                Text = emailMessage.Body
            };

            //TODO store all emails in Database

            //Be careful that the SmtpClient class is the one from Mailkit not the framework!
            using (var emailClient = new SmtpClient())
            {
                if (!_emailConfiguration.SmtpUseSSL)
                {
                    emailClient.ServerCertificateValidationCallback = (object sender2, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => true;
                }

                await emailClient.ConnectAsync(_emailConfiguration.SmtpServer, _emailConfiguration.SmtpPort, _emailConfiguration.SmtpUseSSL);

                //Remove any OAuth functionality as we won't be using it.
                emailClient.AuthenticationMechanisms.Remove("XOAUTH2");

                if (!string.IsNullOrWhiteSpace(_emailConfiguration.SmtpUsername))
                {
                    await emailClient.AuthenticateAsync(_emailConfiguration.SmtpUsername, _emailConfiguration.SmtpPassword);
                }

                await emailClient.SendAsync(message);

                await emailClient.DisconnectAsync(true);

                return(new ApiResponse(Status203NonAuthoritative));
            }
        }
コード例 #13
0
        protected virtual ITask CreateEmailTask(int invoiceUid, int templateUid, EmailMessageDto emailMessage)
        {
            EmailPdfInvoiceTask task = new EmailPdfInvoiceTask();

            task.InvoiceUid   = invoiceUid;
            task.TemplateUid  = templateUid;
            task.EmailMessage = emailMessage;
            return(task);
        }
コード例 #14
0
        public async Task <ApplicationUser> RegisterNewUserAsync(string userName, string email, string password, bool requireConfirmEmail)
        {
            var user = new ApplicationUser
            {
                UserName = userName,
                Email    = email
            };

            var createUserResult = password == null ?
                                   await _userManager.CreateAsync(user) :
                                   await _userManager.CreateAsync(user, password);

            if (!createUserResult.Succeeded)
            {
                throw new DomainException(createUserResult.Errors.FirstOrDefault()?.Description);
            }

            await _userManager.AddClaimsAsync(user, new Claim[] {
                new Claim(Policies.IsUser, ""),
                new Claim(JwtClaimTypes.Name, user.UserName),
                new Claim(JwtClaimTypes.Email, user.Email),
                new Claim(JwtClaimTypes.EmailVerified, "false", ClaimValueTypes.Boolean)
            });

            //Role - Here we tie the new user to the "User" role
            await _userManager.AddToRoleAsync(user, "User");

            _logger.LogInformation("New user registered: {0}", user);

            var emailMessage = new EmailMessageDto();

            if (requireConfirmEmail)
            {
                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
                var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                string callbackUrl = string.Format("{0}/Account/ConfirmEmail/{1}?token={2}", _configuration["BlazorBoilerplate:ApplicationUrl"], user.Id, token);

                emailMessage.BuildNewUserConfirmationEmail(user.UserName, user.Email, callbackUrl, user.Id.ToString(), token); //Replace First UserName with Name if you want to add name to Registration Form
            }
            else
            {
                emailMessage.BuildNewUserEmail(user.FullName, user.UserName, user.Email, password);
            }

            emailMessage.ToAddresses.Add(new EmailAddressDto(user.Email, user.Email));
            try
            {
                await _emailService.SendEmailAsync(emailMessage);
            }
            catch (Exception ex)
            {
                _logger.LogInformation("New user email failed: Body: {0}, Error: {1}", emailMessage.Body, ex.Message);
            }

            return(user);
        }
コード例 #15
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = Input.Email, Email = Input.Email, Surname = Input.Surname
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    EmailMessageDto emailMessage = new EmailMessageDto();
                    emailMessage.ToAddresses = new List <EmailAddressDto>();
                    emailMessage.ToAddresses.Add(new EmailAddressDto("", Input.Email));
                    emailMessage.Subject = "Confirm your email";
                    emailMessage.Body    = $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.";
                    emailMessage.IsHtml  = true;
                    await _emailSender.SendEmailAsync(emailMessage);

                    //await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                    //    $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email }));
                    }
                    else
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
コード例 #16
0
        public IHttpActionResult SendEmail(EmailMessageDto messageDto)
        {
            messageDto.Sender = new ApplicationUserDto()
            {
                Id = User.Identity.GetUserId()
            };

            var result = _messageService.SendMessage(messageDto);

            return(this.ReturnHttpResponse(result));
        }
コード例 #17
0
        public EmailMessageDto BuildTestEmail(string recipient)
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["TestEmail.template"].Value
                                .FormatWith(new { baseUrl = BaseUrl, user = recipient, testDate = DateTime.Now });

            emailMessage.Subject = L["TestEmail.subject", recipient];

            return(emailMessage);
        }
コード例 #18
0
ファイル: EmailFactory.cs プロジェクト: 1002527441/QDCOA
        public EmailMessageDto BuildTestEmail()
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["TestEmail.template"].Value
                                .FormatWith(new { user = emailMessage.ToAddresses[0].Name, testDate = DateTime.Now });

            emailMessage.Subject = L["TestEmail.subject", emailMessage.ToAddresses[0].Name];

            return(emailMessage);
        }
コード例 #19
0
        public EmailMessageDto BuildPasswordResetEmail(string userName)
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["PasswordReset.template"].Value
                                .FormatWith(new { baseUrl, userName });

            emailMessage.Subject = L["PasswordReset.subject", userName];

            return(emailMessage);
        }
コード例 #20
0
        public EmailMessageDto BuildNewUserEmail(string fullName, string userName, string emailAddress, string password)
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["NewUserEmail.template"].Value
                                .FormatWith(new { baseUrl, fullName = userName, userName, email = emailAddress, password });

            emailMessage.Subject = L["NewUserEmail.subject", fullName];

            return(emailMessage);
        }
コード例 #21
0
        public EmailMessageDto BuildForgotPasswordEmail(string name, string callbackUrl, string token)
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["ForgotPassword.template"].Value
                                .FormatWith(new { baseUrl, name, callbackUrl, token });

            emailMessage.Subject = L["ForgotPassword.subject", name];

            return(emailMessage);
        }
コード例 #22
0
        public EmailMessageDto BuildNewUserConfirmationEmail(string fullName, string userName, string callbackUrl)
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["NewUserConfirmationEmail.template"].Value
                                .FormatWith(new { baseUrl, name = fullName, userName, callbackUrl });

            emailMessage.Subject = L["NewUserConfirmationEmail.subject", fullName];

            return(emailMessage);
        }
コード例 #23
0
ファイル: EmailFactory.cs プロジェクト: 1002527441/QDCOA
        public EmailMessageDto BuildNewUserConfirmationEmail(string recepientName, string userName, string callbackUrl, string userId, string token)
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["NewUserConfirmationEmail.template"].Value
                                .FormatWith(new { name = recepientName, userName, callbackUrl, userId, token });

            emailMessage.Subject = L["NewUserConfirmationEmail.subject", recepientName];

            return(emailMessage);
        }
コード例 #24
0
ファイル: EmailService.cs プロジェクト: swilkodev/CleanFunc
        public Task SendAsync(EmailMessageDto message)
        {
            Guard.Against.Null(message, nameof(message));

            logger.LogCritical("Sending email");

            // Likely use something like SendGrid here.

            // Consider sending the email message to a queue so that retries can be handled.

            return(Task.CompletedTask);
        }
コード例 #25
0
        public async Task <ApiResponse> ReceiveMailImapAsync()
        {
            using (var emailClient = new ImapClient())
            {
                try
                {
                    // use this if you need to specify using ssl; MailKit should usually be able to autodetect the appropriate settings
                    // await emailClient.ConnectAsync(_emailConfiguration.ImapServer, _emailConfiguration.ImapPort, _emailConfiguration.ImapUseSSL).ConfigureAwait(false);

                    await emailClient.ConnectAsync(_emailConfiguration.ImapServer, _emailConfiguration.ImapPort).ConfigureAwait(false);

                    emailClient.AuthenticationMechanisms.Remove("XOAUTH2");


                    if (!string.IsNullOrWhiteSpace(_emailConfiguration.ImapUsername))
                    {
                        await emailClient.AuthenticateAsync(_emailConfiguration.ImapUsername, _emailConfiguration.ImapPassword).ConfigureAwait(false);
                    }

                    List <EmailMessageDto> emails = new List <EmailMessageDto>();
                    await emailClient.Inbox.OpenAsync(MailKit.FolderAccess.ReadOnly);

                    //TODO implement email results filtering
                    var uids = await emailClient.Inbox.SearchAsync(SearchQuery.All);

                    foreach (var uid in uids)
                    {
                        var message = await emailClient.Inbox.GetMessageAsync(uid);

                        var emailMessage = new EmailMessageDto
                        {
                            Body = !string.IsNullOrEmpty(message.HtmlBody) ? message.HtmlBody : message.TextBody,

                            Subject = message.Subject
                        };
                        emailMessage.ToAddresses.AddRange(message.To.Select(x => (MailboxAddress)x).Select(x => new EmailAddressDto(x.Name, x.Address)));
                        emailMessage.FromAddresses.AddRange(message.From.Select(x => (MailboxAddress)x).Select(x => new EmailAddressDto(x.Name, x.Address)));

                        emails.Add(emailMessage);
                    }

                    await emailClient.DisconnectAsync(true);

                    return(new ApiResponse(200, null, emails));
                }
                catch (Exception ex)
                {
                    _logger.LogError("Imap Email Retrieval failed: {0}", ex.Message);
                    return(new ApiResponse(500, ex.Message));
                }
            }
        }
コード例 #26
0
        public async Task <IActionResult> SendEmail([FromBody] EmailMessageDto mail)
        {
            try
            {
                await _exchangeService.SendEmailAsync(mail);

                return(Ok());
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
コード例 #27
0
        private static async Task SendEmail(string key, EmailMessageDto requestedMessageToSend)
        {
            var client = new SendGridClient(key);

            var msg = new SendGridMessage();

            msg.SetFrom(new EmailAddress("*****@*****.**", "EmailSender app"));
            msg.AddTo(requestedMessageToSend.To);
            msg.SetSubject(requestedMessageToSend.Title);
            msg.PlainTextContent = requestedMessageToSend.Body;

            await client.SendEmailAsync(msg);
        }
コード例 #28
0
        public EmailMessageDto BuilNewUserNotificationEmail(string creator, string name, string userName, string company, string roles)
        {
            var emailMessage = new EmailMessageDto();

            //placeholder not actually implemented

            emailMessage.Body = L["NewUserNotificationEmail.template"].Value
                                .FormatWith(new { baseUrl, creator, name, userName, roles, company });

            emailMessage.Subject = L["NewUserNotificationEmail.subject", userName];

            return(emailMessage);
        }
コード例 #29
0
        public EmailMessageDto GetPlainTextTestEmail(DateTime date)
        {
            var emailMessage = new EmailMessageDto();

            emailMessage.Body = L["PlainTextTestEmail.template"].Value
                                .FormatWith(new { date });

            emailMessage.Subject = L["PlainTextTestEmail.subject", emailMessage.ToAddresses[0].Name];

            emailMessage.IsHtml = false;

            return(emailMessage);
        }
コード例 #30
0
        public async Task <ApiResponse> ResetPassword(ResetPasswordDto parameters)
        {
            if (!ModelState.IsValid)
            {
                return(new ApiResponse(400, "User Model is Invalid"));
            }

            var user = await _userManager.FindByIdAsync(parameters.UserId);

            if (user == null)
            {
                _logger.LogInformation("User does not exist: {0}", parameters.UserId);
                return(new ApiResponse(404, "User does not exist"));
            }

            #region Reset Password Successful Email

            try
            {
                IdentityResult result = await _userManager.ResetPasswordAsync(user, parameters.Token, parameters.Password);

                if (result.Succeeded)
                {
                    #region Email Successful Password change

                    var email = new EmailMessageDto();
                    email.ToAddresses.Add(new EmailAddressDto(user.Email, user.Email));
                    email.BuildPasswordResetEmail(user.UserName); //Replace First UserName with Name if you want to add name to Registration Form

                    _logger.LogInformation("Reset Password Successful Email Sent: {0}", user.Email);
                    await _emailService.SendEmailAsync(email);

                    #endregion Email Successful Password change

                    return(new ApiResponse(200, String.Format("Reset Password Successful Email Sent: {0}", user.Email)));
                }
                else
                {
                    _logger.LogInformation("Error while resetting the password!: {0}", user.UserName);
                    return(new ApiResponse(400, string.Format("Error while resetting the password!: {0}", user.UserName)));
                }
            }
            catch (Exception ex)
            {
                _logger.LogInformation("Reset Password failed: {0}", ex.Message);
                return(new ApiResponse(400, string.Format("Error while resetting the password!: {0}", ex.Message)));
            }

            #endregion Reset Password Successful Email
        }