Отправка Gmail весной - PullRequest
       5

Отправка Gmail весной

0 голосов
/ 20 сентября 2018

Я создаю пример отправки электронной почты к весне.

Сначала я объявил это в зависимостях.Программа использует идею и создается путем выбора «gradle-project».ile ('org.springframework.boot: spring-boot-starter-test')

Бин был объявлен как 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","제목","내용");

1 Ответ

0 голосов
/ 20 сентября 2018

Если вы создаете объект класса, который вы аннотировали с помощью одной из аннотаций стереотипа Spring (например, Репозиторий, Контроллер, Компонент, Сервис) с оператором new, созданный объект не будет bean-компонентом Spring - Spring НЕ будет приниматьзаботясь о зависимостях, он не будет связывать ваш экземпляр JavaMailSender с вашим MailController!

Если вы действительно хотите попробовать отправить почту в вашем методе main (), используйте Spring's CommandLineRunner для выполнения некоторого кода сразу после запуска вашего приложения Spring Boot.См. Пример ниже: будет создан CommandLineRunner Spring bean, и ваш настроенный Spring MailController экземпляр будет внедрен как параметр метода.В этом экземпляре должно быть уже установлено свойство JavaMailSender, поскольку Spring позаботился об этом при запуске приложения (создание компонента, внедрение зависимостей / подключение компонента).

@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");
        };
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...