java - 使用 Spring 发送 Gmail
问题描述
我正在创建一个向 spring 发送电子邮件的示例。
我首先在依赖项中声明了这一点。该程序使用“idea”并通过选择“gradle-project”创建。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","제목","내용");
解决方案
如果您创建一个类的对象,该对象使用 Spring 的构造型注释(例如,存储库、控制器、组件、服务)和new
操作符进行注释,则创建的对象将不是 Spring bean - Spring 不会处理依赖关系,它会不要将您的 JavaMailSender 实例连接到您的 MailController 中!
如果您真的想在 main() 方法中尝试邮件发送,请CommandLineRunner
在 Spring Boot 应用程序启动后立即使用 Spring 执行一些代码。请参见下面的示例: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");
};
}
}
推荐阅读
- regex - 带有特殊字符和双引号的字符串的 Perl 正则表达式
- flutter - 首次运行消费者
抛出错误 - c# - .NET/Angular 应用程序中的 JWT 令牌身份验证无效
- java - 如何使用java从字符串中删除非英文字符?
- asp.net-core - 如何在asp.net core razor中将选择的单选按钮值发送到模态
- racket - 在 Racket 中动态加载模块
- java - 如何从java中的contect-type“application/pdf”中提取文本内容
- python - 无法转换参数
- docusignapi - 使用 PHP 中的标记字段通过电子邮件发送 DocuSign PDF
- c++ - Nlohmann Json“array”和“array_t”之间的区别