Artikel ini memperkenalkan aplikasi Javamail berdasarkan kerangka kerja SSM (Spring 4.0 + SpringMVC + MyBatis). Jika email didasarkan pada kotak surat QQ Tencent, itu sebenarnya juga kotak surat Foxmail.
Pertama, kita perlu memahami protokol SMTP dan enkripsi SSL
SMTP: Disebut Simple Mail Transfer Protocal, tujuannya adalah untuk memberi pengguna transmisi email yang efisien dan andal. SMTP adalah protokol untuk respons permintaan, yaitu klien mengirimkan permintaan ke server jarak jauh. Server merespons dan mendengarkan port 25, jadi mode kerjanya adalah dua: mengirim SMTP dan menerima SMTP.
Enkripsi SSL: Digunakan untuk memastikan keamanan browser dan server situs web. Prinsipnya dijelaskan dalam terjemahan:
Ketika browser Anda meminta halaman web yang aman dari server (biasanya https: //)
Server mengirimkan sertifikat dan kunci publiknya kembali
Browser memeriksa apakah sertifikat dikeluarkan oleh lembaga tepercaya, menegaskan bahwa sertifikat tersebut valid dan bahwa sertifikat ini untuk situs web ini.
Kunci simetris acak dienkripsi menggunakan kunci publik, yang mencakup URL terenkripsi untuk dikirim ke server bersama -sama
Server mendekripsi kunci yang Anda kirim dengan kunci pribadinya sendiri. Kemudian gunakan kunci enkripsi simetris ini untuk mendekripsi URL yang Anda minta.
Server menggunakan kunci simetris yang Anda kirim untuk mengenkripsi halaman web yang Anda minta. Anda dapat mendekripsi halaman web yang Anda kirim kembali dengan kunci yang sama
Kemudian perkenalkan cara mengimplementasikan Javamail mengirim email. Pertama, Anda perlu mengunduh Jar of Javamail: http://xiazai.vevb.com/201612/yuanma/mail_jb51.jar
Untuk mengaktifkan layanan SMTP di kotak surat QQ yang bertindak sebagai server:
Tulis kelas bisnis untuk mengirim email:
Paket com.appms.email; impor java.util.date; impor java.util.properties; impor javax.mail.address; impor javax.mail.message; impor javax.mail.internet. com.sun.mail.util.mailsslsocketfactory; kelas publik javaemailsender {public static void sendeMail (string toemailAddress, string emailTitle, string emailContent) melempar pengecualian {properti props = new properties (); // Aktifkan debug debugging props.setProperty ("mail.debug", "true"); // Server Pengiriman membutuhkan props.setProperty ("mail.smtp.auth", "true"); // atur nama host server mail props.setProperty ("mail.host", "smtp.qq.com"); // Nama Protokol Mail Sailing Props.setProperty ("mail.transport.protocol", "smtp"); / ** Otentikasi SSL, perhatikan bahwa Tencent Mailbox didasarkan pada enkripsi SSL, dan semua yang Anda butuhkan untuk mengaktifkan untuk menggunakan **/ mailsslsocketFactory sf = mailsslsocketFactory () baru; sf.settrustallhosts (true); props.put ("mail.smtp.ssl.enable", "true"); props.put ("mail.smtp.ssl.socketfactory", sf); // Buat sesi sesi sesi = session.getInstance (props); // Kirim pesan, dirancang berdasarkan pesan mode pengamat msg = mimemessage baru (sesi); msg.setsubject (emailTitle); // Gunakan StringBuilder, karena StringBuilder memuat lebih cepat dari string, dan juga sangat aman. StringBuilder builder = new StringBuilder (); builder.append ("/n"+emailContent); builder.append ("/n Time" + new Date ()); msg.setText (builder.toString ()); msg.setfrom (internetAddress baru ("kotak surat qq Anda")); Transport transport = session.getTransport (); transport.connect ("smtp.qq.com", "kotak surat qq Anda", "kata sandi independen untuk Anda dapat mengaktifkan layanan SMTP"); // Kirim pesan transport.sendMessage (msg, alamat baru [] {new internetAddress (toemailAddress)}); transport.close (); }}Kemudian tulis kelas pengontrol untuk kerangka kerja SpringMVC:
/** * Lompat untuk mengirim halaman email * @return * @throws Exception */@RequestMapping ("/gosendemail") Public ModelAndView Gosendemail (permintaan httpservletRequest) melempar pengecualian {ModelandView mv = this.getModelandView (); String email = request.getParameter ("email"); if (email! = null &&! "". Equals (email)) {email = email.trim (); mv.setViewName ("anggota/send_email"); mv.addObject ("email", email); } return mv; } /** * Send email* @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"; // Kirim string status toemail = request.getParameter ("email"); // title string kotak surat lainnya = request.getParameter ("title"); // title string content = request.getParameter ("content"); // konten javaemailsender.sendemail (toemail, judul, konten); peta.put ("hasil", msg); peta mengembalikan; }Di sini kami menggunakan plug-in tip jQuery untuk prompt verifikasi, jadi kami perlu memperkenalkan file jQuery yang sesuai.
<type skrip = "text/javascript" src = "source/js/jQuery-1.7.2.js"> </script> <!-Tip box-> <script type = "text/javascript" src = "source/js/jquery.tips.js"> </script>
Validasi formulir jQuery dan permintaan asinkron jax:
<!-Kirim email-> <type skrip = "text/javascript"> // kirim function sendem () {if ($ ("#type"). Val () == "1") {$ ("#content"). Val (getContenttxt ()); } else {$ ("#content"). val (getContent ()); } if ($ ("#email"). val () == "") {$ ("#email"). Tips ({sisi: 3, msg: 'Harap masukkan email', bg: '#ae81ff', waktu: 2}); $ ("#Email"). Focus (); mengembalikan false; } if ($ ("#title"). val () == "") {$ ("#title"). Tips ({sisi: 3, msg: 'Harap masukkan judul', bg: '#ae81ff', waktu: 2}); $ ("#Title"). Focus (); mengembalikan false; } if ($ ("#content"). val () == "") {$ ("#nr"). Tips ({side: 1, msg: 'Harap masukkan konten', bg: '#ae81ff', waktu: 3}); mengembalikan 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 ='+tanggal baru (). getTime (), data: {email: email, judul: judul, konten: konten}, datape: 'json', // beforeSend: validateData, cache: false, function: date) {{"{" {"{" {apies, " $ ("#msg"). Tips ({side: 3, msg: 'Kirim berhasil!', BG: '#68B500', waktu: 5}); });} </script>Panggilan ke halaman JSP:
<!-Edit Email-> <dv> <abl> <tr> <td style = "margin-top: 0px;"> <div style = "float: left;"> <textAreA name = "email" id = "email" Baris = "1" cols = "50" placeholder = "Harap pilih alamat email pihak lain, silakan pisahkan alamat email yang lebih banyak (5" Placeholder = ") Semicolons "> $ {email} </textarea> </div> <div style =" float: right; "> <a class = 'btn btn-mini btn-info' ontClick =" dialog_open (); "> edit email </i> </a> </div> </td>" "TR>" TR> </a> </a> </div> </td> "" TR> "" TR> </a> </a> </div> </td> "" id = "title" value = "" placeholder = "Silakan pilih input judul email"/> </td> </tr> <td id = "nr"> <script id = "editor" type = "text/plain"> </script> </td> </tr> <tds (tdy = "sendign: center;"> </tr> <td () <) </sendign: sendign: center; "> </ttr> <tr> <) <) (Text-align: center;"> </ttr> <tr> <) (TD "sendign: center;"> </ttr> <tr> <) <) (TEXT-SAFIGN: CENTER; "> </tR> <T" (TD "; onclick="top.Dialog.close();">Cancel</a> </td> </tr> </table> </div> <div id="zhongxin2" style="display:none"><br/><img src="assets/images/jzx.gif" id='msg' /><br/><h4 id='msg'>Send...</h4></div>Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.