บทความนี้แนะนำแอปพลิเคชัน Javamail ตามเฟรมเวิร์ก SSM (Spring 4.0 + SpringMVC + MyBatis) หากอีเมลขึ้นอยู่กับกล่องจดหมาย QQ ของ Tencent จริง ๆ แล้วเป็นกล่องจดหมาย Foxmail
ก่อนอื่นเราต้องเข้าใจโปรโตคอล SMTP และการเข้ารหัส SSL
SMTP: เรียกว่า Simple Mail Transfer Protocal เป้าหมายคือให้ผู้ใช้มีการส่งจดหมายที่มีประสิทธิภาพและเชื่อถือได้ SMTP เป็นโปรโตคอลสำหรับการตอบสนองการร้องขอนั่นคือไคลเอนต์ส่งคำขอไปยังเซิร์ฟเวอร์ระยะไกล เซิร์ฟเวอร์ตอบสนองและรับฟังพอร์ต 25 ดังนั้นโหมดการทำงานจึงเป็นสอง: การส่ง SMTP และรับ SMTP
การเข้ารหัส SSL: ใช้เพื่อความปลอดภัยของเบราว์เซอร์และเซิร์ฟเวอร์เว็บไซต์ หลักการถูกอธิบายในการแปล:
เมื่อเบราว์เซอร์ของคุณร้องขอหน้าเว็บที่ปลอดภัยจากเซิร์ฟเวอร์ (โดยปกติจะเป็น https: //)
เซิร์ฟเวอร์ส่งใบรับรองและคีย์สาธารณะกลับมา
เบราว์เซอร์ตรวจสอบว่าใบรับรองออกโดยสถาบันที่เชื่อถือได้ยืนยันว่าใบรับรองนั้นถูกต้องหรือไม่และใบรับรองนี้มีไว้สำหรับเว็บไซต์นี้
คีย์แบบสมมาตรแบบสุ่มถูกเข้ารหัสโดยใช้คีย์สาธารณะซึ่งรวมถึง URL ที่เข้ารหัสเพื่อส่งไปยังเซิร์ฟเวอร์ด้วยกัน
เซิร์ฟเวอร์ถอดรหัสคีย์ที่คุณส่งด้วยคีย์ส่วนตัวของตัวเอง จากนั้นใช้คีย์การเข้ารหัสแบบสมมาตรนี้เพื่อถอดรหัส URL ที่คุณร้องขอ
เซิร์ฟเวอร์ใช้คีย์สมมาตรที่คุณส่งไปเข้ารหัสหน้าเว็บที่คุณร้องขอ คุณสามารถถอดรหัสหน้าเว็บที่คุณส่งกลับมาพร้อมคีย์เดียวกัน
จากนั้นแนะนำวิธีการใช้อีเมล Javamail ที่ส่งอีเมล ก่อนอื่นคุณต้องดาวน์โหลด Jar of Javamail: http://xiazai.vevb.com/201612/yuanma/mail_jb51.jar
ในการเปิดใช้งานบริการ SMTP บนกล่องจดหมาย QQ ที่ทำหน้าที่เป็นเซิร์ฟเวอร์:
เขียนคลาสธุรกิจเพื่อส่งอีเมล:
แพ็คเกจ com.appms.email; นำเข้า java.util.date; นำเข้า java.util.properties; นำเข้า Javax.mail.address; นำเข้า Javax.mail.message นำเข้า Javax.mail.session; นำเข้า Javax.mail.transport; com.sun.mail.util.mailsslsocketFactory; คลาสสาธารณะ Javaemailsender {โมฆะสาธารณะคงที่ sendemail (สตริง toemailaddress, สตริง emailtitle, สตริงอีเมล // เปิดใช้งาน debug debugging props.setProperty ("mail.debug", "true"); // เซิร์ฟเวอร์การส่งต้องใช้ props.setProperty ("mail.smtp.auth", "true"); // ตั้งค่าชื่อโฮสต์ Mail Server Props.SetProperty ("Mail.host", "smtp.qq.com"); // ชื่อโปรโตคอลการส่งอีเมล props.setProperty ("mail.transport.protocol", "smtp"); / ** การตรวจสอบสิทธิ์ SSL โปรดทราบว่า Tencent Mailbox นั้นใช้การเข้ารหัส SSL และสิ่งที่คุณต้องใช้ในการใช้งาน **/ mailsslsocketFactory SF = new MailsSlSocketFactory (); SF.SetTrustAllHosts (จริง); props.put ("mail.smtp.ssl.enable", "true"); props.put ("mail.smtp.ssl.socketfactory", sf); // สร้างเซสชันเซสชัน = session.getInstance (อุปกรณ์ประกอบฉาก); // ส่งข้อความออกแบบตามข้อความโหมดผู้สังเกตการณ์ MSG = ใหม่ mimeMessage (เซสชัน); msg.setsubject (emailtitle); // ใช้ stringbuilder เนื่องจาก StringBuilder โหลดเร็วกว่าสตริงและยังเป็นเธรดที่ปลอดภัยมาก StringBuilder builder = new StringBuilder (); builder.append ("/n"+emailcontent); builder.append ("/n time" + วันที่ใหม่ ()); msg.settext (builder.toString ()); msg.setFrom (InternetAddress ใหม่ ("กล่องจดหมาย QQ ของคุณ")); Transport Transport = session.getTransport (); Transport.connect ("smtp.qq.com", "กล่องจดหมาย QQ ของคุณ", "รหัสผ่านอิสระสำหรับคุณในการเปิดใช้งานบริการ SMTP"); // ส่งข้อความ transport.sendMessage (msg, ที่อยู่ใหม่ [] {ใหม่ InternetAddress (toemailaddress)}); Transport.close (); -จากนั้นเขียนคลาสคอนโทรลเลอร์สำหรับ Framework SpringMVC:
/** * ข้ามไปส่งหน้าอีเมล * @return * @throws Exception */@requestmapping ("/gosendemail") โมเดลสาธารณะและวิววิว Gosendemail (httpservletrequest คำขอ) โยนข้อยกเว้น {modelandview mv = this.getModelandView (); string email = request.getParameter ("อีเมล"); ถ้า (อีเมล! = null &&! "". เท่ากับ (อีเมล)) {email = email.trim (); mv.setViewName ("member/send_email"); mv.addobject ("อีเมล", อีเมล); } return mv; }/** * ส่งอีเมล * @return * @throws Exception */@requestmapping (value = "/sendemail", ผลิต = "แอปพลิเคชัน/json; charset = utf-8") @ResponseBody วัตถุสาธารณะ sendemail (httpservletRequest) สตริง msg = "ตกลง"; // ส่งสตริงสถานะ toEmail = request.getParameter ("อีเมล"); // string string mailbox title = request.getParameter ("title"); // ชื่อสตริงชื่อ = request.getParameter ("เนื้อหา"); // เนื้อหา javaemailsender.sendemail (toemail, ชื่อ, เนื้อหา); map.put ("ผลลัพธ์", ผงชูรส); แผนที่กลับ; -ที่นี่เราใช้ปลั๊กอิน 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 asynchronous คำขอ:
<!-ส่งอีเมล-> <script type = "text/javascript"> // ส่งฟังก์ชัน sendem () {ถ้า ($ ("#type"). val () == "1") {$ ("#content"). val (getContentTxt ()); } else {$ ("#content"). val (getContent ()); } if ($ ("#อีเมล"). val () == "") {$ ("#อีเมล") เคล็ดลับ ({side: 3, msg: 'โปรดป้อนอีเมล', bg: '#ae81ff', เวลา: 2}); $ ("#อีเมล"). focus (); กลับเท็จ; } if ($ ("#title"). val () == "") {$ ("#title"). เคล็ดลับ ({side: 3, msg: 'โปรดป้อนชื่อ', bg: '#ae81ff', เวลา: 2}); $ ("#title"). focus (); กลับเท็จ; } if ($ ("#content"). val () == "") {$ ("#nr"). เคล็ดลับ ({side: 1, msg: 'โปรดป้อนเนื้อหา', bg: '#ae81ff', เวลา: 3}); กลับเท็จ; } var email = $ ("#อีเมล"). val (); var type = $ ("#type"). val (); ชื่อ var = $ ("#title"). val (); var content = $ ("#content"). val (); $ ("#zhongxin"). ซ่อน (); $ ("#zhongxin2"). show (); $ .ajax ({type: "post", url: 'retroaction/sendemail.do? tm ='+วันที่ใหม่ (). getTime (), ข้อมูล: {อีเมล: อีเมล, ชื่อเรื่อง: ชื่อ, เนื้อหา: เนื้อหา}, ข้อมูลประเภท: 'json', // beforesend $ ("#msg"). เคล็ดลับ ({side: 3, msg: 'ส่งสำเร็จ!', bg: '#68b500', เวลา: 5}); }});} </script>โทรไปยังหน้า JSP:
<!-แก้ไขอีเมล-> <div> <table> <tr> <td style = "margin-top: 0px;"> <div style = "float: left;"> <textarea name = "อีเมล" id = "อีเมล" rows = "1" cols = "50" Semicolons "> $ {email} </textarea> </div> <div style =" float: ขวา; "> <a class = 'btn btn-mini btn-info' onclick =" dialog_open () <tr = td> <td> <td> </ id = "title" value = "" placeholder = "โปรดเลือกอินพุตอีเมลชื่อ"/> </td> </tr> <td id = "nr"> <สคริปต์ id = "editor" type = "ข้อความ/ธรรมดา"> </script> onclick = "top.dialog.close ();"> ยกเลิก </a> </td> </tr> </table> </div> <div id = "zhongxin2" style = "แสดง: ไม่มี"> <br/> <img src = "assets/images/jzx.gif" id = 'msg'ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น