如何使用spring boot发送邮件?

问题描述

我正在尝试使用 mailtrap 在我的 Spring Boot 应用程序中发送邮件来测试,这是我的代码:

pom.xml :

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>

application.properties:我从mailtrap.io 上的帐户中获取了此凭据:

spring.mail.host=smtp.mailtrap.io
spring.mail.port=2525
spring.mail.username=2d9a7d89fcc8f8
spring.mail.password=9bb8e9090abd96

电子邮件配置:

@Component
public class EmailCfg {
@Value("${spring.mail.host}")
private String host;

@Value("${spring.mail.port}")
private int port;

@Value("${spring.mail.username}")
private String username;

@Value("${spring.mail.password}")
private String password;

public String getHost() {
    return host;
}

public void setHost(String host) {
    this.host = host;
}

public int getPort() {
    return port;
}

public void setPort(int port) {
    this.port = port;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}
}

电子邮件:

public class EmailMsg {

 @NotNull
    private String name;

    @NotNull
    @Email
    private String email;

    @NotNull
    @Min(10)
    private String feedback;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFeedback() {
        return feedback;
    }

    public void setFeedback(String feedback) {
        this.feedback = feedback;
    }
    }

控制器:

 @CrossOrigin(origins = StringsConstants.FRONT_BASE_URL,maxAge = 3600)
   @Api("Events Controller")
   @RestController
   @RequestMapping(StringsConstants.EVENTS_URL)

   public class EventsController {

 @Autowired
 private EmailCfg emailCfg;

  @PostMapping(value = "/sendMail")
  @PreAuthorize("hasRole('USER')")
    public void sendFeedback(@RequestBody EmailMsg feedback,BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            throw new ValidationException("Feedback is not valid");
        }

        // Create a mail sender
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost(this.emailCfg.getHost());
        mailSender.setPort(this.emailCfg.getPort());
        mailSender.setUsername(this.emailCfg.getUsername());
        mailSender.setPassword(this.emailCfg.getPassword());

        // Create an email instance
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        mailMessage.setFrom(feedback.getEmail());
        mailMessage.setTo("rc@feedback.com");
        mailMessage.setSubject("New feedback from " + feedback.getName());
        mailMessage.setText(feedback.getFeedback());

        // Send mail
        mailSender.send(mailMessage);
    }

       }

它不起作用,我没有收到任何错误!!!邮递员我得到这个

{
"timestamp": "2021-04-11T09:52:43.286+0000","status": 404,"error": "Not Found","message": "No message available","path": "/api/events/sendEmail"
}

有什么想法吗?请!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...