我相信我当前的控制器存在一些端点问题。我正在尝试使用JavaMailSender发送电子邮件。
下面的示例在发送硬编码的字符串值时很好用。
@RequestMapping("/sendhc")
public void sendSimpleMessage() {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo("[email protected]");
message.setSubject("subject");
message.setText("text");
emailSender.send(message);
}
我希望能够使用值而不是上面显示的硬编码字符串示例进行请求。发布时,我得到了NullPointerException。
@RequestMapping("/send")
public void sendSimpleMessage(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
emailSender.send(message);
}
我正在尝试使用以下值向POST到localhost:8080/send
:(如上图所示)
{
"to":"[email protected]",
"Subject":"New Errand",
"text":"loremloremloremloremlorem"
}
非常感谢我对哪里可能出错的建议。
如果要在请求的正文中将参数作为JSON发送,则需要在请求中指定该参数,然后转换为Java,例如:
@RequestMapping("/send")
public void sendSimpleMessage(@RequestBody String json) {
// convert json to Java DTO class using e.g. flexjson.JSONDeserialier
或者,您可以指定路径变量,而不是在正文中发送:
@RequestMapping("/send/to/{to}/subject/{subject}/text/{text}")
public void sendSimpleMessage(@PathVariable("to") String to, @PathVariable("subject") String subject, @PathVariable("text") String text,) {