1. pom.xml javax.mail과 관련한 Dendency 추가
<!-- 이메일 --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${org.springframework-version}</version> </dependency> |
2. configuration file 제작
servlet-context.xml에 email property와 관련된 bean 내용 추가.
<beans:bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <beans:property name="host" value="smtp.gmail.com" /> // 어떤 서버를 사용할 건가 .메일 서버 설정 <beans:property name="port" value="587" /><!-- 465 or 25 --> // Port: 구글메일에서는 587 포트를 제공함. 우리가 설정하는게 아님 <beans:property name="username" value="Google id" /> <beans:property name="password" value="Google Password" /> <beans:property name="defaultEncoding" value="utf-8" /> <beans:property name="javaMailProperties"> <beans:props> <beans:prop key="mail.transport.protocol">smtp</beans:prop> <beans:prop key="mail.smtp.auth">true</beans:prop> <beans:prop key="mail.smtp.starttls.enable">true</beans:prop> <beans:prop key="mail.debug">true</beans:prop> <beans:prop key="mail.smtp.ssl.trust">smtp.gmail.com</beans:prop> <beans:prop key="mail.smtp.ssl.protocols">TLSv1.2</beans:prop> </beans:props> </beans:property> </beans:bean> |
+)
2월 14, 2022 7:58:37 오후 org.apache.catalina.core.ApplicationContext log
SEVERE: 서블릿 [appServlet]을(를) 위한 Servlet.init() 호출이 예외를 발생시켰습니다.
java.lang.IllegalStateException: CGLIB is required to process @Configuration classes. Either add CGLIB to the classpath or remove the following @Configuration bean definitions: [emailConfig]
에러의 경우...
<!-- cglib dependency --> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> |
와 같이 cglib 추가하면 된다...!
3. 이메일 보내는 Controller 예시 (이미 내용이 있음)
/* 메일 보내기에 대한 예시 */ @RequestMapping("/mail/test/send") public String sendMail() { // 메일 내용 설정 SimpleMailMessage message = new SimpleMailMessage(); message.setTo("dangsunm@gmail.com"); // 수신자 설정 message.setSubject("[광고]메일 제목ㅇㅇㅇ 단돈 10원 특가세일!"); // 메일 제목 설정 message.setText("이것은 메일 내용이래"); // 메일 내용 설정 message.setFrom("youngjin.ko@youngjinko.me"); // 발신자 설정 sender.send(message); return "send OK"; } /* 자바 메일에 보내기에 대한 예시 */ @ResponseBody @RequestMapping("/mail/test/send2") public String sendJavaMailSender(){ MimeMessage message = javaMailSender.createMimeMessage(); try { // 메일 제목설정 message.setSubject("처음보내는 JavaMailSender", "UTF-8"); // html 메일 내용 String htmlStr = "<h1 style=\"color:blue\">안냥안냥</h1><br>" + "<a href=\"http://www/naver/com\">네이버</a>"; // 내용 설정 message.setText(htmlStr, "UTF-8", "html"); // To 설정 message.addRecipient(RecipientType.TO, new InternetAddress("dangsunm@gmail.com", "포크", "UTF-8")); javaMailSender.send(message); } catch (MessagingException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return "send OK"; } |
4. Html session request 내용을 받아와서 전송을 하는 방법 (JavaMailSender도 유사한 방법으로 보내면 된다)
@RequestMapping(value = "/mail/send_ok", method = {RequestMethod.GET, RequestMethod.POST}) public ModelAndView EmailSendOk(HttpServletRequest request, HttpServletResponse response) { ModelAndView mv = new ModelAndView("redirect:/main"); String from_email = request.getParameter("from_email"); String send_from_email = "youngjin.ko@youngjinko.me"; String to_email = "youngjin.ko@youngjinko.me"; String from_name = request.getParameter("from_name"); String email_title = "Email From "+from_name+": "+request.getParameter("from_title"); String email_contents = request.getParameter("from_contents"); SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to_email); // 수신자 설정 message.setSubject(email_title); // 메일 제목 설정 message.setText(email_contents); // 메일 내용 설정 message.setFrom(send_from_email); // 발신자 설정 message.setReplyTo(from_email); // 발신자 설정(Reply to) System.out.println(message); sender.send(message); return mv; } |
'web' 카테고리의 다른 글
http.csrf() 부분적으로 Disable 하기 (0) | 2023.05.11 |
---|---|
Async 처리 (0) | 2023.04.01 |
summernote 활용하여 게시판 에디터 추가 (0) | 2022.03.06 |
jsp 파일 보내기 (0) | 2022.02.28 |