본문 바로가기

web

jsp로 이메일 보내는 처리

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