Assim como aconteceu na aula 08, estou tendo um erro 500 após a tentativa de envio de e-mail ao finalizar o pedido no carrinho. Alguém sabe o motivo do erro e como corrigir?
Obrigado.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Assim como aconteceu na aula 08, estou tendo um erro 500 após a tentativa de envio de e-mail ao finalizar o pedido no carrinho. Alguém sabe o motivo do erro e como corrigir?
Obrigado.
oi eulen,
manda a exception completa do erro, o código que envia o email também por favor.
OI Caio, desculpa não é exatamente uma exception, até pq nao aparece nenhum erro no console e tambem nenhuma stacktrace. So obtenho a página com erro 500 do tomcat após alguns segundos de inatividade. É o mesmo caso que ocorreu durante a aula com o instrutor. Porém não vi ele resolvendo durante o curso e também nada consta nas anotações da aula.
Abaixo o código. Obrigado
No controller
@SuppressWarnings("finally")
@RequestMapping(value = "/finalizar", method = RequestMethod.POST)
public Callable<ModelAndView> finalizar(@AuthenticationPrincipal Usuario usuario, RedirectAttributes model) {
return () -> {
String uri = "http://book-payment.herokuapp.com/payment";
try {
String response = restTemplate.postForObject(uri, new DadosPagamento(carrinho.getTotal()),
String.class);
model.addFlashAttribute("sucesso", response);
// envia email para o usuário
enviaEmailCompraProduto(usuario);
System.out.println(response);
} catch (HttpClientErrorException e) {
e.printStackTrace();
model.addFlashAttribute("falha", "Valor maior que o permitido");
} catch (Exception e){
e.printStackTrace();
}finally {
return new ModelAndView("redirect:/produtos");
}
};
}
private void enviaEmailCompraProduto(Usuario usuario) {
SimpleMailMessage email = new SimpleMailMessage();
email.setSubject("Compra finalizada com sucesso");
//email.setTo(usuario.getEmail());
email.setTo("eulen.mesquita@gmail.com");
email.setText("Compra aprovada com sucesso no valor de " + carrinho.getTotal());
email.setFrom("compras@casadocodigo.com.br");
sender.send(email);
}
no AppWebConfig
@Bean
public MailSender mailSender(){
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setUsername("eulen.mesquita@gmail.com");
mailSender.setPassword("xxxxxxx");
mailSender.setPort(587);
Properties mailProperties = new Properties();
mailProperties.put("mail.smtp.auth", true);
mailProperties.put("mail.smtp.starttls.enable", true);
mailSender.setJavaMailProperties(mailProperties);
return mailSender;
}
Não consegui descobrir a razão do erro 500, mas resolvi tentar utilizar o envio de e-mail do cuso de Spring Boot do Lárazo e funcionou direitinho. Consegui receber o e-mail e o fluxo da aplicação seguiu perfeitamente.
Obrigado pela atenção, abraço a todos.
private void enviaEmailCompraProduto(Usuario usuario) {
try {
Email email = new SimpleEmail();
email.setHostName("smtp.googlemail.com");
email.setSmtpPort(465);
email.setAuthenticator(new DefaultAuthenticator("user", "senha"));
email.setSSLOnConnect(true);
email.setFrom("contato@bigminds.io");
email.setSubject("Sua compra na CasaDoCodigo foi aprovada");
email.setMsg("Compra aprovada com sucesso no valor de " + carrinho.getTotal());
//email.addTo(usuario.getEmail());
email.addTo("eulen.mesquita@gmail.com");
email.send();
} catch (EmailException e) {
e.printStackTrace();
}
}
Biblioteca de email da Apache:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>