2017. 12. 23. 08:31
반응형

웹사이트에서 회원가입을 할 때 메일인증을 하는 경우가 많다.

Spring Framework를 이용하는 경우 Maven에 javax.mail을 추가하면 쉽게 보낼 수 있다.

처음 시도를 하면 아마 인증에 실패하게 될텐데, 이때 gmail에 가보면 차단된 로그인 시도 메일이 와있다.

여기서 보안 수준이 낮은 앱에 액세스하도록 허용을 해야 이 기능을 쓸 수 있다.



pom.xml 추가사항

<dependency>
	<groupId>javax.mail</groupId>
	<artifactId>mail</artifactId>
	<version>1.4</version>
</dependency>


우선 간단하게 spring project 안에 test용 class 하나만으로 진행했다.

import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class MailTest { public static void main(String[] args) { final String username = "id@gmail.com"; // 자신의 gmail 주소 final String password = "password"; // 자신의 gmail 비밀번호 Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("receiver@mail.c")); // 받을 사람 메일 주소 message.setSubject("Testing Subject"); // 메일 제목 message.setContent("<div style='color: red'>테스트용 메일입니다.</div>", "text/html;charset=utf-8"); // html을 이용하여 메일 내용을 꾸밀 수 있다. charset=utf-8을 쓰지 않았을 때 한글이 깨지는 것이 확인되었다. // 그냥 텍스트만 보내려면 setText를 쓰면 된다. System.out.println("메일 보내는중..."); Transport.send(message); System.out.println("메일 전송 완료"); } catch (MessagingException e) { throw new RuntimeException(e); } } }


반응형