我試圖使用 springboot 發送一封 otp 郵件。我已經創建了一個登錄頁面,郵件將從該頁面提供給 sendotp()。或者您可以通過提供有關如何使用 springboot 發送郵件 otp 的代碼來提供幫助。這是我的代碼:
OtpController類 -
@Controller
public class OtpEmailController {
private EmailSenderService emailService;
Random random = new Random(1000);
@PostMapping("/send-otp")
public String sendOtp(@RequestParam("email") String email) {
int otp = random.nextInt(999999);
String subject = "OTP from session-handling-proj By Harshit";
String toEmail = email;
String body = "<h1> OTP = " otp "</h1>";
this.emailService.sendMail(toEmail, subject, body);
return ("success");
}
EmailSenderService 類:
@Service
public class EmailSenderService {
@Autowired
private JavaMailSender mailSender;
public void sendMail(String toEmail,
String subject,
String body) {
SimpleMailMessage message=new SimpleMailMessage();
message.setFrom("[email protected]");
message.setTo(toEmail);
message.setText(body);
message.setSubject(subject);
mailSender.send(message);
System.out.println("message sent .....");
}
}
Wnen 我正在呼叫 sendOtp() 方法,我在 springboot 中得到 NullPointerException 錯誤。
錯誤 :
java.lang.NullPointerException: null
at com.example.sessionHandling.sessionHandling.controller.OtpEmailController.sendOtp(OtpEmailController.java:31) ~[classes/:na]
at com.example.sessionHandling.sessionHandling.controller.SessionHandlingController.loginUser(SessionHandlingController.java:65) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
.............
我知道 OtpController 中存在一些問題,但無法弄清楚我到底需要做什么。
uj5u.com熱心網友回復:
您的控制器需要知道emailService應該由 Spring 注入。
您可以添加 @Autowired 注釋:
@Autowired
private EmailSenderService emailService;
或者創建一個全引數建構式
OtpEmailController(EmailSenderService emailService){
this.emailService = emailService;
}
因為類被標記為@Controller,所以 Spring 將通過建構式注入 bean,以決議所有引數。
使用第二種方法,您可以使 emailService 最終確定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490384.html
