오늘은 spring환경에서 메일보내기를해보즈ㅡㅏ
구글 계정을 일단 생성을 해야한다!
계정 설정을 해야 라이브러리를 통해서 메일을 보낼 수 있다.
계정관리를 들어간다.
보안카테고리를 들어간다.
2단계 인증을 클릭하고 들어가서 다시로그인을 한다.
여기서 전화번호 인증을하고 다시 보안카테고리로 돌아와서
앱 비밀번호를 설정하는 메뉴로 들어가서 다시 로그인을 한다.
여기서 앱 비밀번호를 설정해줘야 한다.
여기서 앱선택에서 기타를 선택하고 생성을 누르면
앱 비밀번호를 발급해준다. 이 비밀번호를 어딘가에 메모를 해놓자!
만약 이 비밀번호를 까먹었다면 앱키를 다시만들어주면 된다 ^^
이제 본격적으로 들어가보자
메일을 보내주기위한 서버(SMTP server)가 필요하다!
그 서버가 없으니 구글서버를 빌려야한다!
이 서버를 사용하기 위해서 구글계정을 만들고 설정을 했던거다잉
SMTP : Simple Mail Transfer Protocol
(메일보내기)
인터넷상에서 메일을 보낼 때 사용하는 표준프로토콜
POP3 : Post Office Protocol3
(메일 받기)
사용자의 메일을 내PC로 가져올때 사용하는 프로토콜
(네이버 : 유료, 다음 : 무료)
<!-- 메일링 -->
<beans:bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<beans:property name="host" value="smtp.gmail.com"/>
<beans:property name="port" value="587"/>
<beans:property name="defaultEncoding" value="utf-8"/>
<beans:property name="username" value="새로만든 구글계정 아이디"/>
<beans:property name="password" value="앱키 비밀번호"/>
<beans:property name="javaMailProperties">
<beans:props>
<beans:prop key="mail.transport.protocol">smtp</beans:prop>
<beans:prop key="mail.smtp.auth">true</beans:prop> <!-- 2단계본인인증을 했으니 보안적으로 true라고 준다 -->
<beans:prop key="mail.smtp.starttls.enable">true</beans:prop>
<beans:prop key="mail.debug">true</beans:prop>
</beans:props>
</beans:property>
</beans:bean>
<context:component-scan base-package="spring.service" />
라이브러리 가져다놓기
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
클래스에 @service등록
@Service
public class MailService {
@Autowired
private MailSender mailSender;
public void sendEmail(String toAddress, String fromAddress,
String subject, String msgBody) {
SimpleMailMessage smm = new SimpleMailMessage();
smm.setFrom(fromAddress);
smm.setTo(toAddress);
smm.setSubject(subject);
smm.setText(msgBody);
mailSender.send(smm);
}
}
@Controller
public class EmailController {
@Autowired
private MailService mailService;
//DB작업이 필요한 만큼 DAO들 선언해야함
//아이디와 이메일이 같으면 특정한 메일이 가게..
@RequestMapping("/noticeMail")
public ModelAndView sendEmail(String id, String email) throws Exception {
ModelAndView mv = new ModelAndView();
String addr = "새로만든 구글계정";
String subject = "[😀😀] 알림메일 입니다.";
String body = "안녕하세요?\r\n소통해요~\r\n SMTP메일 테스트입니다.";
mailService.sendEmail(email, addr, subject, body);
mv.setViewName("/");
return mv;
}
}
실행을 하고 get방식으로 확인을 해보자
email 에다가 자기가 받아볼 이메일을 입력해보자!
good~