Cet article présente des applications Javamail basées sur le cadre SSM (Spring 4.0 + SpringMVC + MyBatis). Si l'e-mail est basé sur la boîte aux lettres QQ de Tencent, c'est aussi une boîte aux lettres Fox Mail.
Tout d'abord, nous devons comprendre le protocole SMTP et le cryptage SSL
SMTP: Appelé Simple Mail Transfer Protocal, l'objectif est de fournir aux utilisateurs une transmission de courrier efficace et fiable. SMTP est un protocole de réponse à la demande, c'est-à-dire que le client envoie une demande au serveur distant. Le serveur répond et écoute le port 25, de sorte que ses modes de travail sont deux: l'envoi de SMTP et la réception de SMTP.
Cryptage SSL: utilisé pour assurer la sécurité des navigateurs et des serveurs de sites Web. Le principe est expliqué dans la traduction:
Lorsque votre navigateur demande une page Web sécurisée du serveur (généralement https: //)
Le serveur renvoie son certificat et sa clé publique
Le navigateur vérifie si le certificat est délivré par une institution de confiance, confirme que le certificat est valide et que ce certificat est pour ce site Web.
Une clé symétrique aléatoire est cryptée à l'aide d'une clé publique, qui inclut l'URL cryptée à envoyer au serveur ensemble
Le serveur décrypte la clé que vous avez envoyée avec sa propre clé privée. Utilisez ensuite cette clé de chiffrement symétrique pour décrypter l'URL que vous avez demandé.
Le serveur utilise la clé symétrique que vous avez envoyée pour crypter la page Web que vous avez demandée. Vous pouvez décrypter la page Web que vous avez renvoyée avec la même clé
Introduisez ensuite comment implémenter Javamail envoyant des e-mails. Tout d'abord, vous devez télécharger le pot de Javamail: http://xiazai.vevb.com/201612/yuanma/mail_jb51.jar
Pour activer le service SMTP sur la boîte aux lettres QQ qui agit comme un serveur:
Écrivez une classe affaires pour envoyer des e-mails:
package com.appms.email; importer java.util.date; import java.util.properties; import javax.mail.address; import javax.mail.message; import javax.mail.ession; Importer javax.mail.transport; import javax.internet.MIMMEMPSAPE; IMPORT; com.sun.mail.util.mailssslsocketfactory; classe publique javaemailsender {public static void SendEmail (String toEmailAddress, chaîne emailTitle, string emailContent) lève exception {Properties props = new Properties (); // Activer Debug Debugging props.setProperty ("Mail.debug", "True"); // Le serveur d'envoi nécessite des propulseurs d'authentification.SetProperty ("Mail.smtp.auth", "true"); // Définissez le nom d'hôte du serveur de messagerie props.setproperty ("mail.host", "smtp.qq.com"); // Le nom du protocole de messagerie envoie des props.setproperty ("mail.transport.protocol", "smtp"); / ** Authentification SSL, notez que la boîte aux lettres Tencent est basée sur le cryptage SSL, et tout ce dont vous avez besoin pour permettre d'utiliser ** / MailSSLSocketFactory SF = new MailSSLSocketFactory (); sf.setTrustAllHosts (true); props.put ("mail.smtp.ssl.enable", "true"); props.put ("mail.smtp.ssl.socketfactory", sf); // Créer ses session session session = session.getInstance (accessoires); // Envoi des messages, conçus sur la base du message du mode observateur msg = new mimeMessage (session); MSG.SETSUSBject (EmailTitle); // Utilisez StringBuilder, car StringBuilder se charge plus rapidement que la chaîne, et il est également très thread-safe. StringBuilder Builder = new StringBuilder (); builder.append ("/ n" + emailContent); builder.append ("/ n time" + new Date ()); msg.setText (builder.toString ()); msg.setFrom (nouveau InternetAddress ("Votre boîte aux lettres QQ")); Transport Transport = Session.getTransport (); transport.connect ("smtp.qq.com", "votre boîte aux lettres QQ", "le mot de passe indépendant pour vous pour activer le service SMTP"); // Envoyer un message transport.sendMessage (msg, nouvelle adresse [] {new InternetAddress (toEmailAddress)}); transport.close (); }}Ensuite, écrivez une classe de contrôleur pour le framework SpringMvc:
/ ** * Jump to Envoyer la page e-mail * @return * @throws exception * / @requestmapping ("/ gosendemail") public ModelandView gosendemail (httpservletRequest request) lève une exception {modelandView mv = this.getModelandView (); String Email = request.getParameter ("e-mail"); if (email! = null &&! "". equals (email)) {email = email.trim (); mv.setViewName ("membre / send_email"); mv.addObject ("e-mail", e-mail); } return mv; } / ** * Envoyer un e-mail * @return * @throws exception * / @RequestMapping (value = "/ SendEmail", produmes = "application / json; charset = utf-8") @ResponseBody Object public Sendemail (httpServleTrequest request) lance l'exception {map <string, string> map = new hashmap <string, string> (); Chaîne msg = "ok"; // Envoyer la chaîne d'état ToEmail = request.getParameter ("e-mail"); // Autre chaîne de boîte aux lettres Title = request.getParameter ("Title"); // Title String Content = request.getParameter ("Content"); // Content JavaEmailSender.Sendemail (ToEmail, titre, contenu); map.put ("result", msg); carte de retour; }Ici, nous utilisons le plug-in de pointe jQuery pour les invites de vérification, nous devons donc introduire le fichier jQuery correspondant.
<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"> </ script>
Validation du formulaire jQuery et demandes asynchrones Ajax:
<! - Envoyer un e-mail -> <script type = "text / javascript"> // envoyer la fonction sendem () {if ($ ("# type"). Val () == "1") {$ ("# contenu"). Val (getContentTxt ()); } else {$ ("# contenu"). Val (getContent ()); } if ($ ("# e-mail"). Val () == "") {$ ("# e-mail"). Tips ({Side: 3, msg: 'Veuillez saisir l'e-mail', bg: '# ae81ff', temps: 2}); $ ("# E-mail"). Focus (); retourne false; } if ($ ("# title"). Val () == "") {$ ("# title"). Tips ({Side: 3, msg: 'Veuillez entrer le titre', bg: '# ae81ff', temps: 2}); $ ("# Title"). Focus (); retourne false; } if ($ ("# contenu"). Val () == "") {$ ("# nr"). Tips ({Side: 1, msg: 'Veuillez entrer le contenu', bg: '# ae81ff', temps: 3}); retourne false; } var email = $ ("# e-mail"). Val (); var type = $ ("# type"). Val (); var title = $ ("# title"). Val (); var content = $ ("# contenu"). Val (); $ ("# zhongxin"). hide (); $ ("# zhongxin2"). show (); $ .ajax ({type: "Post", URL: 'rétroaction / SendEmail.do? tm =' + new Date (). GetTime (), Data: {Email: Email: Title: Title, Content: Content}, DataType: 'JSON', // Beforend: ValidateData, Cache: False, Success (fonction (Data) {if ("OK" == Data.Result) { $ ("# msg"). });} </ script>Appels aux pages JSP:
<! - Modifier le courrier électronique -> <v> <b Spied> <Tr> <td style = "margin-top: 0px;"> <div style = "float: left;"> <textarea name = "e-mail" id = "e-mail" Rows = "1" cols = "50" placeholder = "s'il vous plaît sélectionnez l'adresse e-mail de l'autre partie, s'il vous plaît séparer plusieurs adresses e-mail avec (;;) Semicolons"> $ {Conton <div style = "float: droite;"> <a class = 'btn btn-mini btn-info' onclick = "dialog_open ();"> modifier l'adresse e-mail </i> </a> </v> </td> </tr> <tr> <td> <intrant type = "Text" name = "title" id = "title" value = " </ tr> <td id = "nr"> <script id = "editor" type = "text / plain"> </cript> </td> </tr> <tr> <td style = "text-align: central;"> <a onClick = "Sendem ();"> Envoyer </a> <a onclick = "top.dialog.close ();"> annuler </a> <a onclick = "top.dialog.close ();"> Annuler </a> </ div> <div id = "zhongxin2" style = "affiche: aucun"> <br/> <img src = "actifs / images / jzx.gif" id = 'msg' /> <br/> <h4 id = 'msg'> send ... </h4> </ div>Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.