Este artigo apresenta aplicativos Javamail com base na estrutura do SSM (Spring 4.0 + Springmvc + Mybatis). Se o email for baseado na caixa de correio QQ da Tencent, na verdade também é uma caixa de correio Foxmail.
Primeiro, precisamos entender o protocolo SMTP e a criptografia SSL
SMTP: Chamado de protocal simples de transferência de correio, o objetivo é fornecer aos usuários transmissão de correio eficiente e confiável. O SMTP é um protocolo para resposta à solicitação, ou seja, o cliente envia uma solicitação para o servidor remoto. O servidor responde e ouve à porta 25, portanto, seus modos de trabalho são dois: enviando SMTP e recebendo SMTP.
Criptografia SSL: Usado para garantir a segurança dos navegadores e servidores de sites. O princípio é explicado na tradução:
Quando o seu navegador solicita uma página da Web segura do servidor (geralmente https: //)
O servidor envia seu certificado e chave pública de volta
O navegador verifica se o certificado é emitido por uma instituição confiável, confirma que o certificado é válido e que este certificado é para este site.
Uma chave simétrica aleatória é criptografada usando uma chave pública, que inclui o URL criptografado para enviar ao servidor juntos
O servidor descriptografa a chave enviada com sua própria chave privada. Em seguida, use essa chave de criptografia simétrica para descriptografar o URL solicitado.
O servidor usa a chave simétrica enviada para criptografar a página da web solicitada. Você pode descriptografar a página da web que você enviou de volta com a mesma chave
Em seguida, introduza como implementar e -mails de envio do Javamail. Primeiro, você precisa fazer o download do Jar of Javamail: http://xiazai.vevb.com/201612/yuanma/mail_jb51.jar
Para ativar o serviço SMTP na caixa de correio QQ que atua como um servidor:
Escreva uma classe executiva para enviar e -mails:
pacote com.appms.email; importar java.util.date; importar java.util.properties; importar javax.mail.address; importar javax.mail.message; importar javax.mail.InTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernTernMot.MetRadax. com.sun.mail.util.mailssSocketFactory; public class Javaemailsender {public static void sendEmail (String toMailaddress, string emailTitle, string emailContent) lança exceção {Properties Props = new Properties (); // Ativar depuração de depuração Props.SetProperty ("Mail.debug", "True"); // O servidor de envio requer autenticação props.setProperty ("Mail.smtp.auth", "true"); // Defina o nome do host do servidor de correio props.setProperty ("Mail.host", "smtp.qq.com"); // O nome do protocolo de correio de envio props.setProperty ("Mail.Transport.Protocol", "SMTP"); / ** Autenticação SSL, observe que a caixa de correio Tencent é baseada na criptografia SSL e tudo o que você precisa para ativar o uso **/ MailSslSocketFactory SF = new MailSsLSocketFactory (); sf.SettrustAlhosts (true); props.put ("Mail.smtp.ssl.enable", "true"); props.put ("Mail.smtp.ssl.socketfactory", sf); // Crie sessão sessão session = session.getInstance (Props); // Envie mensagens, projetadas com base no modo observador mensagem msg = new Mimemessage (sessão); msg.SetSubject (emailTitle); // Use StringBuilder, porque o StringBuilder carrega mais rápido que a string e também é muito segura. StringBuilder Builder = new StringBuilder (); construtor.append ("/n"+emailContent); construtor.append ("/n time" + new date ()); msg.settext (builder.toString ()); msg.setFrom (novo InternetAddress ("sua caixa de correio QQ")); Transporte de transporte = session.gettransport (); transport.connect ("smtp.qq.com", "sua caixa de correio QQ", "a senha independente para você ativar o serviço SMTP"); // Envie uma mensagem Transport.sendMessage (msg, novo endereço [] {new InternetAddress (TOEMAILADDRESS)}); transport.close (); }}Em seguida, escreva uma classe de controlador para Springmvc Framework:
/** * Jump para enviar a página de email * @return * @throws Exception */@RequestMapping ("/GoSendEmail") Public ModelAndView GosendEmail (solicitação httpServletRequest) lança exceção {modelAndView mV = this.getModelandView (); String email = request.getParameter ("email"); if (email! = null &&! "". Equals (email)) {email = email.trim (); mv.setViewName ("membro/send_email"); mv.addobject ("email", email); } retornar MV; }/** * Enviar email * @return * @throws Exception */@RequestMapping (value = "/sendEmail", Produces = "Application/json; charset = utf-8") @ResponseBody Public Object SendEmail (httpServLeQuest request) Throws Exception {map <string, string> map = newHMAP < String msg = "ok"; // Enviar status string toeMail = request.getParameter ("email"); // outro título da String da caixa de correio = request.getParameter ("title"); // title string content = request.getParameter ("Content"); // Conteúdo javamailsender.sendemail (ToEmail, título, conteúdo); map.put ("resultado", msg); mapa de retorno; }Aqui, usamos o plug-in da ponta do jQuery para avisos de verificação, por isso precisamos introduzir o arquivo jQuery correspondente.
<script type = "text/javascript" src = "fonte/js/jQuery-1.7.2.js"> </script> <!-Box de ponta-> <script type = "text/javascript" src = "fonte/js/jquery.tips.js"> </script>
JQuery Form Validation e Ajax Asquerações assíncronas:
<!-Enviar email-> <script type = "text/javascript"> // Enviar função sendem () {if ($ ("#tipo"). Val () == "1") {$ ("#content"). } else {$ ("#Content"). Val (getContent ()); } if ($ ("#email"). $ ("#Email"). Focus (); retornar falso; } if ($ ("#title"). $ ("#Title"). Focus (); retornar falso; } if ($ ("#Content"). retornar falso; } var email = $ ("#email"). val (); var tipo = $ ("#tipo"). val (); var title = $ ("#title"). val (); var content = $ ("#content"). val (); $ ("#zhongxin"). hide (); $ ("#zhongxin2"). show (); $ .ajax ({type: "post", url: 'retroaction/sendemail.do? $ ("#msg"). Dicas ({Side: 3, Msg: 'Envie com sucesso!', BG: '#68B500', Hora: 5}); });} </script>Chamadas para páginas JSP:
<!-editar email-> <div> <table> <tr> <td style = "margin-top: 0px;"> <div style = "float: esquerda;"> <texttarea name = "email" id = "email" linhas = "1" cols = "50" PlaceHolder = "Selecione a entrada do endereço de e-mail da outra parte, e-mails de 1". semicolons "> $ {email} </sexttarea> </div> <div style =" float: right; "> <a class = 'btn btn-mini btn-info' onclick =" dialog_open (); "> editar endereço de email </i> </a> </div) id = "title" value = "" espaço reservado = "Selecione a entrada do título de email"/> </td> </tr> <td id = "nr"> <script id = "editor" type = "text/plana"> </script> </td> </tr> <tr> <td style = "text-align: centen; OnClick = "top.dialog.close ();"> cancelar </a> </td> </tr> </tabela> </div> <div id = "zhongxin2" style = "Display: None"> <br/> <mg src = "Assets/imagens/jzx.gif" 'iD =' msg '/>/>O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.