반응형
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 ; } |
위의 소스 참고 삼아 작성후 메일 테스트를 합니다.
반응형
'IT > JAVA' 카테고리의 다른 글
자바스크립트 opener 함수의 호출 오류 해결 방법 (0) | 2024.08.23 |
---|---|
JAVA 또는 JAVASCRIPT 첨부 파일 회전 시킨 후 다시 저장하는 방법 (0) | 2023.07.04 |
java eclipse 디버깅 하는 방법 (0) | 2023.06.29 |
java util map replace (key, value) 값 변경 (0) | 2023.06.23 |
JAVA SMTP MAIL getInstance 와 getdefaultinstance 차이 (0) | 2023.06.20 |