ผลกระทบโดยรวม:
Endering End: อีเมล NETEASE; การได้รับสิ้นสุด: อีเมล QQ
1. ส่วนหน้าเว็บ
2. คุณสามารถดูอีเมลที่ส่งผ่านรหัส Java ในอีเมล netease "ส่ง"
3. คุณยังสามารถเห็นเอฟเฟกต์นี้ในกล่องจดหมาย QQ
กระบวนการดำเนินการ:
1. Web Front-end (เค้าโครง bootstrap)
<form action = "MailAction! sendMail" method = "post" name = "mailform" id = "MailFormId"> <ul> <li> <div> <span id = "basic-addon1"> ชื่อ: </span> <อินพุต type = "text" placeHolder = "ชื่อของคุณ" name = "mailform.name id = "basic-addon2"> โทรศัพท์: </span> <อินพุต type = "text" placeholder = "โทรศัพท์ของคุณ" name = "mailform.phone" aria-describedby = "basic-addon1"> </div> </li> <li> aria-describedby = "basic-addon1"> </div> </li> <li style = "padding-top: 20px;"> <span> ข้อความ: </span> <br> <br> <br> <br> <br> <br> <br> onclick = "$ ('#mailformid'). submit ();" type = "ปุ่ม"> ส่งอีเมล </button> </enter> </li></ul> </form> 2. ก่อนเตรียมเทมเพลต XML (<xml-body> มีข้อความในรูปแบบ HTML สำหรับอีเมล)
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <!-เปลี่ยนช่องว่างเป็นช่องว่างแบบเต็มความกว้างเพื่อให้แน่ใจว่า html จะไม่กรองช่องว่าง-> <xml-body> <html> <head> </head> style = "padding: 10px 0 30px 0;"> <table allign = "center" cellpadding = "0" cellpacing = "0" style = "border: 1px solid #cccccc; การล่มสลายของชายแดน: การล่มสลาย;"> <tbody> <tr> #153643; <table cellpadding = "0" cellpacing = "0"> <tbody> <tr> <td style = "สี: #153643; Font-Family: Arial, Sans-Serif; Font-Size: 24px;"> <b> ผู้ส่ง: {0} <br/> โทรศัพท์: {1} <br/ </tr> <tr> <td style = "การตอบสนอง: 20px 0 30px 0; สี: #153643; Font-family: Arial, Sans-serif; Font-Size: 16px; Line-Height: 20px;"> {3} </td> </tr> <td> <td> valign = "top"> <table cellpadding = "0" cellpacing = "0"> <tbody> <tr> <td> <img src = "cid: {5}" style = "แสดง: block;"/> </td> </tbody> valign = "top"> <table cellpadding = "0" cellpacing = "0"> <tbody> <tr> <td> <img src = "cid: {6}" style = "display: block;"/> </td> </tbody> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> </tbody> </tbody> </td> </tr> <tr> <td bgcolor = "#ee4c50" style = "padding: 30px 30px 30px 30px 30px <tbody> <tr> <td align = "ขวา"> <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 = "Font-Family: Arial, Sans-Serif; Font-Size: 12px; Font-Weight: bold;"> <img src = "cid: {8}" style = "display: block;"/> </td> </tbody> </html> </xml-body> จะมีตัวระบุบางตัวในเทมเพลตเช่น {i}, ตารางหรือตำแหน่งที่สงวนไว้สำหรับสตริงแล้วจัดรูปแบบข้อความดังกล่าวผ่าน MessageFormat จากนั้นแทรกสตริงที่จัดรูปแบบลงในตำแหน่งที่เหมาะสมในรูปแบบ
// รับเทมเพลตของสตริง XML xml_path = servletactionContext.getServletContext (). getRealPath ("/mailTemplate")+"/myMailTemplete.xml"; string str = new Readerxml (). อ่าน (xml_path); Object [] obj = วัตถุใหม่ [] {mailform.getName (), mailform.getphone (), mailform.gete_mail (), mailform.getContent (), "e_mail", "ซ้าย", "ขวา", "tw", "fb"}; // MessageFormat สามารถจัดรูปแบบข้อความดังกล่าวจากนั้นแทรกสตริงที่จัดรูปแบบลงในตำแหน่งที่เหมาะสมในสตริงรูปแบบ tContent = MessageFormat.Format (STR, OBJ); ในที่สุด {i} ในเทมเพลต XML จะถูกแทนที่ด้วย obj [i] ตามลำดับ
3. เขียนคลาส readerxml สำหรับเทมเพลต XML
คลาสสาธารณะ readerxml {การอ่านสตริงสาธารณะ (เส้นทางสตริง) {string str = null; str = reader (เส้นทาง); return str; } ตัวอ่านสตริงส่วนตัว (เส้นทางสตริง) {saxReader reader = new SaxReader (); string str = null; ลอง {document d = reader.read (ไฟล์ใหม่ (พา ธ )); องค์ประกอบ e = d.getRootelement (); องค์ประกอบ html = e.element ("html"); str = html.asxml (); } catch (documentException e) {e.printStackTrace (); } return str; - 4. ในที่สุดการทำจดหมายของคลาสคอนโทรลเลอร์ของเรา
รูปภาพที่มีอยู่ในรูปแบบ HTML คือการตั้งค่าตัวระบุที่ไม่ซ้ำกันของไฟล์ทรัพยากรที่สอดคล้องกันโดยใช้เมธอด setContentId () ของคลาส mimebodypart นั่นคือโปรโตคอล MIME มีฟิลด์ส่วนหัวของ Content-ID ในโครงสร้างและรูปแบบองค์กรของข้อความซึ่งสอดคล้องกับ CID: {i} ตัวระบุในเทมเพลต XML เช่น <img Src = "CID: {8}"/> (หมายเหตุ: {i}
MailAction คลาสสาธารณะขยายการกระทำที่มีรูปแบบ {รูปแบบ Mail -Mail -Mail -Mail รูปแบบ mailform public getMailform () {return mailform; } โมฆะสาธารณะ setMailform (mailform mailform) {this.mailform = mailform; } // เพิ่มภาพที่ฝังตัวส่วนตัว mimebodypart createimagemimebodypart (string imagename) โยน messagingexception, unsupportencodexception {filedataSource fds = new filedataSource (servletactionContext.getServletContext () mimebodypart mbp = new mimebodypart (); Datahandler DH = ใหม่ Datahandler (FDS); MBP.SetDatahandler (DH); // ตั้งค่าตัวระบุที่ไม่ซ้ำกันของไฟล์ทรัพยากรที่เกี่ยวข้องนั่นคือฟิลด์ส่วนหัวของ Content-ID ในโครงสร้างและรูปแบบองค์กรของโปรโตคอล MIME สำหรับข้อความ mbp.setheader ("content-id", imageName); mbp.setfilename (mimeutility.encodetext (fds.getName ())); คืน MBP; } สตริงสาธารณะ sendmail () {ลอง {httpservletRequest Request = servletActionContext.getRequest (); String pwd = "******************"; // รหัสผ่านอีเมลของผู้ส่งสตริงสตริง from = "********************************************* // สตริงอีเมลของ NetEase wangyifrom = mailfrom.substring (0, mailfrom.indexof ('@')); // netease อีเมลชื่อผู้ใช้สตริง tu = "163.com"; // ชื่อโดเมนอีเมลของผู้ส่งชื่อสตริง tto = "************@qq.com"; // ที่อยู่อีเมลที่ได้รับสตริงอีเมล ttitle = "มีคนติดต่อคุณ --- จากเว็บไซต์ส่วนตัวของ Hu Junzheng"; // ตามพา ธ ทางกายภาพรับสตริงเทมเพลต XML XML_Path = ServleTactionContext.getServletContext (). getRealPath ("/MailTemplate")+"/myMailTemplete.xml"; string str = new Readerxml (). อ่าน (xml_path); Object [] obj = วัตถุใหม่ [] {mailform.getName (), mailform.getphone (), mailform.gete_mail (), mailform.getContent (), "e_mail", "ซ้าย", "ขวา", "tw", "fb"}; // MessageFormat สามารถจัดรูปแบบข้อความดังกล่าวจากนั้นแทรกสตริงที่จัดรูปแบบลงในตำแหน่งที่เหมาะสมในสตริงรูปแบบ tContent = MessageFormat.Format (STR, OBJ); คุณสมบัติอุปกรณ์ประกอบฉาก = คุณสมบัติใหม่ (); props.put ("mail.smtp.host", "smtp."+tu); // mailbox smtp เซิร์ฟเวอร์ที่อยู่พอร์ต props.put ("mail.smtp.auth", "true"); // ด้วยวิธีนี้คุณสามารถผ่านเซสชันการตรวจสอบ S.SetDebug (จริง); ข้อความ mimemessage = mememessage ใหม่; // ตั้งค่าผู้ส่ง/สูตร/ส่งเวลาสำหรับวัตถุข้อความ InternetAddress จาก; จาก = new InternetAddress (MailFrom); // ส่งข้อความกล่องจดหมาย QQ ของผู้ส่ง SESTFROM (จาก); InternetAddress to = new InternetAddress (tto); // ข้อความอีเมลของผู้รับ SetRecipient (message.recipientType.to, ถึง); message.setSubject (ttitle); message.setSentDate (วันที่ใหม่ ()); // ตั้งค่าเนื้อหาสำหรับ Object Object Bodypart mbp = new MimeBodyPart (); // สร้างวัตถุ bodypart ใหม่ mbp.setContent (tcontent, "text/html; charset = gb2312"); // ตั้งค่าเนื้อหาและรูปแบบ/การเข้ารหัส mimemultipart ("เกี่ยวข้อง"); // สร้างวัตถุ mimemultipart ใหม่เพื่อจัดเก็บวัตถุ bodypart (ในความเป็นจริงหลาย ๆ ) mm.addbodypart (mbp); // เพิ่ม bodypart ลงในวัตถุ mimememaleipart mm.addbodypart (createimagemimebodypart ("ซ้าย")); mm.addbodypart (createimagemimebodypart ("ขวา")); mm.addbodypart (createimagemimebodypart ("ขวา")); mm.addbodypart (createimagemimebodypart ("tw")); mm.addbodypart (createimagemimebodypart ("fb")); message.setContent (mm); // ใช้ mm เป็นเนื้อหาของข้อความข้อความข้อความ Savechanges (); การขนส่งการขนส่ง = S.GetTransport ("SMTP"); Transport.connect ("Smtp."+Tu, Wangyifrom, Pwd); // Wangyifrom นี่คือการขนส่งบัญชี NetEase ของผู้ส่ง SENDMESSAGE (ข้อความ, message.getAllRecipients ()); Transport.close (); ActionContext.getContext (). getSession (). ใส่ ("การดำเนินการ", "อีเมลถูกส่งสำเร็จโปรดรออย่างอดทนสำหรับการตอบกลับ!"); } catch (exception e) {system.out.println (e.toString ()); ActionContext.getContext (). getSession (). ใส่ ("ข้อผิดพลาด", e.toString ()); กลับ "ข้อผิดพลาด"; } return "sendmail"; -ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน