Este artículo presenta aplicaciones de Javamail basadas en el marco SSM (Spring 4.0 + SpringMVC + MyBatis). Si el correo electrónico se basa en el buzón QQ de Tencent, en realidad también es un buzón de FoxMail.
Primero, necesitamos entender el protocolo SMTP y el cifrado SSL
SMTP: llamado Simple Mail Transfer Protocal, el objetivo es proporcionar a los usuarios una transmisión de correo eficiente y confiable. SMTP es un protocolo para la respuesta de solicitud, es decir, el cliente envía una solicitud al servidor remoto. El servidor responde y escucha al puerto 25, por lo que sus modos de trabajo son dos: enviar SMTP y recibir SMTP.
Cifrado SSL: utilizado para garantizar la seguridad de los navegadores y los servidores de sitios web. El principio se explica en la traducción:
Cuando su navegador solicita una página web segura desde el servidor (generalmente https: //)
El servidor envía su certificado y clave pública
El navegador verifica si el certificado es emitido por una institución de confianza, confirma que el certificado es válido y que este certificado es para este sitio web.
Una clave simétrica aleatoria está encriptada utilizando una clave pública, que incluye la URL encriptada para enviar juntos al servidor
El servidor descifra la clave que envió con su propia clave privada. Luego use esta clave de cifrado simétrico para descifrar la URL que solicitó.
El servidor utiliza la clave simétrica que envió para cifrar la página web que solicitó. Puede descifrar la página web que envió de vuelta con la misma clave
Luego, presente cómo implementar Javamail enviando correos electrónicos. Primero, debe descargar el frasco de Javamail: http://xiazai.vevb.com/201612/yuanma/mail_jb51.jar
Para habilitar el servicio SMTP en el buzón QQ que actúa como un servidor:
Escribe una clase ejecutiva para enviar correos electrónicos:
paquete 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; importar javax. com.sun.mail.util.mailsslsocketfactory; public class javaemailsender {public static void sendEmail (string toMailaddress, string ageictitle, string ageiccontent) lanza excepción {props props = new Properties (); // habilitar la depuración de depuración propssssetProperty ("mail.debug", "verdadero"); // El servidor de envío requiere accesorios de autenticación. // Establecer el nombre de host del servidor de correo Props.SetProperty ("Mail.host", "smtp.qq.com"); // El nombre del protocolo de envío de correo Props.SetProperty ("mail.transport.protocol", "smtp"); / ** Autenticación SSL, tenga en cuenta que el buzón de Tencent se basa en el cifrado SSL, y todo lo que necesita para habilitar para usar **/ mailsslsocketFactory sf = new MailsSlSocketFactory (); sf.setTrustallHosts (verdadero); propssput ("mail.smtp.ssl.enable", "verdadero"); props.put ("mail.smtp.ssl.socketfactory", sf); // Crear sesión Session Session = Session.GetInStance (Props); // Enviar mensajes, diseñados según el mensaje del modo Observador msg = new Mimemessage (sesión); msg.setsubject (correo electrónico); // Use StringBuilder, porque StringBuilder se carga más rápido que String, y también es muy a prueba de subprocesos. StringBuilder Builder = new StringBuilder (); builder.append ("/n"+emailcontent); builder.append ("/n tiempo" + nueva fecha ()); msg.settext (builder.ToString ()); msg.setFrom (nuevo InternetAddress ("Su buzón QQ")); Transport Transport = session.getTransport (); transport.connect ("smtp.qq.com", "Su buzón QQ", "la contraseña independiente para que usted habilite el servicio SMTP"); // Enviar un mensaje transport.sendMessage (msg, nueva dirección [] {new InternetAddress (toMailAddress)}); transport.close (); }}Luego escriba una clase de controlador para el marco SpringMVC:
/** * Saltar para enviar la página de correo electrónico * @return * @throws Exception */@RequestMapping ("/GosendEmail") public ModelAndView GosendEMail (HttpServletRequest Soly) lanza la excepción {modelandView mv = this.getModelandView (); String Correo electrónico = request.getParameter ("correo electrónico"); if (correo electrónico! = null &&! "". iguales (correo electrónico)) {correo electrónico = correo electrónico.trim (); mv.setViewName ("miembro/send_email"); MV.AdDObject ("correo electrónico", correo electrónico); } return mv; }/** * Enviar correo electrónico * @return * @throws Exception */@RequestMapping (valor = "/sendEmail", produce = "aplicación/json; charset = utf-8") @ResponseBody Public Object sendEmail (httpservletRequest request) lanza la excepción {map <string, string> map = new Hashmap <String, string> (); Cadena msg = "OK"; // Enviar status string toMail = request.getParameter ("correo electrónico"); // Otro buzón de cadena Title = request.getParameter ("Título"); // Title String Content = request.getParameter ("contenido"); // contenido javaemailsender.sendemail (toemail, título, contenido); map.put ("resultado", msg); mapa de retorno; }Aquí usamos el complemento JQuery Tip para las indicaciones de verificación, por lo que necesitamos introducir el archivo jQuery correspondiente.
<script type = "text/javaScript" src = "fuente/js/jQuery-1.7.2.js"> </script> <!-tip box-> <script type = "text/javaScript" src = "fuente/js/jQuery.tips.js"> </script>>
Validación de formulario jQuery y solicitudes asíncronas de AJAX:
<!-Enviar correo electrónico-> <script type = "text/javaScript"> // enviar función sendem () {if ($ ("#type"). Val () == "1") {$ ("#content"). Val (getContentTxt ()); } else {$ ("#content"). val (getContent ()); } if ($ ("#correo electrónico"). val () == "") {$ ("#correo electrónico"). Tips ({lado: 3, msg: 'Ingrese el correo electrónico', bg: '#ae81ff', tiempo: 2}); $ ("#Correo electrónico"). Focus (); devolver falso; } if ($ ("#title"). val () == "") {$ ("#title"). Tips ({lado: 3, msg: 'Ingrese el título', bg: '#ae81ff', tiempo: 2}); $ ("#Title"). Focus (); devolver falso; } if ($ ("#content"). val () == "") {$ ("#nr"). Tips ({lado: 1, msg: 'Ingrese el contenido', bg: '#ae81ff', tiempo: 3}); devolver falso; } var Correo electrónico = $ ("#correo electrónico"). 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: {correo electrónico: correo electrónico, título: titular, content: content}, dataType: 'json', // befeforesend: validatedata, cHache: falso, éxito: function (data) {if ("ok" == datos. $ ("#msg"). });} </script>Llamadas a las páginas JSP:
< <div style = "float: right;"> <a class = 'btn btn-mini btn-info' onClick = "dialog_open ();"> Editar dirección de correo electrónico </i> </a> </div> </td> </ tr> <tr> <tr> <td> <tipo de entrada = "texto" name = "Título" Id = "Título" Valor = "" Lugar Holdeador = "Por favor, por favor, Title" Title ", por favor, por favor, seleccione Titular/Título/Título". </tr> <td id = "nr"> <script id = "editor" type = "text/sencillo"> </script> </td> </tr> <tr> <td style = "text-align: center;"> <a onclick = "sendem ();"> send </a> <a ondclick = "top.dialog.cLose ();"> cancel </a> <td> </div> <div id = "zhongxin2" style = "display: none"> <br/> <img src = "assets/images/jzx.gif" id = 'msg'/> <br/> <h4 id = 'msg'> enviar ... </h4> </div>
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.