💬
목차
< 뒤로가기
인쇄

캐모마일 이메일 모듈 가이드

개요

Mail Util은 SMTP서버를 접속하고 발신자, 수신자, 제목, 내용 등의 데이터를 넣고 메일을 발신하는 유틸이다.

사전에 SMTP 서버가 별도로 구축되어있어야 하며 SMTP 서버의 id, password, port 등을 알고있어야 한다.

관련 클래스

  • CommonAuth: SMTP 서버에 대한 정보를 갖고 있는 클래스이다.
  • MailVo: 하나의 메일에 대한 수신자, 발신자, 제목, 내용 등의 데이터를 담고 있는 클래스이다. 내부 static 클래스 Builder를 통해 생성할 수 있다.
  • MailUtil: CommonAuth와 MailVo를 이용하여 직접 메일을 발신하는 기능을 하는 유틸 클래스이다.

dependency

<dependency>
  <groupId>net.lotte.chamomile.module</groupId>
  <artifactId>chamomile-notification</artifactId>
  <version>3.0.0-SNAPSHOT</version>
</dependency>

사용법

[설정]

SMTP서버 정보를 application.properties(또는 application.yml)파일에 입력하면 CommonAuth bean과 MailUtil bean이 자동으로 생성된다.

chmm.email.smtp.address=111.222.333.444
chmm.email.smtp.port=1234
chmm.email.smtp.id=lotte
chmm.email.smtp.pw=1234

직접 bean을 생성하고 싶다면 다음과 같이 생성하면 된다.

@Configuration
public class MailConfig {

  @Bean
  public CommonAuth commonAuth() {
    return new CommonAuth(smtpAddress, smtpPort, smtpId, smtpPw);
  }

  @Bean
  public MailUtil mailUtil() {
    return new MailUtil(commonAuth(), false);
  }

}

[예제]

MailUtil bean을 이용해 메일을 발신한다.

@RequiredArgsConstructor
public class TestEmailController {

    private final CommonAuth commonAuth;
    private final MailUtil mailUtil;

    @GetMapping("/email")
    public void emailTest() throws EmailException, IOException {
        String msg = "<html><body><h1>This is Email Test</h1></body></html>"
        MailVo mailVo = new MailVo.MailVoBuilder()
                .setFrom("test@test.com")
                .setHtmlMsg(msg)
                .setSubject("제목")
                .addTo("test@test.com")
                .build();

        mailUtil.send(new MailVo[] {mailVo});
    }
}
  • 위와 같이 String에 html 형식의 문자열을 담는 방식이 불편하다면 다음과 같이 하면 된다.
    • resources 폴더 하위에 email 폴더 생성 후, html 파일 생성
      alt text
    • html 파일

      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <title></title>
      </head>
      <body>
      <h1>이메일 테스트 템플릿입니다.</h1>
      <img src="https://chamomile.lotteinnovate.com/storage/2022/06/cropped-chamomile-1-1.png" />
      </body>
      </html>
   ...
   MailVo mailVo = new MailVo.MailVoBuilder()
            .setFrom("test@test")
            .setTemplate("test.html")
            .setSubject("제목")
            .addTo("test@test")
            .build();
  mailUtil.send(new MailVo[] {mailVo});
  ...

빌더를 통해 만들어지는 MailVo 구조는 아래와 같다.

필드명 메소드 설명
from setFrom 발신자지정
cc addCc(String[] cc) 참조자 추가
addCc(String cc) 참조자 추가
subCc(String cc) 참조자 삭제
bcc addBcc(String[] bcc) 숨은참조자 추가
addBcc(String bcc) 숨은참조자 추가
subBcc(String bcc) 숨은참조자 삭제
to addTo(String[] to) 수신자 추가
addTo(String to) 수신자 추가
subTo(String to) 수신자 삭제
subject setSubject(String subject) 제목 입력
msg setMsg(String msg) 메시지 입력
charset setCharset(STring charset) 인코딩 정보 입력(기본UTF-8)
attachPath addAttachPath(String path) 첨부파일경로 추가
subAttachPath(String path) 첨부파일경로 삭제
attachName addAttachName(String name) 첨부파일명 추가
subAttachName(String name) 첨부파일 경로 삭제
isAttach 자동 입력
htmlMsg setHtmlMsg(String htmlMsg) html 메시지 입력
template setTemplate html 파일명(확장자 포함) 입력
이전 UI어댑터
다음 FTP