==== MailManager.java ====
package ecg.util;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailManager
{
// 첨부될 실제 파일명이 저장된 리스트.
List<String> realFileNameList = new ArrayList<String>();
private static MailManager singleton;
private MailManager(){}
/**
* 싱글톤 객체 생성
*
* @return 없음
*/
public static MailManager getInstance()
{
if(singleton == null)
{
singleton = new MailManager();
}
return singleton;
}
public void doMailSendSimple(Map<String, String> mailDataMap) throws Exception
{
String receiver = mailDataMap.get("email");
String sender = "admin@ip-navi.or.kr";
String subject = mailDataMap.get("subject");
String contentsGubun = mailDataMap.get("contentsGubun");
// 메일을 보낼 SMTP서버와 프로그램이름 설정
String mailhost = "203.2xx,xxx,xxx";
String mailer = "JSP Mail";
String contents = this.makeMailContents(mailDataMap, contentsGubun); // 메일 컨텐츠 생성.
//contents = new String(contents.getBytes(),"EUC-KR");
try{
Properties props = System.getProperties();
props.put("mail.smtp.host", mailhost);
Session session = Session.getDefaultInstance(props, null);
// 메일을 보낼 Message클래스를 생성한다.
Message msg = new MimeMessage(session);
// 메일 구성요소 설정
msg.setFrom(new InternetAddress(sender,"IP 내비게이션","EUC-KR")); // 발신인의 이름을 한글로 표시할 수 있다.
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(receiver, false));
msg.setSubject(subject);
msg.setContent(contents, "text/html; charset=EUC-KR");
msg.setSentDate(new Date());
msg.setText(contents);
msg.setHeader("Content-Type", "text/html; charset=EUC-KR");
msg.setHeader("X-Mailer", mailer);
// 메일 전송
Transport.send(msg);
}catch(MessagingException e){
System.out.println("이메일 발송 에러!!");
}catch(Exception ex){
System.out.println("에러!!");
}
}
private String makeMailContents(Map<String,String> mailData, String contentsGubun)
{
String mailContents = "";
if(contentsGubun.equals("tempPasswd"))
{
mailContents = this.makeMailContentsTempPasswd(mailData);
}
return mailContents;
}
private String makeMailContentsTempPasswd(Map<String,String> mailData)
{
StringBuilder builder = new StringBuilder();
builder.append("<h2>수출기업 지재권분쟁 지원시스템 IP Navigation</h2>").append("<br/><br/><br/>")
.append("<span style='color: blue; font-weight:bold;'>").append(mailData.get("name")).append("</span>").append("님의 임시 비밀번호를 아래와 같이 알려드리오니<br/>")
.append("임시 비밀번호를 이용하여 로그인 하신후 새로운 비밀번호로 바꾸어 주시기 바랍니다.<br/><br/>")
.append("임시비밀번호: ").append("<span style='color: blue; font-weight:bold;'>").append(mailData.get("tempPasswd")).append("</span>").append("<br/>")
.append("패스워드 변경 URL: <a href='http://www.ip-navi.or.kr' target='_blank'>http://www.ip-navi.or.kr</a>").append("<br/>");
return builder.toString();
}
}
--> 운영서버가 UTF-8 기반이라서 UTF-8로 인코딩을 하였으니, 메일 컨텐츠부분의 한글이 깨졌다. getBytes() 메서드를 사용하여 인코딩을 한후에도 여전히 깨져서 결국 모든 캐릭터셋을 EUC-KR로 바꾸고 나니, html 컨텐츠에 meta태그의 캐릭터셋을 굳이 지정하지 않아도 정상적으로 한글이 표시가 되었다.