이번 글은 실무에서 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로 전송되던 것을 확인할 수 있었습니다.
같은 문제를 고민하는 분들이 이 글을 보고 원활히 해결했으면 하는 바람에서 간단하게 글을 작성해보았습니다.
궁금한점이 있으시다면 댓글로 남겨주시면 감사하겠습니다.
'Spring' 카테고리의 다른 글
[Spring] @Transactional 없이 트랜잭션을 보장 받는 방법 - AOP 활용 (4) | 2024.01.03 |
---|---|
[Spring]@Transactional 격리 수준(Isolation Level) 동시성에 대하여 (0) | 2023.09.06 |
[SpringBoot] 메시지 국제화 적용하기 (0) | 2023.08.13 |