IT정보사전

[JAVA] 자바 SMTP 메일 발송하기 본문

웹 프로그래밍

[JAVA] 자바 SMTP 메일 발송하기

작은나무0530 2021. 6. 17. 15:58
728x90
반응형

안녕하세요~ 작은나무입니다!!
JAVA에서 SMTP를 이용하여 메일을 발송하는 내용을 알아보겠습니다.
메일을 발송하기 위해 알아야 하는 메일 관련 프로토콜에 대해 먼저 확인해 보겠습니다.

SMTP (Simple Mail Transfer Protocol)
메일을 전송하기 위해 사용되는 TCP/IP Protocol 통신 규약입니다.

POP3 (Post Office Protocol) / IMAP (Iternet Mail Access Protocol)
메일을 수신하기 위한 표준 Protocol - 서버에 위치한 자신의 메일 수신함을 가져올수 있습니다.

JavaMail.jar 라이브러리를 다운로드 받습니다.
https://mvnrepository.com/artifact/javax.mail/javax.mail-api/1.6.2
라이브러리를 다운로드 후 자신의 프로젝트에 import하여 메일 작업을 할 수 있도록 설정합니다.

[JAVA 메일 보내기]

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

public static void sendMail() {
    Properties props = new Properties();

    try{
        //SSL 사용일때
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory")
 	props.put("mail.smtp.socketFactory.port", "587");
 	props.put("mail.smtp.ssl.enable", "true");

        //TLS 사용일때
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.starttls.enable", "true");

        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.put("mail.smtp.debug", "true");
        props.put("mail.smtp.auth", "true");

        //인증정보
        Authenticator auth = new SMTPAuthenticator("계정 아이디", "계정 비밀번호");
        Session mailSession = Session.getDefaultInstance(props, auth);

        MimeMessage mailMessage = mailImpl.createMimeMessage();
        MimeMessageHelper message = new MimeMessageHelper(mailMessage, isAttach, "UTF-8"); 

        message.setTo("받는사람 메일주소");
        message.setFrom("보내는 사람 메일주소");
        message.setSubject("메일제목");
        message.setText("메일 본문", true);

        mailImpl.setJavaMailProperties(props);
        mailImpl.setSession(mailSession);

        //메일발송
        mailImpl.send(mailMessage);
    }
    catch(MessagingException e)
    {
        e.printStackTrace();
    }
    catch (AddressException e) 
    {
        e.printStackTrace();
    }
}

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class SMTPAuthenticator extends Authenticator
{
  protected static String username = "";
  protected static String password = "";
	
  public SMTPAuthenticator(String user, String pwd)
  {
      username = user;
      password = pwd;	
  }

  public PasswordAuthentication getPasswordAuthentication()
  {
      return new PasswordAuthentication(username, password); 
  }
}
728x90
반응형
그리드형
Comments