SSM 프레임 워 크+자바 메 일 을 기반 으로 메 일 을 보 내 는 코드 인 스 턴 스

SSM 프레임 워 크(Spring 4.0+SpringMVC+Mybatis)를 기반 으로 한 자바 메 일 애플 리 케 이 션 을 소개 합 니 다.메 일 은 텐 센트 기반 의 QQ 메 일 입 니 다.사실은 Foxmail 메 일 입 니 다.
SMTP 프로 토 콜 과 SSL 암호 화 에 대해 알 아 봐 야 겠 어 요.
SMTP:간단 한 메 일 전송 프로 토 콜(Simple Mail Transfer Protocal)이 라 고 하 는데 사용자 에 게 효율 적 이 고 신뢰성 있 는 메 일 전송 을 제공 하 는 것 이 목표 입 니 다.SMTP 는 응답 을 요청 하 는 프로 토 콜 입 니 다.즉,클 라 이언 트 가 원 격 서버 에 요청 을 보 내 고 서버 응답,감청 포트 가 25 이기 때문에 작업 모드 는 두 가지 가 있 습 니 다.SMTP 를 보 내 고 SMTP 를 받 습 니 다.
SSL 암호 화:브 라 우 저 와 사이트 서버 의 안전성 을 보장 하 는 데 사용 되 는데 그 원 리 는 번역문 으로 설명 하면 다음 과 같다.
브 라 우 저가 서버 에 안전 한 웹 페이지 를 요청 할 때(보통 https:/)
서버 에서 인증서 와 숟가락 을 보 내 드 리 겠 습 니 다.
브 라 우 저 에서 인증 서 를 신뢰 할 수 있 는 기구 에서 발급 하 는 지 확인 하고 인증서 가 유효 하고 이 인증서 가 이 사이트 의 것 인지 확인 합 니 다.
암호 화 된 URL 을 포함 하여 서버 에 무 작위 대칭 키 를 암호 화 했 습 니 다.
서버 는 당신 이 보 낸 열 쇠 를 자신의 숟가락 으로 복호화 했다.그리고 이 대칭 암호 화 열 쇠 를 사용 하여 요청 한 URL 링크 를 복호화 합 니 다.
서버 는 당신 이 보 낸 대칭 열쇠 로 요청 한 웹 페이지 를 암호 화 합 니 다.너 도 같은 열 쇠 를 가지 고 있 으 면 보 낸 웹 페이지 를 복호화 할 수 있다.
그리고 자바 메 일 발송 방법 을 소개 합 니 다.먼저 자바 메 일의 jar:http://xiazai.jb51.net/201612/yuanma/mail_jb51.jar를 다운로드 해 야 합 니 다.
서버 역할 을 하 는 QQ 메 일 로 SMTP 서비스 시작:

메 일 을 보 내 는 업무 클래스 를 작성 합 니 다:

package com.appms.email;

import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import com.sun.mail.util.MailSSLSocketFactory;

public class JavaEmailSender {


