package itn.let.uat.uia.web; import java.io.File; import java.time.LocalDateTime; import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import org.apache.commons.lang3.StringUtils; import org.springframework.http.HttpStatus; import itn.let.mail.service.StatusResponse; /*import itn.let.uat.uia.web.EmailVO; import itn.let.uat.uia.web.SMTPAuthenticator;*/ public class SendMail { public void sendMail(EmailVO vo) throws Exception { try { Properties props = new Properties(); /* * props.put("mail.transport.protocol", "smtp");// 프로토콜 설정 * props.put("mail.smtp.host", "smtp.gmail.com");// gmail SMTP 서비스 주소(호스트) * props.put("mail.smtp.port", "465");// gmail SMTP 서비스 포트 설정 * props.put("mail.smtp.starttls.enable","true"); // gmail 인증용 Secure Socket * Layer(SSL) 설정 props.setProperty("mail.smtp.socketFactory.class", * "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true");// * SMTP 인증을 설정 props.put("mail.debug", "true"); // log를 위한 debug 옵션 추가 */ props.put("mail.smtp.auth", "true");// SMTP 인증을 설정 props.put("mail.smtp.starttls.enable", "true"); // props.put("mail.transport.protocol", "smtp");// 프로토콜 설정 props.put("mail.smtp.host", "smtp.gmail.com");// gmail SMTP 서비스 주소(호스트) props.put("mail.smtp.port", "587");// gmail SMTP 서비스 포트 설정 props.put("mail.smtp.ssl.trust", "smtp.gmail.com"); props.put("mail.smtp.ssl.protocols", "TLSv1.2"); // props.put("mail.smtp.debug", "true"); // gmail 인증용 Secure Socket Layer(SSL) 설정 props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); // 인증정보 Authenticator auth = new SMTPAuthenticator(); Session mailSession = Session.getDefaultInstance(props, auth); // MimeMessage mailMessage = mailImpl.createMimeMessage(); MimeMessage message = new MimeMessage(mailSession); InternetAddress from = new InternetAddress(vo.getSend_from()); message.setFrom(from); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(vo.getSend_to())); message.setSubject(vo.getTitle()); message.setContent(vo.getContents(), "text/html;charset=UTF-8"); // message.setText(vo.getContents()); message.setSentDate(new Date()); Transport.send(message); } catch (MessagingException e) { e.printStackTrace(); } } public void sendMail2(EmailVO vo) throws Exception { try { Properties props = new Properties(); /* * props.put("mail.transport.protocol", "smtp");// 프로토콜 설정 * props.put("mail.smtp.host", "smtp.gmail.com");// gmail SMTP 서비스 주소(호스트) * props.put("mail.smtp.port", "465");// gmail SMTP 서비스 포트 설정 * props.put("mail.smtp.starttls.enable","true"); // gmail 인증용 Secure Socket * Layer(SSL) 설정 props.setProperty("mail.smtp.socketFactory.class", * "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true");// * SMTP 인증을 설정 props.put("mail.debug", "true"); // log를 위한 debug 옵션 추가 */ // props.put("mail.smtp.auth", "true");// SMTP 인증을 설정 // props.put("mail.smtp.starttls.enable","true"); // //props.put("mail.transport.protocol", "smtp");// 프로토콜 설정 // props.put("mail.smtp.host", "smtp.worksmobile.com");// gmail SMTP 서비스 주소(호스트) // props.put("mail.smtp.port", "587");// gmail SMTP 서비스 포트 설정 // /*props.put("mail.smtp.ssl.trust","smtp.gmail.com"); // props.put("mail.smtp.ssl.protocols", "TLSv1.2");*/ // props.put("mail.smtp.starttls.enable","true"); // props.put("mail.smtp.debug", "true"); // gmail 인증용 Secure Socket Layer(SSL) 설정 // props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); // worksmobile 계정 설정 props.put("mail.smtp.host", "smtp.worksmobile.com"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.trust", "smtp.worksmobile.com"); props.put("mail.smtp.ssl.protocols", "TLSv1.2"); // props.put("mail.smtp.debug", "true"); // 인증정보 Authenticator auth = new SMTPAuthenticator(); Session mailSession = Session.getDefaultInstance(props, auth); /* * Session mailSession = Session.getInstance(props, new * javax.mail.Authenticator() { protected PasswordAuthentication * getPasswordAuthentication() { return new * PasswordAuthentication("noreply@munjaon.co.kr", "easytour7!"); } }); */ // mailSession.setDebug(true); // MimeMessage mailMessage = mailImpl.createMimeMessage(); MimeMessage message = new MimeMessage(mailSession); InternetAddress from = new InternetAddress(vo.getSend_from()); message.setFrom(from); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(vo.getSend_to())); message.setSubject(vo.getTitle()); message.setContent(vo.getContents(), "text/html;charset=UTF-8"); // message.setText(vo.getContents()); message.setSentDate(new Date()); Transport.send(message); } catch (MessagingException e) { e.printStackTrace(); } } // public SuccessResponse itnSendMail(EmailVO vo) throws Exception { public void itnSendMail(EmailVO vo) throws Exception { Properties props = new Properties(); String returnMsg = "지원해 주셔서 감사합니다."; HttpStatus status = HttpStatus.OK; // worksmobile 계정 설정 props.put("mail.smtp.host", "smtp.worksmobile.com"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.port", "465"); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.trust", "smtp.worksmobile.com"); props.put("mail.smtp.ssl.protocols", "TLSv1.2"); // props.put("mail.smtp.debug", "true"); // 인증정보 Authenticator auth = new SMTPAuthenticator(); Session mailSession = Session.getDefaultInstance(props, auth); Multipart mp = new MimeMultipart(); // 파일 영역 if(StringUtils.isNotEmpty(vo.getAtch_file_name())) { System.out.println(" IN vo.getAtch_file_name() :: "+vo.getAtch_file_name()); MimeBodyPart mailFile = new MimeBodyPart(); FileDataSource fds = new FileDataSource(new File(vo.getAtch_file_path()).getAbsolutePath()); mailFile.setDataHandler(new DataHandler(fds)); mailFile.setFileName(MimeUtility.encodeText(vo.getAtch_file_name(), "euc-kr","B")); mp.addBodyPart(mailFile); } //메일 영역 MimeBodyPart mailInfo = new MimeBodyPart(); mailInfo.setContent(vo.getContents(), "text/html; charset=UTF-8"); mp.addBodyPart(mailInfo); // mailSession.setDebug(true); MimeMessage message = new MimeMessage(mailSession); message.setFrom(new InternetAddress(vo.getSend_from())); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(vo.getSend_to())); message.setSubject(vo.getTitle()); message.setContent(vo.getContents(), "text/html;charset=UTF-8"); message.setSentDate(new Date()); message.setContent(mp); Transport.send(message); // return new SuccessResponse(status, returnMsg, LocalDateTime.now()); } }