String mailProtocol = "smtp";
String mailHost = "smtp.gmail.com";
String mailPort = "587";
String mailId = "abc@gmail.com"; // 구글계정
String mailPassword = "abc"; // 구글계정 비밀번호
String fromName = "보내는사람이름";
String fromEmail = "abc@gmail.com"; // 보내는 사람 메일
String toName = "받는사람이름";
String toEmail = "abc@daum.net"; // 받는사람메일
String mailTitle = "메일 타이틀입니다.";
String mailContents = "메일 내용입니다.";
String debugMode = "false";
String authMode = "true";
try {
boolean debug = Boolean.valueOf(debugMode).booleanValue();
Properties mailProps = new Properties();
mailProps.put("mail.smtp.starttls.enable", "true");
mailProps.setProperty("mail.transport.protocol", mailProtocol);
mailProps.put("mail.debug", debugMode);
mailProps.put("mail.smtp.host", mailHost);
mailProps.put("mail.smtp.port", mailPort);
mailProps.put("mail.smtp.connectiontimeout", "5000");
mailProps.put("mail.smtp.timeout", "5000");
mailProps.put("mail.smtp.auth", authMode);
Session msgSession = null;
if(authMode.equals("true")) {
Authenticator auth = new MyAuthentication(mailId, mailPassword);
msgSession = Session.getInstance(mailProps, auth);
} else {
msgSession = Session.getInstance(mailProps, null);
}
msgSession.setDebug(debug);
MimeMessage msg = new MimeMessage(msgSession);
msg.setFrom(new InternetAddress(fromEmail, fromName));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail, toName));
msg.setSubject(mailTitle);
msg.setContent(mailContents, "text/html; charset=euc-kr");
// 스태틱함수로 직접 보내지 않고 객체를 이용해서 보내고 객체를 닫아준다.
Transport t = msgSession.getTransport(mailProtocol);
try {
t.connect();
t.sendMessage(msg, msg.getAllRecipients());
} finally {
t.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
위 소스로 메일 발송시
hanmail, daum 메일만 메일제목에 _(언더바)가 나오는 현상이 발생했다.
원인은
msg.setSubject(mailTitle);
의 설정에서 좀더 엄격하게 해 주어야 하는데 그걸 한메일 서버가 인식을 제대로 못하는거 같다.
소스를 아래와 같이 수정하니 정상적으로 발송됐다.
msg.setSubject( MimeUtility.encodeText( mailTitle, "utf-8", "B" ) );
'Java' 카테고리의 다른 글
jstl <c:url value=""> 사용시 ;jsessionid= 붙는 현상 (0) | 2018.03.06 |
---|---|
자바 파일다운로드 & 한글,특수문자 깨짐 방지 (1) | 2018.02.26 |
전자정부 프레임워크 3.7 버전에서 오류 메세지 (0) | 2018.02.20 |
mybatis foreach 구문 list 안에 map이 있는 경우 (0) | 2018.01.24 |
java, jsp 날짜 찍어보기 (0) | 2017.10.16 |