EmailUtil.java
의 메서드 sendMail()
을 보면 메서드가 오버로딩 되어있는 것을 볼 수 있다. 왜 그런 것일까?
회원이 클릭할 수 있는 링크가 담긴 이메일을 받기 위해서는 이메일 본문을 HTML
태그 형식으로 보내야 한다. 그렇게 하기 위해서는 우선 MimeMessageHelper
의 setText
메서드를 살펴봐야 한다.
public void setText(String text) throws MessagingException {
setText(text, false);
}
/**
* Set the given text directly as content in non-multipart mode
* or as default body part in multipart mode.
* The "html" flag determines the content type to apply.
* <p><b>NOTE:</b> Invoke {@link #addInline} <i>after</i> {@code setText};
* else, mail readers might not be able to resolve inline references correctly.
* @param text the text for the message
* @param html whether to apply content type "text/html" for an
* HTML mail, using default content type ("text/plain") else
* @throws MessagingException in case of errors
*/
public void setText(String text, boolean html) throws MessagingException {
// ...
}
주석을 보면 @param html
에 대한 설명이 있는데 요약하면 다음과 같다.
content type "text/html"
⭢ html
의 값 true
content type "text/plain"
⭢ html
의 값 false
실제로도 매개 변수가 하나만 있는 setText(String text)
를 사용하면 "text/plain"
형식으로 html
본문이 구성된다. 이때, setText(String text)
안에는 setText(String text, boolean html)
가 있는 것을 확인할 수 있다. 이와 같이, 어떤 메서드의 파라미터를 기본값으로 지정("text/plain"
)해주고 싶을 때와 아닌 경우를 구별할 때 이러한 메서드 오버로딩 방식이 많이 사용된다.