1
resposta

[Dúvida] [Dúvida] Enviando e-mail para ataualização de senha

Olá! Estou com uma dúvida, eu gostaria de enviar um e-mail para o usuário poder clicar no link e atualizar a senha, como isso pode ser feito?

1 resposta

Olá, Deise!

Para enviar um e-mail para o usuário com um link para atualização de senha usando Spring Boot, você pode seguir os seguintes passos:

  1. Configurar o envio de e-mails no Spring Boot: Adicione as dependências necessárias no seu pom.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>
    

    Configure o application.properties com as informações do servidor de e-mail:

    spring.mail.host=smtp.seuprovedor.com
    spring.mail.port=587
    spring.mail.username=seu-email@seuprovedor.com
    spring.mail.password=sua-senha
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.enable=true
    
  2. Criar um serviço de e-mail: Crie uma classe de serviço para enviar o e-mail:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.stereotype.Service;
    
    @Service
    public class EmailService {
    
        @Autowired
        private JavaMailSender mailSender;
    
        public void sendPasswordResetEmail(String to, String token) {
            String resetUrl = "http://seu-dominio.com/reset-password?token=" + token;
            SimpleMailMessage message = new SimpleMailMessage();
            message.setTo(to);
            message.setSubject("Reset de Senha");
            message.setText("Para redefinir sua senha, clique no link a seguir: " + resetUrl);
            mailSender.send(message);
        }
    }
    
  3. Gerar o token de reset de senha: Você precisa gerar um token único e seguro para cada solicitação de reset de senha. Pode ser um UUID, por exemplo:

    import java.util.UUID;
    
    public String generateResetToken() {
        return UUID.randomUUID().toString();
    }
    
  4. Criar o endpoint para solicitar o reset de senha: Crie um endpoint para que o usuário solicite o reset de senha:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class PasswordResetController {
    
        @Autowired
        private EmailService emailService;
    
        @PostMapping("/request-reset-password")
        public void requestResetPassword(@RequestBody String email) {
            String token = generateResetToken();
            emailService.sendPasswordResetEmail(email, token);
            // Salvar o token e o email no banco de dados para validação futura
        }
    }
    
  5. Criar o endpoint para atualizar a senha: Crie um endpoint para que o usuário possa atualizar a senha:

    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class PasswordUpdateController {
    
        @PostMapping("/reset-password")
        public void resetPassword(@RequestParam String token, @RequestBody String newPassword) {
            // Validar o token e atualizar a senha no banco de dados
        }
    }
    

Com esses passos, você conseguirá enviar um e-mail para o usuário com um link para que ele possa atualizar sua senha. Certifique-se de implementar a lógica de validação do token e atualização da senha no banco de dados.

Espero ter ajudado e bons estudos!