تقدم هذه المقالة تطبيقات Javamail بناءً على إطار SSM (Spring 4.0 + SpringMVC + MyBatis). إذا كان البريد الإلكتروني يعتمد على صندوق بريد Tencent QQ ، فهو في الواقع صندوق بريد Foxmail.
أولاً ، نحتاج إلى فهم بروتوكول SMTP وتشفير SSL
SMTP: يسمى بروتوكال نقل البريد البسيط ، والهدف هو تزويد المستخدمين بنقل بريد فعال وموثوق. SMTP هو بروتوكول لاستجابة الطلب ، أي أن العميل يرسل طلبًا إلى الخادم البعيد. يستجيب الخادم ويستمع إلى المنفذ 25 ، وبالتالي فإن أوضاع العمل الخاصة به هي: إرسال SMTP واستلام SMTP.
تشفير SSL: يستخدم لضمان أمان المتصفحات وخوادم مواقع الويب. تم شرح المبدأ في الترجمة:
عندما يطلب المتصفح صفحة ويب آمنة من الخادم (عادةً ما يكون https: //)
يرسل الخادم شهادته ومفتاحه العام مرة أخرى
يتحقق المتصفح ما إذا كانت الشهادة تصدر من قبل مؤسسة موثوقة ، تؤكد أن الشهادة صالحة وأن هذه الشهادة مخصصة لهذا الموقع.
يتم تشفير مفتاح متماثل عشوائي باستخدام مفتاح عام ، والذي يتضمن عنوان URL المشفر لإرساله إلى الخادم معًا
يقوم الخادم بفك تشفير المفتاح الذي أرسلته بمفتاحه الخاص. ثم استخدم مفتاح التشفير المتماثل هذا لفك تشفير عنوان URL الذي طلبته.
يستخدم الخادم المفتاح المتماثل الذي أرسلته لتشفير صفحة الويب التي طلبتها. يمكنك فك تشفير صفحة الويب التي أرسلتها مع نفس المفتاح
ثم قدم كيفية تنفيذ رسائل البريد الإلكتروني التي ترسل Javamail. أولاً ، تحتاج إلى تنزيل جرة Javamail: http://xiazai.vevb.com/201612/yuanma/mail_jb51.jar
لتمكين خدمة SMTP على صندوق بريد QQ الذي يعمل كخادم:
اكتب درجة الأعمال لإرسال رسائل البريد الإلكتروني:
package com.appms.email ؛ import java.util.date ؛ import java.util.properties ؛ import javax.mail.address ؛ import javax.message ؛ import javax.mail. com.sun.mail.util.mailsslsocketfactory ؛ الفئة العامة javaemailsender {public static void sendemail (String toemailaddress ، string emailtitle ، string emailContent) يلقي الاستثناء {properties props = خصائص جديدة () ؛ // تمكين 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 يعتمد على تشفير SSL ، وكل ما تحتاجه لتمكين استخدام **/ mailsslsocketfactory sf = جديد mailsslsocketfactory () ؛ sf.setTrustAllhosts (صواب) ؛ props.put ("mail.smtp.ssl.enable" ، "true") ؛ props.put ("mail.smtp.ssl.socketfactory" ، sf) ؛ // إنشاء جلسة جلسة = session.getInstance (الدعائم) ؛ // إرسال الرسائل ، المصممة بناءً على رسالة وضع المراقب msg = new mimemessage (الجلسة) ؛ msg.setsubject (البريد الإلكتروني) ؛ // استخدم StringBuilder ، لأن StringBuilder يتم تحميله بشكل أسرع من السلسلة ، كما أنه آمن للغاية. StringBuilder Builder = new StringBuilder () ؛ builder.append ("/n"+emailContent) ؛ builder.append ("/n time" + date ()) ؛ msg.settext (builder.toString ()) ؛ msg.setfrom (New InternetAddress ("صندوق بريد QQ الخاص بك")) ؛ النقل النقل = session.getTransport () ؛ Transport.connect ("smtp.qq.com" ، "صندوق بريد QQ الخاص بك" ، "كلمة المرور المستقلة لك لتمكين خدمة SMTP") ؛ // إرسال رسالة نقل. transport.close () ؛ }}ثم اكتب فئة وحدة تحكم لإطار عمل springMVC:
/** * قفز لإرسال صفحة البريد الإلكتروني * RETURN * Throws استثناء */ @REQUESTMAPPE ("/gosendemail") PublicAndView GosendEmail (HttPservletRequest طلب) يلقي استثناء {modelandview mv = th this.getModelandView () ؛ سلسلة البريد الإلكتروني = request.getParameter ("البريد الإلكتروني") ؛ if (البريد الإلكتروني! = null &&! "". يساوي (البريد الإلكتروني)) {email = email.trim () ؛ MV.SetViewName ("العضو/send_email") ؛ mv.addobject ("البريد الإلكتروني" ، البريد الإلكتروني) ؛ } إرجاع MV ؛ }/** * إرسال بريد إلكتروني * return * @throws استثناء */ @requestmapping (value = "/sendemail" ، المنتج = "application/json ؛ charset = utf-8") responsebody الكائن العام sendemail (httpservletrequest طلب) استثناء {string ، map> map = new acshmap ، string> () ؛ String msg = "OK" ؛ // إرسال سلسلة الحالة toemail = request.getParameter ("البريد الإلكتروني") ؛ // title string boxpox الأخرى = request.getParameter ("title") ؛ // title string 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> <!-tip box-> <script type = "text/javaScript" src = "source/js/jquery.tips.js
التحقق من صحة نموذج jQuery والطلبات غير المتزامنة AJAX:
<!-إرسال البريد الإلكتروني-> <script type = "text/javaScript"> // إرسال وظيفة sendem () {if ($ ("#type"). val () == "1") {$ ("#content"). val (getContentTxt ()) ؛ } آخر {$ ("#content"). val (getContent ()) ؛ } if ($ ("#email"). val () == "") {$ ("#email"). TIPS ({side: 3 ، msg: "الرجاء إدخال البريد الإلكتروني '، bg:'#ae81ff '، الوقت: 2}) ؛ $ ("#البريد الإلكتروني"). Focus () ؛ العودة كاذبة } if ($ ("#title"). val () == "") {$ ("#title"). TIPS ({side: 3 ، msg: "الرجاء إدخال العنوان" ، bg: '#ae81ff' ، الوقت: 2}) ؛ $ ("#title"). Focus () ؛ العودة كاذبة } if ($ ("#content"). val () == "") {$ ("#nr"). TIPS ({side: 1 ، msg: "الرجاء إدخال المحتوى" ، bg: '#ae81ff' ، الوقت: 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؟ $ (#msg "). {side: 3 ،" أرسل بنجاح! '، bg:'#68b500 ' }) ؛} </script>مكالمات إلى صفحات JSP:
<!-تحرير البريد الإلكتروني-> <viv> <bool> <tr> <td style = "margin-top: 0px ؛"> <div style = "float: left ؛ semicolons "> $ {eLam} </sevidearea> </viv> <div style =" float: right ؛ "> <a class = 'btn btn-mini btn-info' onClick =" dialog_open () ؛ id = "title" value = "" placeholder = "الرجاء تحديد عنوان البريد الإلكتروني الإدخال"/> </td> </td> <td id = "nr"> <script id = "editor" type = "text/plain"> </script> </td> </td> <tr> <tr> onClick = "top.dialog.close () ؛"> إلغاء </a> </td> </tr> </table> </div> <div id = "zhongxin2" style = "display: none"> <br/> <img src = "alsest/images/jzx.gif" id = 'msg'/> <br/>ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.