Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用Spring发送Gmail_Java_Spring_Spring Boot_Gmail - Fatal编程技术网

Java 用Spring发送Gmail

Java 用Spring发送Gmail,java,spring,spring-boot,gmail,Java,Spring,Spring Boot,Gmail,我正在创建一个向spring发送电子邮件的示例 我首先在dependencies中声明了这一点。该程序使用“idea”并通过选择“gradle项目”创建。ile('org.springframework.boot:springbootstartertest') bean被声明为Java而不是xml @Configuration public class MailConfig { @Bean public static JavaMailSender mailSender(){ JavaMa

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

我首先在dependencies中声明了这一点。该程序使用“idea”并通过选择“gradle项目”创建。ile('org.springframework.boot:springbootstartertest')

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("개시ㅂ라");
    }
  }
}
main

MailController a = new 
a.sendMail("gusxo5243@gmail.com","taesea5241@naver.com","제목","내용");

如果您使用
new
操作符创建一个类的对象,并使用Spring的一个原型注释(例如存储库、控制器、组件、服务)进行注释,那么创建的对象将不是Springbean-Spring将不考虑依赖关系,它不会将JavaMailSender实例连接到MailController

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


您面临的问题是什么欢迎使用堆栈溢出!其他用户将您的问题标记为低质量和需要改进。我对您的输入进行了重新措辞/格式化,使其更易于阅读/理解。请查看我的更改,以确保它们反映您的意图。但我认为你的问题仍然无法回答。您现在应该回答您的问题,以添加缺少的详细信息(请参阅)。如果您有进一步的问题或反馈,请随时给我留言。我们绝对无法帮助您提供到目前为止的输入。每次我运行程序时,都没有响应。仅显示“nullpoinException”,不发送电子邮件。我已在@bean下将其添加到我的application.java文件中,但我收到错误“无法解析符号”mailController。您的主类的包名是什么(包含“public static void main(…)+用@SpringBootApplication注释)和MailController.java类?请确保通过组件扫描找到带注释的bean:阅读此->主文件和控制器文件在同一个包中。包名为com.example.aaasdtry,用于显式指定具有原型注释的类的包。e、 g.将@ComponentScan(basePackages={“com.example.aaasd”}添加到应用程序类中
@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");
        };
    }
}