  public static void sendEmail(String toEmailAddress,String emailTitle,String emailContent)throws Exception{
    Properties props = new Properties();

    //   debug  
    props.setProperty("mail.debug", "true");
    //            
    props.setProperty("mail.smtp.auth", "true");
    //           
    props.setProperty("mail.host", "smtp.qq.com");
    //         
    props.setProperty("mail.transport.protocol", "smtp");

    /**SSL  ,         SSL   ,           **/
    MailSSLSocketFactory sf = new MailSSLSocketFactory();
    sf.setTrustAllHosts(true);
    props.put("mail.smtp.ssl.enable", "true");
    props.put("mail.smtp.ssl.socketFactory", sf);

    //    
    Session session = Session.getInstance(props);

    //     ,            
    Message msg = new MimeMessage(session);
    msg.setSubject(emailTitle);
    //  StringBuilder,  StringBuilder      String ,          
    StringBuilder builder = new StringBuilder();
    builder.append("
"+emailContent); builder.append("
" + new Date()); msg.setText(builder.toString()); msg.setFrom(new InternetAddress(" QQ ")); Transport transport = session.getTransport(); transport.connect("smtp.qq.com", " QQ ", " SMTP "); // transport.sendMessage(msg, new Address[] { new InternetAddress(toEmailAddress) }); transport.close(); } }
그리고 SpringMVC 프레임 워 크 의 Controller 클래스 를 작성 합 니 다.

  /**
   *          
   * @return
   * @throws Exception
   */
  @RequestMapping("/goSendEmail")
  public ModelAndView goSendEmail(HttpServletRequest request)throws Exception{
    ModelAndView mv = this.getModelAndView();
    String email = request.getParameter("email");
    if(email!=null&&!"".equals(email)){
      email = email.trim();
      mv.setViewName("member/send_email");
      mv.addObject("email", email);
    }
    return mv;
  }

  /**
   *     
   * @return
   * @throws Exception
   */
  @RequestMapping(value="/sendEmail",produces="application/json;charset=UTF-8")
  @ResponseBody
  public Object sendEmail(HttpServletRequest request)throws Exception{
    Map<String,String> map = new HashMap<String,String>();
    String msg = "ok";   //    
    String toEMAIL = request.getParameter("EMAIL");         //    
    String TITLE = request.getParameter("TITLE");          //  
    String CONTENT = request.getParameter("CONTENT");        //  
    JavaEmailSender.sendEmail(toEMAIL, TITLE, CONTENT);
    map.put("result", msg);
    return map;
  }

jQuery TIP 플러그 인 을 사용 하여 인증 알림 을 보 여 주 었 기 때문에 해당 Jquery 파일 을 도입 해 야 합 니 다.

<script type="text/javascript" src="source/js/jquery-1.7.2.js"></script>
  <!--   -->
  <script type="text/javascript" src="source/js/jquery.tips.js"></script>
Jquery 폼 인증 과 Ajax 비동기 요청:

<!--      -->
  <script type="text/javascript">
//  
function sendEm(){

  if($("#TYPE").val()=="1"){
    $("#CONTENT").val(getContentTxt());
  }else{
    $("#CONTENT").val(getContent());
  }
  if($("#EMAIL").val()==""){
    $("#EMAIL").tips({
      side:3,
      msg:'     ',
      bg:'#AE81FF',
      time:2
    });
    $("#EMAIL").focus();
    return false;
  }
  if($("#TITLE").val()==""){
    $("#TITLE").tips({
      side:3,
      msg:'     ',
      bg:'#AE81FF',
      time:2
    });
    $("#TITLE").focus();
    return false;
  }
  if($("#CONTENT").val()==""){

    $("#nr").tips({
      side:1,
      msg:'     ',
      bg:'#AE81FF',
      time:3
    });
    return false;
  }

  var EMAIL = $("#EMAIL").val();
  var TYPE = $("#TYPE").val();
  var TITLE = $("#TITLE").val();
  var CONTENT = $("#CONTENT").val();

  $("#zhongxin").hide();
  $("#zhongxin2").show();

  $.ajax({
    type: "POST",
    url: 'retroaction/sendEmail.do?tm='+new Date().getTime(),
    data: {EMAIL:EMAIL,TITLE:TITLE,CONTENT:CONTENT},
    dataType:'json',
    //beforeSend: validateData,
    cache: false,
    success: function(data){
      if("ok" == data.result){
        $("#msg").tips({
            side:3,
            msg:'    !',
            bg:'#68B500',
            time:5
           });
        setTimeout("showdiv()",1000);  
      }else{
        $("#msg").tips({
            side:3,
            msg:'    !',
            bg:'#68B500',
            time:5
           });
      }

    }
  });

}

</script>

JSP 페이지 호출:

<!--      -->
    <div>
    <table style="width:98%;" >
      <tr>
        <td style="margin-top:0px;">
           <div style="float: left;" style="width:81%"><textarea name="EMAIL" id="EMAIL" rows="1" cols="50" style="width:600px;height:20px;" placeholder="        ,    (;)    " title="        ,    (;)    ">${email}</textarea></div>
           <div style="float: right;" style="width:19%"><a class='btn btn-mini btn-info' title="    " onclick="dialog_open();">    </i></a></div>
        </td>
      </tr>
      <tr>
        <td>
           <input type="text" name="TITLE" id="TITLE" value="" placeholder="        " style="width:98%"/>
        </td>
      </tr>
      <tr>
        <td id="nr">
           <script id="editor" type="text/plain" style="width:650px;height:259px;"></script>
        </td>
      </tr>
      <tr>
        <td style="text-align: center;">
          <a class="btn btn-mini btn-primary" onclick="sendEm();">  </a>
          <a class="btn btn-mini btn-danger" onclick="top.Dialog.close();">  </a>
        </td>
      </tr>
    </table>
    </div>
    <div id="zhongxin2" class="center" style="display:none"><br/><img src="assets/images/jzx.gif" id='msg' /><br/><h4 class="lighter block green" id='msg'>    ...</h4></div>    


이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기