이번 글은 실무에서 JavaMailSender 클래스를 사용하여 메일 내용을 text/html로 보내고자 하였으나, text/plain으로 전송되던 문제를 해결하였던 경험을 공유하고자 하는 목적에서 작성되었습니다.

정확히는 메일 전송시 Content-Type이 text/html로 바뀌지 않는 문제가 있었고, 여러가지 방법을 사용 해본 결과  text/html로 잘 변형되었던 예제 코드를 찾을수 있게 되어 공유하게 되었습니다.

import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.internet.MimeMessage;

@Slf4j
@Service
@AllArgsConstructor
public class EmailUtil {
	private final JavaMailSender javaMailSender;
    
    /**
     * html 내용 메일
     * @param mailDto
     */
    public void sendMailHtml(EmailDto mailDto) throws Exception {
        MimeMessage mimeMessage = javaMailSender.createMimeMessage();

        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage,true,"UTF-8");

        mimeMessageHelper.setTo(mailDto.getToAddress()); //받는사람
        mimeMessageHelper.setFrom(mailDto.getFromAddress()); //보내는사람
        mimeMessageHelper.setSubject(mailDto.getTitle()); // 제목
        mimeMessageHelper.setText(mailDto.getContent(),true); // 내용

        javaMailSender.send(mimeMessage);
    }
}

위 소스처럼 MimeMessage 를 생성하여 MimeMessageHelper의 생성자로 생성해줍니다.

mimMessageHelper에 mimMessage에 세팅할 값들을 설정해준 후, mimeMessage를 변수로 메일을 전송해줍니다.

위 방식을 적용하였을때  text/plain으로 전송되던 이메일이 text/html로 전송되던 것을 확인할 수 있었습니다.

같은 문제를 고민하는 분들이 이 글을 보고 원활히 해결했으면 하는 바람에서 간단하게 글을 작성해보았습니다.

궁금한점이 있으시다면 댓글로 남겨주시면 감사하겠습니다.

+ Recent posts