示例#1
0
        /// <summary>
        /// 執行寄信
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public bool Excute(MailRequest data)
        {
            if (!data.MailTos.Any())
            {
                throw new ArgumentNullException("發信行為失敗,並無給予寄信對象");
            }

            #region  找到系統參數,並填入SMTP相關參數

            Tsysdat param = _paramRepo.Get(new Conditions <DataBase.TSYSDAT>());


            if (param == null)
            {
                throw new NullReferenceException("發信行為失敗,找不到系統參數");
            }

            data.SmptName     = param.SmptName;
            data.SendMail     = param.SendMail;
            data.MailPassword = param.MailPassword;


            #endregion

            return(_mailRepo.Send(data));
        }
示例#2
0
        public async Task SendEmailAsync(MailRequest mailRequest)
        {
            var email = new MimeMessage();

            email.Sender = MailboxAddress.Parse(_mailSettings.Mail);
            email.To.Add(MailboxAddress.Parse(mailRequest.ToEmail));
            email.Subject = mailRequest.Subject;
            var builder = new BodyBuilder();

            if (mailRequest.Attachments != null)
            {
                byte[] fileBytes;
                foreach (var file in mailRequest.Attachments)
                {
                    if (file.Length > 0)
                    {
                        using (var ms = new MemoryStream())
                        {
                            file.CopyTo(ms);
                            fileBytes = ms.ToArray();
                        }
                        builder.Attachments.Add(file.FileName, fileBytes, ContentType.Parse(file.ContentType));
                    }
                }
            }
            builder.HtmlBody = mailRequest.Body;
            email.Body       = builder.ToMessageBody();
            using var smtp   = new SmtpClient();
            smtp.Connect(_mailSettings.Host, _mailSettings.Port, SecureSocketOptions.StartTls);
            smtp.Authenticate(_mailSettings.Mail, _mailSettings.Password);
            await smtp.SendAsync(email);

            smtp.Disconnect(true);
        }
示例#3
0
        // GET: Devices/request/5?userId=12
        public async Task <IActionResult> RequestDevice(int?id, string userId)
        {
            if ((id == null) || (userId == null))
            {
                return(NotFound());
            }

            var device    = _deviceRepository.GetById(id);
            var requester = _userRepository.GetUserById(userId);

            if ((device == null) || (requester == null))
            {
                return(NotFound());
            }

            MailRequest request = new MailRequest {
                To = "*****@*****.**", Subject = "Deivce Request"
            };

            request.PrepeareDeviceRequestBody(device, requester);
            await _mailService.SendEmailAsync(request);


            return(RedirectToAction(nameof(Index), "Devices"));
        }
示例#4
0
 public async Task SendEmailAsync(MailRequest mailRequest)
 {
     //var email = new MimeMessage();
     //var sender = MailboxAddress.Parse(mailSettings.Mail);
     //sender.Name = mailSettings.DisplayName;
     //email.Sender = sender;
     //email.To.Add(MailboxAddress.Parse(mailRequest.ToEmail));
     //email.Subject = mailRequest.Subject;
     //var builder = new BodyBuilder();
     //if (mailRequest.Attachments != null)
     //{
     //    byte[] fileBytes;
     //    foreach (var file in mailRequest.Attachments)
     //    {
     //        if (file.Length > 0)
     //        {
     //            using (var ms = new MemoryStream())
     //            {
     //                file.CopyTo(ms);
     //                fileBytes = ms.ToArray();
     //            }
     //            builder.Attachments.Add(file.FileName, fileBytes, ContentType.Parse(file.ContentType));
     //        }
     //    }
     //}
     //builder.HtmlBody = mailRequest.Body;
     //email.Body = builder.ToMessageBody();
     //using var smtp = new SmtpClient();
     //smtp.Connect(mailSettings.Host, mailSettings.Port, SecureSocketOptions.StartTls);
     //smtp.Authenticate(mailSettings.Mail, mailSettings.Password);
     //await smtp.SendAsync(email);
     //smtp.Disconnect(true);
 }
示例#5
0
        public async Task SendAsync(MailRequest request)
        {
            try
            {
                var mailMessage = new MailMessage()
                {
                    From       = new MailAddress(request.From ?? _mailSettings.From),
                    Subject    = request.Subject,
                    IsBodyHtml = true,
                    Body       = request.Body,
                };
                mailMessage.To.Add(new MailAddress(request.To));

                using var smtp = new SmtpClient(_mailSettings.Host, _mailSettings.Port)
                      {
                          UseDefaultCredentials = false,
                          Credentials           = new NetworkCredential(_mailSettings.UserName, _mailSettings.Password),
                          DeliveryMethod        = SmtpDeliveryMethod.Network,
                          EnableSsl             = true //TODO maybe false in production and change port
                      };

                await smtp.SendMailAsync(mailMessage);
            }
            catch (System.Exception ex)
            {
                _logger.LogError(ex.Message, ex); //TODO: Remove try catch and implement resiliency with polly
                Console.WriteLine("errorMail");
            }
        }
示例#6
0
        public static Response SendMail(MailRequest request)
        {
            Response response = new Response();

            try
            {
                using (var client = new SmtpClient())
                {
                    var credential = new NetworkCredential
                    {
                        UserName = request.Credential.UserName,
                        Password = request.Credential.Password
                    };
                    client.Credentials = credential;
                    client.Host        = request.HostName;
                    client.Port        = request.Port;
                    client.EnableSsl   = false;
                    var message = GetMailWithOutImg(request);
                    client.Send(message);
                }
                return(response);
            }
            catch (Exception ex)
            {
                response.Success = false;
                response.Message = ex.Message;
                return(response);
            }
        }
        public async Task SendEmailAsync(MailRequest request)
        {
            try
            {
                var message = new MimeMessage();
                message.From.Add(new MailboxAddress(_smtpSettings.SenderName, _smtpSettings.SenderEmail));
                message.To.Add(new MailboxAddress("", request.Email));
                message.Subject = request.Tema;
                message.Body    = new TextPart("html")
                {
                    Text = request.Cuerpo
                };

                using (var cliente = new MailKit.Net.Smtp.SmtpClient())
                {
                    await cliente.ConnectAsync(_smtpSettings.Server);

                    await cliente.AuthenticateAsync(_smtpSettings.Username, _smtpSettings.Password);

                    await cliente.SendAsync(message);

                    await cliente.DisconnectAsync(true);
                }
            }
            catch (Exception)
            {
            }
        }
示例#8
0
        public int MailRequest(MailRequest request)
        {
            Console.WriteLine("MailRequest: " + request);
            SmtpClient client = new SmtpClient();

            client.UseDefaultCredentials = false;
            client.Credentials           = new NetworkCredential("*****@*****.**", "polytechnicesophia");
            client.Port      = 587;
            client.Host      = "smtp.gmail.com";
            client.EnableSsl = true;
            for (int i = 0; i < request.Mails.Count; ++i)
            {
                MailMessage mail = new MailMessage();
                mail.From = new MailAddress("*****@*****.**");
                mail.To.Add(request.Mails[i]);
                //mail.To.Add("*****@*****.**");
                mail.Subject = request.Object;
                mail.Body    = request.Message;
                ServicePointManager.ServerCertificateValidationCallback =
                    delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
                { return(true); };
                //client.Send(mail);
            }
            return(0);
        }
示例#9
0
        public async Task <IActionResult> ForgetPassword(ForgetPasswordViewModel model)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Profile"));
            }

            UserModel user = await ManageUser.FindByEmailAsync(model.Email);

            ViewBag.Sent = false;
            if (user != null)
            {
                var token = await ManageUser.GeneratePasswordResetTokenAsync(user);

                var callbackUrl = Url.Action("ResetPassword", "Account", new { token = token, email = user.Email });
                var url         = "https://" + Request.Host + callbackUrl;

                MailRequest mailrequest = new MailRequest
                {
                    ToEmail = model.Email,
                    Subject = "Password Reset Token",
                    Body    = "<div style='text-align:center'> <h1 style='margin:20px;'> Reset Your Password. </h1> <a href='" + url + "' > Reset Password </a> </div>"
                };

                var result = await SendToken(mailrequest);

                if (result)
                {
                    ViewBag.Sent = true;
                }
            }

            return(View());
        }
示例#10
0
        public async Task sendVerificationEmail(Account account, string origin)
        {
            string message;

            if (!string.IsNullOrEmpty(origin))
            {
                message = $@"<p>Mã kích hoạt của bạn là: {account.VerificationToken}</p>";
            }
            else
            {
                message =
                    $@"<p>Please use the below token to verify your email address with the <code>/accounts/verify-email</code> api route:</p>
                             <p><code>{account.VerificationToken}</code></p>";
            }

            //_emailService.Send(
            //    to: account.Email,
            //    subject: "Sign-up Verification API - Verify Email",
            //    html:
            // );
            var mailRequest = new MailRequest()
            {
                ToEmail = account.Email,
                Subject = "Mã kích hoạt tài khoản CoStudy",
                Body    = $@"<h4>Xác thực thông tin email</h4>
                         <p>Cảm ơn bạn đã đăng kí sử dụng dịch vụ!</p>
                         {message}"
            };
            await emailService.SendEmailAsync(mailRequest);
        }
示例#11
0
        public async Task sendAlreadyRegisteredEmail(string email, string origin)
        {
            string message;

            if (!string.IsNullOrEmpty(origin))
            {
                message =
                    $@"<p>If you don't know your password please visit the <a href=""{origin}/account/forgot-password"">forgot password</a> page.</p>";
            }
            else
            {
                message =
                    "<p>If you don't know your password you can reset it via the <code>/accounts/forgot-password</code> api route.</p>";
            }

            emailService.Send(
                to: email,
                subject: "Sign-up Verification API - Email Already Registered",
                html: $@"<h4>Email Already Registered</h4>
                         <p>Your email <strong>{email}</strong> is already registered.</p>
                         {message}"
                );

            var mailRequest = new MailRequest()
            {
                ToEmail = email,
                Subject = "Đăng kí tài khoản CoStudy - Email đã bị tái đăng kí",
                Body    = $@"<h4>Email Already Registered</h4>
                         <p>Your email <strong>{email}</strong> is already registered.</p>
                         {message}"
            };

            await emailService.SendEmailAsync(mailRequest);
        }
示例#12
0
        public async Task sendPasswordResetEmail(Account account, string origin)
        {
            string message;

            if (!string.IsNullOrEmpty(origin))
            {
                var resetUrl = $"{origin}/account/reset-password?token={account.ResetToken}";
                message =
                    $@"<p>Please click the below link to reset your password, the link will be valid for 1 day:</p>
                             <p><a href=""{resetUrl}"">{resetUrl}</a></p>";
            }
            else
            {
                message =
                    $@"<p>Please use the below token to reset your password with the <code>/accounts/reset-password</code> api route:</p>
                             <p><code>{account.ResetToken}</code></p>";
            }


            var mailRequest = new MailRequest()
            {
                ToEmail = account.Email,
                Subject = "Đăng kí tài khoản CoStudy - đặt lại mật khẩu",
                Body    = $@"<h4>Reset Password Email</h4>
                         {message}"
            };

            await emailService.SendEmailAsync(mailRequest);
        }
        //TODO: Incomplete...
        public static MailRequest ToMailRequest(this MailContent mailContent)
        {
            var request = new MailRequest
            {
                sender    = mailContent.Senders == null ? null : String.Join(",", mailContent.Senders),
                receivers = mailContent.Receivers == null ? null : String.Join(",", mailContent.Receivers),
                subject   = mailContent.Subject,
                html      = mailContent.Html,
                text      = mailContent.Text,
                cc        = mailContent.Copies == null ? null : String.Join(",", mailContent.Copies),
                bcc       = mailContent.BlindCopies == null ? null : String.Join(",", mailContent.BlindCopies)
            };

            //Subject
            if (mailContent.Subject != null)
            {
                request.subject = mailContent.Subject;
            }
            //Body
            if (mailContent.Html != null)
            {
                request.text = mailContent.Html;
            }
            else if (mailContent.Text != null)
            {
                request.text = mailContent.Text;
            }

            return(request);
        }
        public void InsertUser(UserHotelBookingDetail userHotel)
        {
            context.UserHotelBookingDetails.Add(userHotel);
            context.SaveChanges();
            var userEmail = "";

            userEmail = userHotel.UserEmailAddress;

            MailRequest request = new MailRequest();

            request.ToEmail = userEmail;
            request.Subject = $"Spicejet Hotel Booking";
            request.Body    = $"<p style='color:green'> Dear,{userHotel.UserFirstName} {userHotel.UserMiddleName} {userHotel.UserLastName} <br> Your Hotel Booking Successfully Done <br> Your Conformation Number is :- {userHotel.UserConformationNumber}</p>";
            try
            {
                if (userEmail != null)
                {
                    mailService.SendEmailAsync(request);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#15
0
        public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user == null || !(await _userManager.IsEmailConfirmedAsync(user)))
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return(View("ForgotPasswordConfirmation"));
                }

                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
                // Send an email with this link
                var code = await _userManager.GeneratePasswordResetTokenAsync(user);

                var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                var mail        = new MailRequest
                {
                    Subject = "Reset Password",
                    ToEmail = model.Email,
                    Body    = "Resetirajte svoju lozinku tako sto kliknete na ovaj: <a href=\"" + callbackUrl + "\">link</a>"
                };
                await _emailSender.SendEmailAsync(mail);

                return(View("ForgotPasswordConfirmation"));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
示例#16
0
        /// <summary>
        /// This methid will return email messages of the current login user and this will return 10 mail messages at a time
        /// </summary>
        /// <param name="folderId"></param>
        /// <param name="startIndex"></param>
        /// <param name="includeAttachments"></param>
        /// <returns></returns>
        public MailMessageList ListMessages(MailRequest mailRequest)
        {
            var folders     = ListFolders();
            var inboxFolder = folders != null?folders.Single(folder => folder.Name == "Inbox") : null;

            string targetUrl = "";

            if (inboxFolder != null && !string.IsNullOrEmpty(inboxFolder.Name))
            {
                targetUrl = $"{generalSettings.GraphUrl}/v1.0/me/mailFolders/{inboxFolder.Id}/messages?$skip={mailRequest.UpToPageNumbersToSkip}&$filter=isDraft eq false";
            }
            else
            {
                targetUrl = $"{generalSettings.GraphUrl}/v1.0/me/messages?$skip={mailRequest.UpToPageNumbersToSkip}&$filter=isDraft eq false";
            }
            if (mailRequest.MessageToSearch != string.Empty)
            {
                targetUrl = $"{generalSettings.GraphUrl}/v1.0/me/mailFolders/{inboxFolder.Id}/messages?$search={mailRequest.MessageToSearch}";
            }
            string jsonResponse = MakeGetRequestForString(targetUrl);

            var messages = JsonConvert.DeserializeObject <MailMessageList>(jsonResponse);

            messages.MailCount = inboxFolder.TotalItemCount;
            if (mailRequest.IncludeAttachments && messages != null && messages.Messages != null && messages.Messages.Count > 0)
            {
                foreach (var mailMessage in messages.Messages)
                {
                    mailMessage.IsEmail = "true";
                    LoadAttachments(mailMessage);
                }
            }
            return(messages);
        }
示例#17
0
        public async Task SendAsync(MailRequest mailRequest)
        {
            MailMessage message = new MailMessage();
            SmtpClient  client  = new SmtpClient();

            message.From = new MailAddress(_settings.Mail, _settings.DisplayName);
            message.To.Add(new MailAddress(mailRequest.Receiver));
            message.Subject = mailRequest.Subject;
            if (mailRequest != null)
            {
                foreach (var file in mailRequest.Attachments)
                {
                    if (file.Length > 0)
                    {
                        using (var ms = new MemoryStream())
                        {
                            file.CopyTo(ms);
                            var        fileBytes = ms.ToArray();
                            Attachment att       = new Attachment(new MemoryStream(fileBytes), file.FileName);
                            message.Attachments.Add(att);
                        }
                    }
                }
            }
            message.IsBodyHtml           = false;
            message.Body                 = mailRequest.Body;
            client.Port                  = _settings.Port;
            client.Host                  = _settings.Host;
            client.EnableSsl             = true;
            client.UseDefaultCredentials = false;
            client.Credentials           = new NetworkCredential(_settings.Mail, _settings.Password);
            client.DeliveryMethod        = SmtpDeliveryMethod.Network;
            await client.SendMailAsync(message);
        }
示例#18
0
        public async Task SendEmailAsync(MailRequest mailRequest, string Id)
        {
            try
            {
                var email = new MimeMessage();
                email.Sender = MailboxAddress.Parse(_mailSettings.Mail);
                email.To.Add(MailboxAddress.Parse(mailRequest.ToEmail));
                email.Subject = mailRequest.Subject;
                var builder = new BodyBuilder();
                var token   = GenerateToken(Id);
                var Message = $"<a href='http://localhost:4200/verfiy-email/{token}'> Click here</a> to verify you email address ";
                mailRequest.Body = Message;
                builder.HtmlBody = mailRequest.Body;
                email.Body       = builder.ToMessageBody();
                using var smtp   = new SmtpClient();
                smtp.Connect(_mailSettings.Host, _mailSettings.Port, SecureSocketOptions.StartTls);
                smtp.Authenticate(_mailSettings.Mail, _mailSettings.Password);
                await smtp.SendAsync(email);

                smtp.Disconnect(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#19
0
文件: UnitTest1.cs 项目: nodbrag/QCMS
        public void Test1()
        {
            MailRequestAttachments mailRequestAttachments = new MailRequestAttachments();

            mailRequestAttachments.FileData = System.IO.File.ReadAllBytes("F://export.xls");
            mailRequestAttachments.FileName = "车间能源消耗周报.xls";
            string body = "您好,有新的待确认收款≥ http://192.168.100.56/web/TechnicalReformation.html";
            //string bcc = string.Empty;
            string to = "*****@*****.**";//收件人
            //string cc = "";//抄送人
            MailRequest mail = new MailRequest();

            mail.Subject = "收款确认"; //主题
            mail.Body    = body;   //内容
            // mail.Bcc = bcc;//秘密抄送人
            //mail.From = "*****@*****.**";//发送人
            mail.To = to; //收件人
            // mail.CC = cc; //抄送人
            mail.Attachments = new MailRequestAttachments[] { mailRequestAttachments };
            string sendMainResult = "-1";

            if (!string.IsNullOrEmpty(mail.To.Trim()) || !string.IsNullOrEmpty(mail.CC.Trim()))
            {
                sendMainResult = SendMailHelper.SendMail(mail);
                Assert.True(string.IsNullOrEmpty(sendMainResult));
            }
        }
示例#20
0
        public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user == null || !(await _userManager.IsEmailConfirmedAsync(user))) // phải bật EmailConfirmed bằng True trong table AspNetUsers
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return(View("ForgotPasswordConfirmation"));
                }

                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=532713
                // Send an email with this link
                var code = await _userManager.GeneratePasswordResetTokenAsync(user);

                var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                //await _emailSender.SendEmailAsync(model.Email, "Reset Password",
                //  "Please reset your password by clicking here: <a href=\"" + callbackUrl + "\">link</a>");

                var mailRequest = new MailRequest();
                mailRequest.ToEmail = model.Email; // to nhieu email --> research
                mailRequest.Subject = $"Reset Password - {user.UserName}";
                mailRequest.Body    = $"Please reset your password with {user.UserName} by clicking here: <a href=\"" + callbackUrl + "\">link</a>";
                await _emailSender.SendEmailAsync(mailRequest);

                return(View("ForgotPasswordConfirmation"));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
示例#21
0
        private Mail Map(MailRequest request)
        {
            var mail            = new Mail();
            var personalization = new Personalization();

            if (string.IsNullOrWhiteSpace(_apiKey))
            {
                throw new ArgumentNullException(nameof(_apiKey));
            }

            _sendGridApi = new SendGridAPIClient(_apiKey);

            foreach (var mailAddress in request.To)
            {
                personalization.Tos.Add(new Email(mailAddress.ToString()));
            }

            foreach (var bccAddress in request.Bcc)
            {
                personalization.Bccs.Add(new Email(bccAddress.ToString()));
            }

            foreach (var ccAddress in request.Cc)
            {
                personalization.AddCc(new Email(ccAddress.ToString()));
            }

            mail.AddPersonalization(personalization);
            mail.Subject = request.Subject;
            return(mail);
        }
示例#22
0
        private static BodyBuilder CreateBodyBuilder(MailRequest request)
        {
            var builder = new BodyBuilder
            {
                HtmlBody = request.Body
            };

            if (request.Attachments == null || !request.Attachments.Any())
            {
                return(builder);
            }

            byte[] fileBytes;

            foreach (var file in request.Attachments)
            {
                if (file.Length > 0)
                {
                    using var ms = new MemoryStream();
                    file.CopyTo(ms);
                    fileBytes = ms.ToArray();

                    builder.Attachments.Add(file.Name, fileBytes, ContentType.Parse(file.ContentType));
                }
            }

            return(builder);
        }
示例#23
0
        public async Task SendEmailAsync(MailRequest mailRequest)
        {
            try
            {
                // create message
                var email = new MimeMessage();
                email.Sender = MailboxAddress.Parse(mailRequest.From ?? _mailSettings.EmailFrom);
                email.To.Add(MailboxAddress.Parse(mailRequest.ToEmail));
                email.Subject = mailRequest.Subject;
                var builder = new BodyBuilder();
                builder.HtmlBody = mailRequest.Body;
                email.Body       = builder.ToMessageBody();
                using var smtp   = new SmtpClient();
                smtp.Connect(_mailSettings.SmtpHost, _mailSettings.SmtpPort, SecureSocketOptions.StartTls);
                smtp.Authenticate(_mailSettings.SmtpUser, _mailSettings.SmtpPass);
                await smtp.SendAsync(email);

                smtp.Disconnect(true);
            }
            catch (System.Exception ex)
            {
                _logger.LogError(ex.Message, ex);
                throw new ApiException(ex.Message);
            }
        }
示例#24
0
        public async Task SendEmailAsync(MailRequest mailRequest)
        {
            var user = await _context.Teacher.Where(s => s.TeacherUserRef == mailRequest.Id)
                       .FirstOrDefaultAsync();

            var smtpClient = new SmtpClient("smtp.ethereal.email")
            {
                Port        = 587,
                Credentials = new NetworkCredential("*****@*****.**", "xE2Unny7PXWSC3quvR"),
                EnableSsl   = true,
            };
            var body = user.Email + ": username" + '\n';

            smtpClient.Send("*****@*****.**", "*****@*****.**", "subject", body);
            var user1 = await _context.Users.Where(s => s.Id == mailRequest.Id)
                        .FirstOrDefaultAsync();

            var teacher = _context.Users.Find(user1.Id);

            if (teacher == null)
            {
                throw new AppException("User not found");
            }
            teacher.Notification = "yes";
            _context.Users.Update(teacher);
            _context.SaveChanges();
        }
示例#25
0
        public async Task <IResult> ForgotPasswordAsync(ForgotPasswordRequest request, string origin)
        {
            var user = await _userManager.FindByEmailAsync(request.Email);

            if (user == null || !(await _userManager.IsEmailConfirmedAsync(user)))
            {
                // Don't reveal that the user does not exist or is not confirmed
                return(await Result.FailAsync(_localizer["An Error has occured!"]));
            }
            // For more information on how to enable account confirmation and password reset please
            // visit https://go.microsoft.com/fwlink/?LinkID=532713
            var code = await _userManager.GeneratePasswordResetTokenAsync(user);

            code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
            var route            = "account/reset-password";
            var endpointUri      = new Uri(string.Concat($"{origin}/", route));
            var passwordResetURL = QueryHelpers.AddQueryString(endpointUri.ToString(), "Token", code);
            var mailRequest      = new MailRequest()
            {
                Body    = $"{_localizer["Please reset your password by"]} <a href='{HtmlEncoder.Default.Encode(passwordResetURL)}'>{_localizer["clicking here"]}</a>.",
                Subject = _localizer["Reset Password"],
                To      = request.Email
            };

            BackgroundJob.Enqueue(() => _mailService.SendAsync(mailRequest));
            return(await Result.SuccessAsync(_localizer["Password Reset Mail has been sent to your authorized EmailId."]));
        }
示例#26
0
        public void DeleteBooking(int UserId)
        {
            var data = context.UserFlightBookingDetails.SingleOrDefault(s => s.UserId == UserId);

            context.UserFlightBookingDetails.Remove(data);
            context.SaveChanges();
            var userEmail = "";

            userEmail = data.UserEmail;

            MailRequest request = new MailRequest();

            request.ToEmail = userEmail;
            request.Subject = $"SpicejetBooking";
            request.Body    = $"<p style='color:red'> Dear,{data.UserFirstName} {data.UserMiddleName} {data.UserLastName} <br> Your Flight Has Been cancel Your Refund will be send on your Bank account And Any Quary then Contect Our Authority </p>";
            try
            {
                if (userEmail != null)
                {
                    mailService.SendEmailAsync(request);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new AppUser
                {
                    UserName    = Input.Email,
                    Email       = Input.Email,
                    FirstName   = Input.FirstName,
                    LastName    = Input.LastName,
                    PhoneNumber = Input.PhoneNumber,
                    Dob         = Input.Dob
                };

                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, returnUrl = returnUrl },
                        protocol: Request.Scheme);

                    var mailRequest = new MailRequest()
                    {
                        ToEmail = Input.Email,
                        Subject = "Confirm your email",
                        Body    = $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."
                    };

                    await _emailService.SendEmailAsync(mailRequest);

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl }));
                    }
                    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());
        }
