-

회원가입 시와 제품 구매 시에 안내 메일 발송 기능을 맡았다.
이전 미니 프로젝트에서 다른 팀이 메일로 인증번호를 주고 받는 걸 봤던지라 꼭 해보고 싶었다.
먼저 mail.jar를 받아야 한다.
https://mvnrepository.com/artifact/javax.mail/mail
lib폴더에 jar파일을 넣어준 후, gmail 전송에 사용할 구글 계정에 들어가 '로그인 및 보안 설정'을 들어간다.
보안 수준이 낮은 앱 허용을 해주어야 메일 전송이 된다.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121public class MailSend {public void enrollMailSend(Member member) {Properties prop = System.getProperties();String memberId = member.getMemberId();String memberEmail = member.getMemberEmail();prop.put("mail.transport.protocol", "smtp");prop.put("mail.smtp.starttls.enable", "true");prop.put("mail.smtp.host", "smtp.gmail.com");prop.put("mail.smtp.auth", "true");prop.put("mail.smtp.port", "587");Authenticator auth = new MailAuth();Session session = Session.getDefaultInstance(prop, auth);MimeMessage msg = new MimeMessage(session);//메일 출력 텍스트StringBuffer sb = new StringBuffer();sb.append("<h3>" + memberId + "님 안녕하세요</h3>");sb.append("<span>회원가입을 축하합니다.</span><br>");sb.append("<span><strong>"+ memberId+"</strong>님께서 Elefont에서 딱 맞는 폰트를 찾으시길 바랍니다.</span><br>");sb.append("<span>감사의 의미로 회원가입 <strong>200p</strong>가 증정되었습니다.</span><br>");sb.append("<span>앞으로도 많은 이용 부탁 드립니다.</span><br>");sb.append("<h4>감사합니다.</h4>");String html = sb.toString();try {msg.setSentDate(new Date());new MailAuth();msg.setFrom(new InternetAddress(MailAuth.MAILID, "Elefont"));InternetAddress to = new InternetAddress(memberEmail);msg.setRecipient(Message.RecipientType.TO, to);msg.setSubject( memberId + "님, Elefont 회원가입을 축하드립니다.");msg.setText(html, "UTF-8", "html");Transport.send(msg);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void purchaseMailSend(List<Order> orderList, List<String> attachList) {Properties prop = System.getProperties();OrderExt order = (OrderExt) orderList.get(0);String memberId = order.getMemberId();String memberEmail = order.getMemberEmail();List<String> fontNames = new ArrayList<>();for(Order _oe : orderList) {OrderExt oe = (OrderExt) _oe;fontNames.add(oe.getFontName());};prop.put("mail.transport.protocol", "smtp");prop.put("mail.smtp.starttls.enable", "true");prop.put("mail.smtp.host", "smtp.gmail.com");prop.put("mail.smtp.auth", "true");prop.put("mail.smtp.port", "587");Authenticator auth = new MailAuth();Session session = Session.getDefaultInstance(prop, auth);MimeMessage msg = new MimeMessage(session);//메일 출력 텍스트StringBuffer sb = new StringBuffer();sb.append("<h3>" + memberId + "님 안녕하세요</h3>");sb.append("<span>Elefont를 이용해 주셔서 감사합니다.</span><br>");sb.append("<span><strong>"+ memberId+"</strong>님께서 구매하신 폰트는 다음과 같습니다.</span><br>");sb.append("<h4>"+ fontNames.toString() +"</h4>");sb.append("<span>앞으로도 많은 이용 부탁 드립니다.</span><br>");sb.append("<h4>감사합니다.</h4>");String html = sb.toString();try {msg.setSentDate(new Date());new MailAuth();msg.setFrom(new InternetAddress(MailAuth.MAILID, "Elefont"));InternetAddress to = new InternetAddress(order.getMemberEmail());msg.setRecipient(Message.RecipientType.TO, to);Multipart multipart = new MimeMultipart();MimeBodyPart mTextPart = new MimeBodyPart();MimeBodyPart mFilePart = new MimeBodyPart();msg.setSubject( memberId + "님, 구매해 주셔서 감사합니다.");mTextPart.setText(html, "UTF-8", "html");multipart.addBodyPart(mTextPart);//보낼 첨부파일이 여러개일 경우if(attachList.size() > 1) {for(int i = 0; i < attachList.size(); i++) {FileDataSource fds = new FileDataSource(attachList.get(i));mFilePart.setDataHandler(new DataHandler(fds));mFilePart.setFileName(fds.getName());multipart.addBodyPart(mFilePart);}}else {FileDataSource fds = new FileDataSource(attachList.get(0));mFilePart.setDataHandler(new DataHandler(fds));mFilePart.setFileName(fds.getName());multipart.addBodyPart(mFilePart);}msg.setContent(multipart);Transport.send(msg);} catch (Exception e) {e.printStackTrace();}}cs prop.put("mail.smtp.starttls.enable", "true"); 로그인시 TLS를 사용할 것인지 설정prop.put("mail.smtp.host", "smtp.gmail.com"); 이메일 발송을 처리해줄 SMTP서버
prop.put("mail.smtp.auth", "true"); SMTP 서버의 인증을 사용
prop.put("mail.smtp.port", "587"); TLS의 포트번호메일 내용의 경우 동기화를 지원하는 StringBuffer를 사용해 작업이 침범당하지 않도록 했다.
'도움닫기 중입니다' 카테고리의 다른 글
Java로 쇼핑몰 좋아요 기능 구현하기 (0) 2022.02.10 아임포트(iamport) API로 결제부터 취소까지 (0) 2022.01.25 썸머노트(summernote) 이미지 경로 설정 및 이미지 삭제 (0) 2022.01.22 댓글