public async Task <HttpResponseMessage> Forgot(string email) { if (!string.IsNullOrEmpty(email) && email.EmailPatternIsValid()) { //check whether user exists or not. var user = this._accountService.GetByEmail(email); if (user != null) { //create forgot password token. var tokenId = this._tokenService.Add(user.Id); //get email setting to send email to user. var emailSetting = this._emailServerSettingService.GetServerSetting(); if (emailSetting != null) { //hash token value in url. string url = $"{AppSettingManager.BaseURL}resetPassword?token={tokenId}"; var credentials = new Credentials { UserName = emailSetting.UserName, Password = emailSetting.Password, Host = emailSetting.Host, Port = emailSetting.Port, EnableSsl = emailSetting.EnableSsl, IsBodyHtml = emailSetting.IsBodyHtml }; //async sent email.No need wait for response. Task.Run(() => Email.TrySendEmail(credentials, emailSetting.UserName, MessageString.FORGOT_PASSWORD_EMAIL_SUBJECT, EmailTemplates.GetForgetPasswordMessage(user.FirstName, user.LastName, url), new List <string>() { user.Email }, null, null, null)); } return(await Task.Run(() => Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage <object>(true, MessageString.FORGOT_PASSWORD, null)))); } //user not exists. return(await Task.Run(() => Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage <object>(false, MessageString.EMAIL_NOT_EXISTS, null)))); } //invalid request. return(await Task.Run(() => Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage <object>(false, MessageString.INVALID_REQUEST_PARMS, null)))); }