Effet global:
ENDENDIE DE SEPORT: Email NetEase; End Receiving: QQ Courriel.
1. Web frontal
2. Vous pouvez voir l'e-mail envoyé via le code Java dans le courriel NetEase "envoyé"
3. Vous pouvez également voir cet effet dans la boîte aux lettres QQ
Processus de mise en œuvre:
1. Web frontal (disposition de bootstrap)
<form action = "MailAction! Sendmail" Method = "Post" name = "MailForm" id = "MailFormID"> <ul> <li> <div> <spann id = "Basic-addon1"> name: </ span> <input type = "Text" Paceholder = "votre nom" Name = "MailForm.name" Aria-DeScrip id = "Basic-Addon2"> tel: </span> <input type = "text" placeholder = "votre téléphone" name = "MailForm.Phone" aria-descripdBy = "Basic-Addon1"> </ div> </li> <li> <div> <span ID = " aria-descripdBy = "Basic-Addon1"> </div> </li> <li style = "padding-top: 20px;"> <span> Message: </span> <br> <br> <TextArea Rows = "10" name = "MailForm.content" PlaceHolder = "Veuillez entrer un message (ne pas dépasser 500 caractères)"> </SITH onClick = "$ ('# mailformid'). soumis ();" Type = "Button"> Envoyer un e-mail </ Button> </ Center> </li> </ul> </ Form> 2. Préparez d'abord un modèle XML (<XML-Body> contient du texte au format HTML pour l'e-mail).
<? xml version = "1.0" Encoding = "UTF-8"?> <! - Changer les espaces en espaces pleine largeur pour s'assurer que HTML ne filtrera pas les espaces -> <xml-body> <html> </ head> </ head> <corps de corps = "margin: 0; padding: 0;"> <table cellulaire) style = "padding: 10px 0 30px 0;"> <table align = "Center" cellPadding = "0" Cellpacing = "0" style = "border: 1px solide #cccccc; border-collapse: effondrement;"> <tbody> <tr> <td align = "Center" bgcolor = "# 70bbd9" style = "Padding: 40px 0 30px 0; # 153643; 30px; "> <table cellpadding =" 0 "Cellpacing =" 0 "> <tbody> <tr> <td style =" Color: # 153643; </b> </td> </tr> <tr> <td style = "padding: 20px 0 30px 0; couleur: # 153643; font-family: arial, sans-serif; Font-Size: 16px; line-height: 20px;"> {3} </td> </tr> <td> <Tbody> <tr> <td valign = "top"> <table cellpadding = "0" cellpacing = "0"> <tbody> <tr> <td> <img src = "cid: {5}" style = "affiche: block;" /> </td> </pody> </sable> </td> <td style = "FONT-SITE: 0; lineeight: 0;>; </td> <td valign = "top"> <table cellpadding = "0" Cellpacing = "0"> <tbody> <tr> <td> <img src = "cid: {6}" style = "Affichage: Block;" /> </ td> </ tr> </ tbody> </ table> </td> </tr> </pody> </tr> </tody> </ table> </td> </tr> </tbody> </s table> </td> </tr> </tbody> </ table> </td> </tr> <tr> <td bgcolor = "# ee4c50" style = "padding: 30px 30px 30px 30px;"> <tableaux de cellule = "0" 0 " <Tbody> <Tr> <td align = "droite"> <table cellpadding = "0" Cellpacing = "0"> <tbody> <tr> <td style = "font-Family: Arial, Sans-Serif; Font-Size: 12px; Font-Weight: Bold;"> <img Src = "Cid: {7}" style = "Afficher:" " Style = "Font-Family: Arial, Sans-Serif; Font-Size: 12px; Font-Weight: Bold;"> <img src = "cid: {8}" style = "Affichage: Block;" /> </ td> </tbody> </ Table> </ Td> </ TBODY> </ Table> </td> </r> </html> </ xml-body> Il y aura des identificateurs dans le modèle, tels que {i}, table ou emplacement réservé pour les chaînes, puis formater ces messages via MessageFormat, puis insérer la chaîne formatée dans l'emplacement approprié dans le motif.
// Obtenez le modèle de la chaîne XML XML_PATH = servletACContext.getServletContext (). GetRealPath ("/ MailTemplate") + "/ MymailTemplete.xml"; String str = new ReaderXml (). Read (xml_path); Objet [] obj = nouvel objet [] {MailForm.getName (), MailForm.getPhone (), MailForm.gete_mail (), MailForm.getContent (), "E_Mail", "Left", "Droite", "TW", "FB"}; // MessageFormat peut formater ces messages, puis insérer la chaîne formatée dans la position appropriée dans la chaîne de modèle tContent = MessageFormat.Format (str, obj); Enfin, le {i} dans le modèle XML est remplacé respectivement par obj [i].
3. Écrivez une classe ReaderXML pour les modèles XML
classe publique ReaderXml {public String Read (String Path) {String str = null; str = lecteur (chemin); retour STR; } Private String Reader (String Path) {saxReader Reader = new saxReader (); String str = null; try {document d = reader.read (nouveau fichier (path)); Élément e = d.getRootelement (); Élément html = e.element ("html"); str = html.asxml (); } catch (documentException e) {e.printStackTrace (); } return str; }} 4. Enfin, notre Contrôleur Class MailAction
L'image contenue dans le format HTML est de définir l'identifiant unique du fichier de ressources correspondant à l'aide de la méthode setContentid () de la classe MIMEBODYPART. Autrement dit, le protocole MIME a le champ d'en-tête de contenu-id dans le format de structure et d'organisation du message, qui correspond à l'identifiant CID: {i} dans le modèle XML, tel que <img src = "cid: {8}" /> (note: {i} sera remplacé par la chaîne correspondante via messageFormat.format)
La classe publique MailAction étend ActionSupport {Private MailForm MailForm; public MailForm getMailForm () {return MailForm; } public void setMailForm (MailForm MailForm) {this.mailForm = MailForm; } // Ajouter une image embarquée privée mimeBodyPart CreateImageMoBodyPart (String ImageName) lève MessageSingException, UnpportEdenCoDingException {FiledataSource fds = new FileDataSource (servletActionContext.getServletContext (). GetRealPath (/ image ") +" / "+ Imagename +" .gif "); MIMEBODYPART MBP = new MIMEBODYPART (); Datahandler dh = new Datahandler (fds); MBP.SetDatahandler (DH); // Définit l'identifiant unique du fichier de ressources correspondant, c'est-à-dire le champ d'en-tête de contenu-id dans le format de structure et d'organisation du protocole MIME pour le message; MBP.SetHeader ("Content-id", ImageName); mbp.setFileName (mimeutility.encodeText (fds.getName ())); retour MBP; } public String Sendmail () {try {httpServleRequest request = servletActionContext.getRequest (); String pwd = "******************"; // Mot de passe e-mail de Sender String MailFrom = "*****************@163.com"; // chaîne de courriels de NetEase Wangyifrom = MailFrom.Substring (0, MailFrom.Indexof ('@')); // NetEase Email Username String Tu = "163.com"; // String de nom de domaine de Sendor TTO = "************@qq.com"; // L'adresse e-mail qui reçoit la chaîne de messagerie ttitle = "quelqu'un vous contacte --- sur le site Web personnel de Hu Junzheng"; // Selon son chemin physique, obtenez la chaîne de modèle XML xml_path = servletActionContext.getServletContext (). GetRealPath ("/ MailTemplate") + "/ MymailTemplete.xml"; String str = new ReaderXml (). Read (xml_path); Objet [] obj = nouvel objet [] {MailForm.getName (), MailForm.getPhone (), MailForm.gete_mail (), MailForm.getContent (), "E_Mail", "Left", "Droite", "TW", "FB"}; // MessageFormat peut formater ces messages, puis insérer la chaîne formatée dans la position appropriée dans la chaîne de modèle tContent = MessageFormat.Format (str, obj); Properties props = news properties (); props.put ("Mail.smtp.host", "SMTP." + Tu); // Mailbox Smtp Server Address Port Port.put ("Mail.smtp.auth", "true"); // De cette manière, vous pouvez transmettre la session de vérification S = session.getinstance (props); S.SetDebug (true); MIMEMESSAGE MESSAGE = NOUVEAU MIMEMESSAGE (S); // Définissez l'expéditeur / recette / Envoi de l'heure pour l'objet de message InternetAddress à partir de; From = new InternetAddress (MailFrom); // Envoi de la boîte aux lettres QQ de l'expéditeur.SetFrom (From); InternetAddress vers = new InternetAddress (tto); // e-mail du destinataire.SetReccipient (message.recipentType.to, à); Message.SetSubject (tTitle); message.sesentDate (new Date ()); // Définir le contenu pour l'objet de message BodyPart MBP = new MIMEBOLDPART (); // Créer un nouvel objet BodyPart MBP.SetContent (TContent, "Text / Html; Charset = GB2312"); // Définir le contenu et le format / la méthode d'encodage pour l'objet BodyPart // Utilisé pour combiner le texte et les images, "type" MiMemultiparpart ("lié"); // Créez un nouvel objet miMemultupart pour stocker des objets de carrosserie (en fait, plusieurs) MM.AddBodyPart (MBP); // ajouter BodyPart à l'objet mimemultupar (multiples-carrosseries peuvent être ajoutés) // ajouter l'image mm.addbodyPart (CreateImageBodyPart ("e_mail"); mm.AddBodyPart (createImageMimeBodyPart ("Left")); mm.AddBodyPart (createImageMimeBodyPart ("droite")); mm.AddBodyPart (createImageMimeBodyPart ("droite")); mm.AddBodyPart (createImageMimeBodyPart ("tw")); mm.AddBodyPart (createImageMimeBodyPart ("fb")); message.setContent (MM); // Utilisez MM comme contenu de l'objet Message Message.SaveChanges (); Transport Transport = S.GetTransport ("SMTP"); transport.connect ("smtp." + tu, wangyifrom, pwd); // le wangyifrom ici est le compte NetEase de l'expéditeur Transport.SendMessage (message, message.getAllrecipients ()); transport.close (); ActionContext.getContext (). Getession (). Put ("Operations", "L'e-mail a été envoyé avec succès, veuillez attendre patiemment la réponse!"); } catch (exception e) {System.out.println (e.toString ()); ActionContext.getContext (). GetSession (). Put ("erreurs", e.toString ()); return "erreurs"; } return "sendmail"; }}Ce qui précède concerne cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde.