Exemple #1
0
        public async Task <RequestResetPassword> CreateRequestResetPassword(RequestResetPassword request)
        {
            var existing = await _context.RequestResetPasswords.FirstOrDefaultAsync(t => t.Email == request.Email && t.ExpiredAt > DateTime.Now);

            if (existing != null)
            {
                return(existing);
            }

            request.Token = GenerateSecurityStamp();
            _context.RequestResetPasswords.Add(request);
            await _context.SaveChangesAsync();

            return(request);
        }
Exemple #2
0
        public async Task SendMail(ConfigSendEmail configSendEmail, EmailTemplate mailTemplate, RequestResetPassword requestResetPassword)
        {
            var sender   = configSendEmail.Sender;
            var username = configSendEmail.Username;
            var password = configSendEmail.Password;
            var host     = configSendEmail.Host;
            var port     = configSendEmail.Port.ConvertToInt();

            var receiver = requestResetPassword.Email;

            var emailMessage = new MimeMessage();

            emailMessage.From.Add(new MailboxAddress("Vacation Tracking", sender));
            emailMessage.To.Add(new MailboxAddress("", receiver));
            emailMessage.Subject = mailTemplate.Subject;
            emailMessage.Body    = new TextPart("html")
            {
                Text = string.Format(mailTemplate.Body, requestResetPassword.Email, requestResetPassword.Token)
            };

            using (var client = new SmtpClient())
            {
                // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
                client.ServerCertificateValidationCallback = (s, c, h, e) => true;

                await client.ConnectAsync(host, port, false);

                client.AuthenticationMechanisms.Remove("XOAUTH2"); // Must be removed for Gmail SMTP
                await client.AuthenticateAsync(username, password);

                await client.SendAsync(emailMessage);

                await client.DisconnectAsync(true);
            }
        }