Spring에서 gmail보내기

조회수 1920회

스프링을 통해서 지메일을 보내는 예제를 만들려고 합니다. 프로그램은 idea를 사용하고 있고, gradle-project를 선택해서 만들었습니다.

먼저 디펜던시는 아래와 같이 선언했습니다.

dependencies {
    compile('org.springframework.boot:spring-boot-starter-mail')
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('javax.mail:mail')
    compile('org.springframework.integration:spring-integration-mail')
    compileOnly('org.projectlombok:lombok')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

bean은 xml대신 자바로 선언 했습니다. MailConfig.java

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

@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("비밀번호입니다/");
        return mailSender;
    }
}

MailController.java


@Controller
public class MailController{
    @Autowired
    private JavaMailSender mailSender;
    private String from = "제계정@gmail.com";

    public void sendMail(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();
        }
    }
}

메인MailController a = new MailController(); a.sendMail("taesea5241@naver.com","제목","내용"); 이런식으로 했는데요.

java.lang.NullPointerException에러가 뜨면서 MailController.java 파일에서 mailSender.send(message); 부분과 main에서 a.sendMail("taesea5241@naver.com","제목","내용"); 가 에러가 난다고 합니다. 도와주시면 감사하겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 관련 없을지도 모르지만 gmail smtp 쓰실 때는 지메일 환경설정 쪽에서 "보안 수준이 낮은 앱의 액세스"를 허용해주지 않으면 발송이 안되는 수가 있으니 체크하세요~ 엽토군 2018.9.16 14:35
  • ㅠㅠ 그건 이미 설정 해놨습니다.... 정말 왜안되는지 모르겄습니다 알 수 없는 사용자 2018.9.16 15:48

1 답변

  • 스프링 프레임워크에 대한 이해가 부족하신것 같네요.

    MainController 를 스프링 컨테이너에서 관리되고있는 객체를 사용한 것이 아니라, 직접 객체를 생성했기때문에 JavaMailSender 의존성 주입이 안되어서 NullPointerException 이 발생하는 경우입니다.

    스프링 컨테이너에 등록되어있는 MainController를 가져다가 사용하세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)