我正在创建一个向spring发送电子邮件的示例。
我首先在依赖项中声明了这一点。该程序使用“想法”,并通过选择“渐变项目”来创建。 ile('org.springframework.boot:spring-boot-starter-test')
该bean被声明为Java而不是xml。
@Configuration
public class MailConfig {
@Bean
public static JavaMailSender mailSender(){
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.gmail.com");
mailSender.setPort(587);//465
mailSender.setUsername("??????@gmail.com");
mailSender.setPassword("??????");
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.debug", "true");
return mailSender;
}
}
控制器:
@Controller
public class MailController{
@Autowired
private JavaMailSender mailSender;
@RequestMapping(method = RequestMethod.POST)
public void sendMail(String from,String to, String subject, String text) {
try{
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(text);
mailSender.send(message);
}catch(Exception e){
e.printStackTrace();
System.out.println("개시ㅂ라");
}
}
}
主要
MailController a = new
a.sendMail("gusxo5243@gmail.com","taesea5241@naver.com","제목","내용");
答案 0 :(得分:0)
如果使用new
运算符创建使用Spring构造型注释之一(例如,存储库,控制器,组件,服务)注释的类的对象,则创建的对象将不是Spring bean-Spring将不照顾依赖项,它不会将JavaMailSender实例连接到MailController!
如果您真的想在main()方法中尝试邮件发送,请在启动Spring Boot应用程序后立即使用Spring的CommandLineRunner
执行一些代码。参见下面的示例:将创建一个CommandLineRunner
Spring bean,并将您的Spring配置的MailController
实例作为方法参数注入。该实例应该已经设置了JavaMailSender
属性,因为Spring在应用程序启动时(bean创建,依赖项注入/ bean连线)负责了它。
@SpringBootApplication
public class SendMailTestDriver {
public static void main(String[] args) {
SpringApplication.run(SendMailTestDriver.class, args);
}
@Bean
CommandLineRunner runner(MailController mailController) {
return args -> {
mailController.sendMail("gusxo5243@gmail.com","taesea5241@naver.com","xxx","yyy");
};
}
}