首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用Spring发送Gmail

用Spring发送Gmail
EN

Stack Overflow用户
提问于 2018-09-20 06:27:26
回答 1查看 88关注 0票数 -1

我正在创建一个向spring发送电子邮件的示例。

我首先在依赖中声明了这一点。该程序使用'idea‘,并通过选择'gradle-project’创建。ile('org.springframework.boot:spring-boot-starter-test')

该bean被声明为Java而不是xml。

代码语言:javascript
复制
@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;
  }
}

控制器:

代码语言:javascript
复制
@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("개시ㅂ라");
    }
  }
}

代码语言:javascript
复制
MailController a = new 
a.sendMail("gusxo5243@gmail.com","taesea5241@naver.com","제목","내용");
EN

回答 1

Stack Overflow用户

发布于 2018-09-20 08:27:09

如果你用new操作符创建了一个类的对象,而这个类是用Spring的构造型注解之一(如存储库、控制器、组件、服务)注释的,那么创建的对象将不是Spring bean --Spring不会处理依赖项,它不会将JavaMailSender实例连接到MailController中!

如果你真的想在你的main()方法中尝试邮件发送,那么在Spring Boot应用程序启动后,使用Spring的CommandLineRunner来执行一些代码。参见下面的示例:将创建一个Spring bean,并将您的CommandLineRunner配置的MailController实例作为方法参数注入。这个实例应该已经设置了它的JavaMailSender属性,因为Spring会在应用程序启动时处理它(bean创建、依赖注入/ bean连接)。

代码语言:javascript
复制
@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");
        };
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52414993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档