이 기사에서는 SSM 프레임 워크 (Spring 4.0 + SpringMVC + Mybatis)를 기반으로 한 Javamail 응용 프로그램을 소개합니다. 이메일이 Tencent의 QQ 사서함을 기반으로하는 경우 실제로 Foxmail 사서함이기도합니다.
먼저 SMTP 프로토콜 및 SSL 암호화를 이해해야합니다.
SMTP : Simple Mail Transfer Protocal이라는 목표는 사용자에게 효율적이고 안정적인 메일 전송을 제공하는 것입니다. SMTP는 요청 응답을위한 프로토콜, 즉 클라이언트가 원격 서버로 요청을 보냅니다. 서버는 포트 25에 응답하고 청취하므로 작업 모드는 SMTP를 보내고 SMTP를 수신합니다.
SSL 암호화 : 브라우저 및 웹 사이트 서버의 보안을 보장하는 데 사용됩니다. 원칙은 번역에 설명되어 있습니다.
브라우저가 서버에서 보안 웹 페이지를 요청할 때 (일반적으로 https : //)
서버는 인증서와 공개 키를 다시 보냅니다
브라우저는 신뢰할 수있는 기관에서 인증서를 발행하는지 확인하고 인증서가 유효 하고이 인증서 가이 웹 사이트에 적합한 지 확인합니다.
임의의 대칭 키는 공개 키를 사용하여 암호화되며, 여기에는 암호화 된 URL이 함께 서버로 함께 전송됩니다.
서버는 자체 개인 키로 보낸 키를 해독합니다. 그런 다음이 대칭 암호화 키를 사용하여 요청한 URL을 해독합니다.
서버는 요청한 웹 페이지를 암호화하기 위해 보낸 대칭 키를 사용합니다. 동일한 키로 다시 보낸 웹 페이지를 해독 할 수 있습니다.
그런 다음 Javamail을 구현하는 방법을 소개하십시오. 먼저 Javamail의 항아리를 다운로드해야합니다 : http://xiazai.vevb.com/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.internetet.internetet.internetet.mects.internetet.meTet.MeTERT.METTERSANT; com.sun.mail.util.mailsslsocketfactory; public class javaemailsender {public static void sendemail (문자열 toemailaddress, 문자열 이메일, 문자열 이메일 content) 예외 {properties propers = new Properties (); // 디버그 디버깅 소품을 활성화합니다. SetProperty ( "mail.debug", "true"); // 보내는 서버에는 인증 소품이 필요합니다. SetProperty ( "mail.smtp.auth", "true"); // 메일 서버 호스트 이름 props.setProperty를 설정합니다 ( "mail.host", "smtp.qq.com"); // 메일 프로토콜 이름 소품을 보내는 SetProperty ( "mail.transport.protocol", "smtp"); / ** SSL 인증, Tencent Mailbox는 SSL 암호화를 기반으로하며 **/ mailsslsocketfactory sf = new MailslSocketFactory (); sf.settrustallhosts (true); props.put ( "mail.smtp.ssl.enable", "true"); props.put ( "mail.smtp.ssl.socketfactory", sf); // 세션 세션 생성 세션 = 세션 .getInstance (props); // 옵저버 모드 메시지를 기반으로 설계된 메시지 보내기 메시지 msg = new Mimemessage (세션); msg.setsubject (emailtitle); // StringBuilder를 사용하십시오. StringBuilder가 String보다 빠르게로드되므로 스레드 안전이기도합니다. StringBuilder Builder = New StringBuilder (); Builder.Append ( "/n"+emailContent); builder.append ( "/n time" + new date ()); msg.settext (builder.tostring ()); msg.setfrom (new InternetAddress ( "QQ 사서함")); 전송 전송 = 세션 .getTransport (); rantial.connect ( "smtp.qq.com", "QQ 사서함", "SMTP 서비스를 활성화하기위한 독립적 인 비밀번호"); // 메시지 전송 전송 .sendMessage (msg, 새 주소 [] {new InternetAddress (ToemailAddress)}); 송신 .close (); }}그런 다음 SpringMVC 프레임 워크 용 컨트롤러 클래스를 작성하십시오.
/** * 전자 메일 페이지를 보내기 위해 점프 * @return * @throws Exception */@requestmapping ( "/gosendemail") public modelandview gosendemail (httpservletrequest request) 예외 {modelandview mv = this.getModelandView (); 문자열 이메일 = request.getParameter ( "이메일"); if (email! = null &&! "". equals (email)) {email = email.trim (); mv.setViewName ( "member/send_email"); mv.addoBject ( "이메일", 이메일); } 반환 mv; }/** * 이메일 보내기 * @return * @throws Exception */@requestmapping (value = "/sendemail", produces = "application/json; charset = utf-8") @ResponseBody public 객체 SendEmail (httpservletRequest 요청) 예외 {map <string, String> map = new hashmap <string> (); 문자열 msg = "ok"; // status string toemail = request.getParameter ( "email")를 보내십시오. // 기타 사서함 문자열 제목 = request.getParameter ( "title"); // 제목 문자열 content = request.getParameter ( "content"); // content javaemailsender.sendemail (Toemail, Title, Content); map.put ( "결과", msg); 리턴 맵; }여기서는 검증 프롬프트에 jQuery 팁 플러그인을 사용하므로 해당 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 비동기 요청 :
<!! } else {$ ( "#content"). val (getContent ()); } if ($ ( "#email"). val () == "") {$ ( "#email"). 팁 ({side : 3, msg : '이메일을 입력하십시오', bg : '#ae81ff', time : 2}); $ ( "#email"). focus (); 거짓을 반환합니다. } if ($ ( "#title"). val () == "") {$ ( "#thit $ ( "#title"). focus (); 거짓을 반환합니다. } if ($ ( "#content"). val () == "")) {$ ( "#nr"). 팁 ({side : 1, msg : '내용을 입력하십시오', bg : '#ae81ff', time : 3}); 거짓을 반환합니다. } 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 : email : email : email : email : email : email : title, title, content}, datatype : 'json', // beforesend : validatata, cache : false, success : function (data) {if "{result. $ ( "#msg") 팁 ({side : 3, msg : '#68b500', 시간 : 5}); });} </script>JSP 페이지에 대한 통화 :
<!-이메일 편집-> <div> <table> <tr> <td style = "margin-top : 0px;"> <div style = "float : 왼쪽;"> <textarea name = "email"id = "email"rows = "1"cols = "50"placeholder = "다른 파티의 이메일 주소를 선택하십시오 (;) 세미 콜론 "> $ {email} </div> </div> </div> <div style ="float : right; "> <a class = 'btn-mini btn-info'onclick ="dialog_open (); "> 이메일 주소 </i> </a> </ddd> <tr> <td> <td> <td> <td> <td> id = "title"value = ""placeholder = "입력 이메일 제목을 선택하십시오"/> </td> </tr> <td id = "nr"> <script id = "editor"type = "text/plain"> </script> </td> </td> <tr> <td style = "text-align : center;"<a onclict = "<a); onclick = "top.dialog.close ();"> 취소 </a> </a> </td> </tr> </table> </div> <div id = "zhongxin2"style = "display : none"> <br/> <img src = "assets/images/zzx.gif"id = 'msg'/> <br> <h4 id = </h 4>위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.