본문 바로가기
프로그래밍/Web.

[JAVA] SMTP 발송(feat.Naver)

by _Chavi 2020. 6. 30.

 

Java언어와 SMTP를 이용하여 메일을 발송하는 예제입니다.

 

네이버 메일 설정

1. 내 메일함 설정으로 들어갑니다.

2. POP3/IMAP 설정으로 들어갑니다.

3. IMAP/SMTP 설정으로 들어갑니다.

4. IMAP/SMTP 사용을 사용함으로 변경합니다.

5. 변경한 설정을 적용합니다.

6. SMTP 요청을 전송할 정보임으로 확인해주세요

 

pom.xml
<!-- mail(SMTP) -->
<dependency>
    <groupId>org.simplejavamail</groupId>
    <artifactId>simple-java-mail</artifactId>
    <version>6.0.4</version>
</dependency>

저장소에서 원하시는 버전의 의존성 패키지를 선택해서 프로젝트에 불러와주세요.

 

소스
public class MailUtil {
	
	/** 메일 HOST **/
	private static final String HOST = "smtp.naver.com";
	/** 메일 PORT **/
	private static final String PORT = "587";
	/** 메일 ID **/
	private static final String MAIL_ID = "발송인@naver.com";
	/** 메일 PW **/
	private static final String MAIL_PW = "발송인PW";
	
	public static void sendNotiMail(String subejct, String body) {
		try {
			InternetAddress[] receiverList = new InternetAddress[2];
			receiverList[0] = new InternetAddress("수신인1@tistory.com");
			receiverList[1] = new InternetAddress("수신인2@tistory.com");
			
			// SMTP 발송 Properties 설정
			Properties props = new Properties();
			props.put("mail.transport.protocol", "smtp");
			props.put("mail.smtp.host", MailUtil.HOST);
			props.put("mail.smtp.port", MailUtil.PORT);
			props.put("mail.smtp.starttls.enable", "true");
			props.put("mail.smtp.ssl.trust", MailUtil.HOST);
			props.put("mail.smtp.auth", "true");
			
			// SMTP Session 생성
			Session mailSession = Session.getDefaultInstance(props, new javax.mail.Authenticator(){
				protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
					return new javax.mail.PasswordAuthentication(MailUtil.MAIL_ID, MailUtil.MAIL_PW);
				}
			});
			
			// Mail 조립
			Message mimeMessage = new MimeMessage(mailSession);
			mimeMessage.setFrom(new InternetAddress(MailUtil.MAIL_ID));
			mimeMessage.setRecipients(Message.RecipientType.TO, receiverList);
            		// 메일 제목
			mimeMessage.setSubject(subejct);
            		// 메일 본문 (.setText를 사용하면 단순 텍스트 전달 가능)
			mimeMessage.setContent(body, "text/html; charset=UTF-8");
			
			// Mail 발송
			Transport.send(mimeMessage);
			
		} catch(Exception e) {
			Logger.getLogger(MailUtil.class).error("메일 발송 오류!!");
		}
	}

위의 소스는 HTML형식으로 메일을 발송합니다. 다른 메서드를 이용하면 단순 텍스트도 보낼 수 있습니다.

 

결과

지정한 ID로 전송된 메일을 수신하였습니다.

 

댓글