0

Clase Mail que realice el envio del mail

package com.example.demo.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

import org.springframework.stereotype.Controller;

public class Mail {
    @Autowired
    private JavaMailSender sender;

    public void sendEmail(String to, String subject, String text) {
                SimpleMailMessage message = new SimpleMailMessage(); 
                message.setTo(to); 
                message.setSubject(subject); 
                message.setText(text);
                sender.send(message);

            }
}

Accion de registroen el controlador UsuarioController

Mail mail;
@RequestMapping(value = "/registro", method = RequestMethod.POST)
    public String registroPost(@RequestParam("alias") String alias,
            @RequestParam("contrasena") String contrasena,
            @RequestParam("nombre") String nombre,
            @RequestParam("primerApellido") String primerApellido,
            @RequestParam("segundoApellido") String segundoApellido,
            @RequestParam("telefono") String telefono,
            @RequestParam("email") String email,
            @RequestParam("sexo") String sexo,
            ModelMap m)  {


        Rol rolPorDefecto = (Rol) repoRol.getDefaultRol();
        Usuario u = new Usuario(alias, contrasena, nombre, primerApellido, segundoApellido, telefono, email, sexo, rolPorDefecto);
        try {    
            if (repoUsuario.datosPerfil(alias) != null) {
                m.put("view", "/_t/error");
            }
        } catch (Exception e) {
            mail.sendEmail(email, "Bienvenido", "Bienvenido a la web");
            m.put("alias", alias);
            m.put("view", "/usuario/crearPost");
            repoUsuario.save(u);
        }
        return "views/_t/main";
            }

El problema es que me da el siguiente error cuando quiero enviar el mail

java.lang.NullPointerException: null
    at com.example.demo.controllers.UsuarioController.registroPost(UsuarioController.java:64) ~[classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_111]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_111]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_111]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_111]
Stewie
  • 333
  • 1
  • 4
  • 19
  • Dice que en la línea 64 tienes un `NullPointerException`. ¿Podrías indicar a qué línea se refiere en tu código? – Angel Oropeza Nov 22 '18 at 21:29
  • Es esta linea `}catch (Exception e){` @AngelOropeza – Stewie Nov 22 '18 at 21:32
  • Por lo que veo probablemente sea la variable `m` ¿Has verificado que `ModelMap m` no sea `null`? Deberías probar en colocar un *breakpoint* al inicio del método y ir *debugueando*. Adicional te podría servir esta [respuesta](https://es.stackoverflow.com/a/42978/7334). – Angel Oropeza Nov 22 '18 at 21:39

1 Answers1

1

Al parecer tu error se debe a que no estas instanciando o inyectando adecuadamente de tu clase Mail.

Podrías agregar a tu clase la anotación @Service de la siguiente forma:

@Service
public class Mail {

Y en la clase de tu controlador la anotación @Autowired de la siguiente forma:

@Autowired
Mail mail;

Referencias

Angel Oropeza
  • 961
  • 5
  • 19