Gesamteffekt:
Sending End: Netase -E -Mail; Empfangsende: QQ -E -Mail.
1. Web Front-End
2. Sie können die per E -Mail über den Java -Code gesendete E -Mail in Netase -E -Mail "gesendet" sehen.
3.. Sie können diesen Effekt auch im QQ -Mailbox sehen
Implementierungsprozess:
1. Web Front-End (Bootstrap-Layout)
<form action = "mailAction! sendmail" methode = "post" name = "mailform" id = "mailFormId"> <ul> <li> <div> <span id = "Basic-Addon1"> Name: </span> <Eingabe type = "text" placeholder = "Ihr Name" name "name" id = "Basic-Addon2"> Tel: </span> <Eingabe type = "text" placeholder = "Ihr Telefon" name = "mailform.phone" aria-geschriebene basisch-addon1 "> </div> </li> <li> <div> <span id =" basic-addon2 "> E-Mail: </span> <Eingabe type =" texthilde "yeMa- mailForm. aria-decricdBy = "Basic-Addon1"> </div> </li> <li style = "padding-top: 20px;"> <span> Nachricht: </span> <br> <br> <textarea rows = "10" name = "mailform onclick = "$ ('#mailformID'). subled ();" Typ = "Button"> E -Mail senden </button> </center> </li> </ul> </Form> 2. Erstellen Sie zuerst eine XML-Vorlage (<XML-Body> enthält Text im HTML-Format für die E-Mail).
<xml Version = "1.0" coding = "utf-8"?> <!-Räume in Vollbreite Räume ändern, um sicherzustellen, dass HTML keine Räume herausfiltert-> <xml-body> <html> <head> </head> <body style = "margin: 0; padding: 0; style = "padding: 10px 0 30px 0;"> <table align = "center" cellpadding = "0" cellpacing = "0" style = "border: 1px solid #ccccc; Border-Collapse: Collapse; #153643; <table cellpadding="0" cellpacing="0"> <tbody><tr> <td style="color: #153643; font-family: Arial, sans-serif; font-size: 24px;"> <b> Sender: {0} <br/> Phone: {1} <br/> Email: {2} <br/> Content:<br/> </b> </td> </tr> <tr> <td style = "padding: 20px 0 30px 0; Farbe: #153643; Schriftfamilie: Arial, Sans-Serif; Schriftgröße: 16px; Zeilenhöhe: 20px;"> {3} </td> </tr> <TBODY> <TABLECLADE-TABLE CELLPADDE = 0 "0" 0> <TBODY> <TBODY> <TABLE CELLPADDE = 0 "0" 0 "0> <TBODODE <TBODY> <TBODY <TBODY <TBODY> <TABLE CELLPADDE = 0" 0 "0"> <TBODY> <TABLECLEGE. valign = "top"> <table cellpadding = "0" cellpacing = "0"> <tbody> <tr> <td> <img src = "CID: {5}" style = "display: block;"/> </td> </tbody> </table> </td> <td style = "td-size =" line-heuchlichkeit: 0; <table cellpadding="0" cellpacing="0"> <tbody><tr> <td> <img src="cid:{6}" style="display: block;"/> </td> </tr> </tbody></table> </td> </tr> </tbody></table> </td> </td> </tr> </tbody></table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td bgcolor = "#ee4c50" style = "padding: 30px 30px 30px; align="right"> <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="display: block;"/> </td> <td style="font-family: Arial, sans-serif; In der Vorlage gibt es einige Kennungen, wie {I}, Tabelle oder reservierte Position für Zeichenfolgen, und formatieren Sie diese Nachrichten dann über MessageFormat und fügen Sie dann die formatierte Zeichenfolge in den entsprechenden Ort im Muster ein.
// Die Vorlage von XML String xml_path = ServletActionContext.getServletContext (). GetRealPath ("/mailTemplate")+"/mymailTemplete.xml"; String str = new readerXml (). Read (xml_path); Object [] obj = new Object [] {mailform.getName (), mailform.getphone (), mailform.gute_mail (), mailform.getContent (), "e_mail", "links", "rechts", "tw", "fb"}; // messageFormat kann solche Nachrichten formatieren und dann die formatierte Zeichenfolge in die entsprechende Position in der Muster -String tcontent = messageFormat.format (str, obj) einfügen; Schließlich wird die {i} in der XML -Vorlage durch OBJ [i] ersetzt.
3. Schreiben Sie eine Klasse leserxml für XML -Vorlagen
public class readerxml {public String read (String path) {String str = null; STR = Reader (Pfad); return str; } private String reader (String -Pfad) {SAXREADER reader = new SAXReader (); String str = null; try {document d = reader.read (neue Datei (Pfad)); Element E = D.GetRootelement (); Element html = e.element ("html"); str = html.asxml (); } catch (documentException e) {e.printstacktrace (); } return str; }} 4. Schließlich unsere Controller Class MailAction
Das im HTML -Format enthaltene Bild besteht darin, die eindeutige Kennung der entsprechenden Ressourcendatei mithilfe der Methode SetContentID () der Mimebodypart -Klasse festzulegen. Das MIME-Protokoll enthält das Feld Content-ID-Header im Struktur- und Organisationsformat der Nachricht, das der CID entspricht: {i} Identifier in der XML-Vorlage, wie z. B. <img src = "cid: {8}"/>
public class mailAction erweitert actionupport {private mailform mailform; public mailform getmailForm () {return mailform; } public void setmailForm (mailform mailform) {this.mailForm = MailForm; } // Ein eingebettetes Bild private Mimebodypart CREATEIMAGEMIMIMIMEBODYPART (STRING IMAGENAME) löst MessagingException aus, ununtergetriebeneCodingException {fileDataSource fds = new FileDataSource (ServletActionContext.getServletContext (). Mimebodypart mbp = neuer Mimebodypart (); Datahandler DH = New Datahandler (FDS); mbp.setDatahandler (DH); // Legen Sie die eindeutige Kennung der entsprechenden Ressourcendatei fest, dh das Feld Content-ID-Header im Struktur- und Organisationsformat des MIME-Protokolls für die Nachricht; mbp.setheader ("content-id", imagesName); mbp.setFileName (mimeutility.encodetext (fds.getName ())); MBP zurückgeben; } public String sendmail () {try {httpServletRequest request = servletActionContext.getRequest (); String pwd = "*****************"; // Senders E -Mail -Passwort -Kennwort Zeichenfolge Mailfrom = "**************@163.com"; // NetEases E -Mail -Zeichenfolge wangyifrom = mailfrom.substring (0, mailfrom.indexof ('@')); // netease -E -Mail -Username String tu = "163.com"; // Sendor -E -Mail -Domain -Name String tto = "************@qq.com"; // Die E-Mail-Adresse, die die E-Mail-Zeichenfolge erhält ttitle = "Jemand kontaktiert Sie --- von der persönlichen Website von Hu Junzheng"; // Nach seinem physischen Pfad XML Template String xml_path = servletActionContext.getServletContext (). GetRealPath ("/mailTemplate")+"/mymailTemplete.xml"; String str = new readerXml (). Read (xml_path); Object [] obj = new Object [] {mailform.getName (), mailform.getphone (), mailform.gute_mail (), mailform.getContent (), "e_mail", "links", "rechts", "tw", "fb"}; // messageFormat kann solche Nachrichten formatieren und dann die formatierte Zeichenfolge in die entsprechende Position in der Muster -String tcontent = messageFormat.format (str, obj) einfügen; Eigenschaften props = neue Eigenschaften (); props.put ("mail.smtp.host", "SMTP."+TU); // Mailbox SMTP Server -Adress -Port -Props.put ("mail.smtp.auth", "true"); // Auf diese Weise können Sie die Bestätigungssitzung S = Session.getInstance (Proprisiten) übergeben. S.SetDebug (true); Mimemessage message = new mimemessage (s); // Setzen Sie den Absender/Rezept/Sendenzeit für das Nachrichtenobjekt InternetAddress von; von = new InternetDress (Mailfrom); // Senden Sie die QQ -Mailbox -Nachricht des Absenders. InternetAddress to = New InternetAddress (TTO); // Empfänger -E -Mail -Nachricht.setRecipient (Message.RecipientType.TO); Message.Setsubject (ttitle); Message.SetSentDate (neues Datum ()); // Inhalt für Message Object Bodypart mbp = neu mimebodypart (); // Erstellen eines neuen Bodypart -Objekts mbp.setContent (tContent "," text/html; charSet = gb2312 "); // Inhalt und Format/codierende Methode für Bodypart -Objekte, verwendet, um Text- und Bilder zu kombinieren," zu kombinieren "und" Bilder "," verwandte Bilder "," verwandte Bilder "-Typ" -Typ "-Typ" -Mimemultipart -multipart -mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm. Mimemultipart ("verwandt"); // Erstellen Sie ein neues Mimemultipart -Objekt zum Speichern von Bodypart -Objekten (in der Tat mehr) mm.addbodypart (mbp); // Bodypart zum Mimemultipart -Objekt (multiple bodypart addiert werden) // Bild mm.addbodypart (createImagemimeBodypart ("E_MAILDBODYPART (" E.MAILDBODYPART ("E_MAIL)); mm.addbodypart (CreateImagemimimImBodypart ("links")); mm.addbodypart (CreateImagemimimImBodypart ("rechts"); mm.addbodypart (CreateImagemimimImBodypart ("rechts"); mm.addbodypart (CreateImagemimeBodypart ("TW")); mm.addbodypart (CreateImagemimimImBodypart ("fb"); Message.SetContent (MM); // Verwenden Sie MM als Inhalt der Nachrichtenobjektmeldung. Transport Transport = S.Gettransport ("SMTP"); Transport.Connect ("SMTP."+TU, Wangyifrom, PWD); // Das Wangyifrom hier ist der NetEase -Kontotransport des Absenders. Transport.close (); ActionContext.getContext (). GetSession (). Put ("Operations", "Die E -Mail wurde erfolgreich gesendet, bitte warten Sie geduldig auf die Antwort!"); } catch (Ausnahme e) {System.out.println (e.toString ()); ActionContext.getContext (). GetSession (). Put ("Fehler", e.toString ()); Rückgabe "Fehler"; } return "sendmail"; }}Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.