首页 > 解决方案 > sendSimpeMessage 返回 500

问题描述

我相信我的当​​前控制器有一些端点问题。我正在尝试使用 JavaMailSender 发送电子邮件。

下面的示例在发送硬编码字符串值时工作得很好。

    @RequestMapping("/sendhc")
    public void sendSimpleMessage() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo("firstname.lastname@gmail.com");
        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@gmail.com", "Subject":"New Errand", "text":"loremloremloremloremlorem" }


非常感谢任何关于我可能出错的地方的建议。

标签: javaspringspring-bootemailjakarta-mail

解决方案


如果您在请求正文中将参数作为 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,) {

推荐阅读