본문 바로가기
프로그래밍 언어/Java

[자바/JAVA] 네이버 SMTP를 활용해 메일을 발송해보자

by 연구자 공학코드 2020. 10. 5.

공지사항

  1. 제가 운영하는 네이버 카페 개발자 커뮤니티 코어큐브(https://cafe.naver.com/ewsncube)에 가입하시면 컴퓨터 관련 학습 자료와 질의응답을 제공받으실 수 있습니다.

728x90
반응형

본 글은 2017년 7월 19일 08시 32분에 썼던 글이며 블로그 자료 이전으로 날짜와 일부 내용이 갱신되었습니다.

 

JAVA 기반의 SMTP 메일 발송 샘플코드를 기록하는 글이다. JavaMail 이라는 라이브러리를 가져다 쓰자 여기에서(https://javaee.github.io/javamail/) 받을 수 있다. 이 라이브러리는 SMTP와 IMAP, POP3을 지원한다.

 

개발환경 : JDK 1.8.0_111 x64, Windows 7, Eclipse Mars.1 Release (4.5.1), JavaMail 1.6.0

 

위에 있는 링크에 가서 javax.mail.jar을 받는다.

그 후 이클립스에 프로젝트를 생성하고 SMTP 클래스를 생성한 후 외부라이브러리를 위와 같이 추가한다.

반응형
package example;

import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import java.util.Properties;

public class SMTP {
    public static void main(String[] args) {
        Properties p = System.getProperties();
        p.put("mail.smtp.starttls.enable", "true");
        p.put("mail.smtp.host", "smtp.naver.com");
        p.put("mail.smtp.auth", "true");
        p.put("mail.smtp.port", "587");
 
        Authenticator auth = new MyAuthentication();
        Session session = Session.getDefaultInstance(p, auth);
        MimeMessage msg = new MimeMessage(session);
 
        try {
            msg.setSentDate(new Date());
            InternetAddress from = new InternetAddress();
            
            from = new InternetAddress("sender<sender@naver.com>");
            msg.setFrom(from);
 
            InternetAddress to = new InternetAddress("receiver@naver.com");
            msg.setRecipient(Message.RecipientType.TO, to);
 
            msg.setSubject("title", "UTF-8");
            msg.setText("content", "UTF-8");
            msg.setHeader("content-Type", "text/html");
 
            javax.mail.Transport.send(msg);
        } catch (AddressException addr_e){
            addr_e.printStackTrace();
        } catch (MessagingException msg_e){
            msg_e.printStackTrace();
        }
    }
}

class MyAuthentication extends Authenticator {
 
    PasswordAuthentication account;
 
    public MyAuthentication(){
        String id = "id";
        String pw = "pw";
        account = new PasswordAuthentication(id, pw);
    }
 
    public PasswordAuthentication getPasswordAuthentication(){
        return account;
    }
}

SMTP 클래스의 소스코드에 위의 소스코드를 붙여넣는다.

네이버메일에 가서 로그인하고 위와 같이 SMTP를 사용함으로 변경한 후 노란색 체크된 것들을 확인한다. 그리고 소스코드의 idpw, from, to의 값을 자신에게 맞게 적절하게 수정하고 실행하면 위와 같이 메일이 정상적으로 발송된 것을 확인할 수 있다.

728x90
반응형

댓글