示例#28
0
        public void InsertBooking(UserFlightBookingDetail bookingDetail)
        {
            context.UserFlightBookingDetails.Add(bookingDetail);
            context.SaveChanges();
            var userEmail = "";

            userEmail = bookingDetail.UserEmail;

            MailRequest request = new MailRequest();

            request.ToEmail = userEmail;
            request.Subject = $"Spicejet Booking";
            request.Body    = $"<p style='color:green'> Dear,{bookingDetail.UserFirstName} {bookingDetail.UserMiddleName} {bookingDetail.UserLastName} Your Flight Booking Successfully Done  Your PNRNUMBER is :- {bookingDetail.PnrNumber}</p>";
            try
            {
                if (userEmail != null)
                {
                    mailService.SendEmailAsync(request);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#29
0
        public async Task ForgotPassword(ForgotPasswordRequest model, string origin)
        {
            var account = await _userManager.FindByEmailAsync(model.Email);

            if (account == null)
            {
                return;
            }

            //var code = await _userManager.GeneratePasswordResetTokenAsync(account);
            //var route = "api/account/reset-password/";
            //var _enpointUri = new Uri(string.Concat($"{origin}/", route));

            var resetPasswordUri = await SendResetPasswordEmail(account, origin);

            var emailRequest = new MailRequest()
            {
                Body    = $"Please ResetPasswrod your account by visiting this URL - {resetPasswordUri}",
                To      = model.Email,
                Subject = "Reset Password",
            };

            BackgroundJob.Enqueue(() => SendEmailBackgroundJob(emailRequest));
            // await _mailService.SendAsync(emailRequest);
        }
示例#30
0
        public async Task SendAsync(MailRequest request)
        {
            try
            {
                var email = new MimeMessage
                {
                    Sender  = new MailboxAddress(_config.DisplayName, request.From ?? _config.From),
                    Subject = request.Subject,
                    Body    = new BodyBuilder
                    {
                        HtmlBody = request.Body
                    }.ToMessageBody()
                };
                using var smtp = new SmtpClient();
                await smtp.ConnectAsync(_config.Host, _config.Port, SecureSocketOptions.StartTls);

                await smtp.AuthenticateAsync(_config.UserName, _config.Password);

                await smtp.SendAsync(email);

                await smtp.DisconnectAsync(true);
            }
            catch (System.Exception ex)
            {
                _logger.LogError(ex.Message, ex);
            }
        }