본문 바로가기
IT/JAVA

JAVA STMP 를 활용 하여 MAIL 보내는 방법

by rimilove 2023. 6. 20.
반응형

1. 프로젝트에 JavaMail API를 추가합니다.

 

2. 이메일 세션 설정: 이메일을 보내기 위해 SMTP 서버에 연결할 세션을 설정합니다.

 

import java.util.Properties;
import javax.mail.Session;

Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.example.com");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");

Session session = Session.getInstance(properties);

 

프로젝트에서 설정파일을 따로 분리한 경우 설정 파일에서 메일 세팅값을 가지고 옵니다. 

ex)  test.xml 

## Mail Dev
send.mail.id = no-reply@test.com
send.mail.user.name = test
smtp.server = TEST-PROD-DWP-MAIL-INT-NLB-b6e907240ac15b02.elb.ap-northeast-2.amazonaws.com
smtp.send.port = 25
smtp.encoding.set = utf-8
smtp.authentication.flag = false
smtp.user_id = 
smtp.password = 
smtp.send.flag = true
smtp.use = true

java 파일 소스 

Properties props = new Properties();

props.put("mail.smtp.auth", cf.getString("ssmtp.authentication.flag"));
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", cf.getString("smtp.server"));
props.put("mail.smtp.port", cf.getString("smtp.send.port"));

Session session = Session.getDefaultInstance(props, null); 

* session.getInstance 와 session.getDefaultInstance 의 차이점은 다음글 참고 부탁 드립니다. 

 

 

결론적으로 SMTP 서버 호스트, 포트 및 인증 정보에 맞게 값을 변경합니다. 

 

3. 이메일 작성 및 전송합니다. 

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

try {

    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("sender@example.com"));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient@example.com"));
    message.setSubject("Test Email");
    message.setText("This is a test email sent from Java.");

    Transport.send(message);
    System.out.println("Email sent successfully.");

} catch (MessagingException e) {
    e.printStackTrace();
}

 

sender@example.com과 recipient@example.com을 적절한 발신자 및 수신자 이메일 주소로 변경합니다.

이메일 제목과 본문도 필요에 맞게 수정할 수 있습니다.

 

 

ex )  html 소스를 본문내용으로 보내고 싶은 경우 

MimeMessage message = new MimeMessage(session);

String htmlMsg = setContent();  //아래 함수 참고 



message.setFrom(new InternetAddress(cf.getString("send.mail.id"),cf.getString("send.mail.user.name"),"UTF-8"));


(send.mail.id , send.mail.user.name 위의 설정파일 값을 설정한 부분입니다. ) 



essage.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse('test@naver.com'));  // test@naver.com 받는사람 email 주소 


message.setSubject(" 이메일  제목을 작성합니다. .");

message.setContent(htmlMsg, "text/html;charset=UTF-8");

Transport.send(message);



public String setContent() {


String htmlMsg =""; 

htmlMsg +="<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> ";
htmlMsg +="<html xmlns='http://www.w3.org/1999/xhtml'>                                                                               ";
htmlMsg +="                                                                                                                          ";
htmlMsg +="<head>                                                                                                                    ";
htmlMsg +="    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>                                                   ";
htmlMsg +=" <title>e-Accounting 알림메일</title>                                                                                     ";
htmlMsg +=" <meta name='viewport' content='width=device-width, initial-scale=1.0' />                                                 ";
htmlMsg +="</head>                                                                                                                   ";
htmlMsg +="                                                                                                                          ";
htmlMsg +="<body style='min-height: 100%; margin: 0;'>                                                                               ";
htmlMsg +=" <!-- OUTERMOST CONTAINER TABLE -->                                                                                       ";
htmlMsg +=" <table border='0' cellpadding='0' cellspacing='0' width='100%' id='bodyTable'>                                           ";
htmlMsg +=" <tr>                                                                                                                   ";
htmlMsg +=" <td>   HTML 내용 작성                                                                                                ";
htmlMsg +=" </td>                                                                                                                ";
htmlMsg +=" </tr>                                                                                                                  ";
htmlMsg +=" </table>                                                                                                                 ";
htmlMsg +="</body>"   ;
htmlMsg +="</html> "  ;

return htmlMsg ;

}

 

 

위의 소스 참고 삼아 작성후  메일 테스트를 합니다. 

 

 

 

 

반응형