التأثير العام:
نهاية إرسال: Netease البريد الإلكتروني ؛ استلام الطرف: QQ البريد الإلكتروني.
1. الواجهة الأمامية على شبكة الإنترنت
2. يمكنك رؤية البريد الإلكتروني المرسلة من خلال رمز Java في البريد الإلكتروني Netease "إرسال"
3. يمكنك أيضًا رؤية هذا التأثير في صندوق بريد QQ
عملية التنفيذ:
1. الواجهة الأمامية على شبكة الإنترنت (تخطيط bootstrap)
<form action = "mailAction! sendmail" method = "post" name = "mailform" id = "mailformid"> <ul> <li> <liv> <span id = "basic-addon1"> الاسم: </span> <type type = "text" placeholder = "your your your name =" mailform.name id = "basic-addon2"> tel: </span> <input type = "text" placeholder = "هاتفك" name = "mailform.phone" aria describedby = "basic-addon1"> </viv> </li> <li> <li> <liv> <span id = "basic-addon2" ariA-describedby = "basic-addon1"> </viv> </li> <li style = "padding-top: 20px ؛"> <span> message: </span> <br> <br> <textarea rows = "10" name = "mailform.content" legholder = "الرجاء إدخال رسالة (لا تتجاوز 500 شخصيات) onClick = "$ ('#mailformid'). إرسال () ؛" اكتب = "زر"> أرسل بريدًا إلكترونيًا </button> </center> </li> </ul> </pong> 2. أولاً قم بإعداد قالب XML (<XML-Body> يحتوي على نص بتنسيق HTML للبريد الإلكتروني).
<؟ style = "padding: 10px 0 30px 0 ؛ #153643 ؛ 30px ؛ "> Table CellPadding =" 0 "CellPacing =" 0 " </b> </td> </tr> <tr> <td style = "padding: 20px 0 30px 0 ؛ color: #153643 ؛ font-family: arial ، sans-serif ؛ font-size: 16px ؛ line-height: 20px ؛"> {3} </td> </tr> <tbody> <tbor> <td valign = "top"> <table cellpadding = "0" cellpacing = "0"> <tbody> <td> <td> <img src = "cid: {5}" style = "display:"/> </td> <td valign = "top"> <table cellpadding = "0" cellpacing = "0"> <tbody> <td> <td> <img src = "cid: {6}" style = "display:"/>/>/td> </tbod </r> </tbody> </table> </td> </tr> </tbody> </table> </td> </tbod <tbody> <tbody> <td align = "right"> <table cellpadding = "0" cellpacing = "0"> <tbody> <tr> <td style = "font-family: arial ، sans-serif ؛ font-size: 12px ؛ font-weight: bold ؛ style = "font-family: arial ، sans-serif ؛ font-size: 12px ؛ font-weight: bold ؛"> <img src = "cid: {8}" style = "display:" block ؛ </html> </xml-body> سيكون هناك بعض المعرفات في القالب ، مثل {i} ، الجدول أو الموقع المحجوز للسلاسل ، ثم تنسيق هذه الرسائل من خلال messageformat ، ثم أدخل السلسلة المنسقة في الموقع المناسب في النمط.
// احصل على قالب string xml xml_path = servleTactionContext.getServletContext (). String str = new readerxml (). read (xml_path) ؛ Object [] obj = new Object [] {mailform.getName () ، mailform.getphone () ، mailform.gete_mail () ، mailform.getContent () ، "e_mail" ، "left" ، "right" ، "tw" ، "fb"} ؛ // يمكن لـ MessageFormat تنسيق هذه الرسائل ثم إدراج السلسلة المنسقة في الموضع المناسب في سلسلة tcontent = messageformat.format (str ، obj) ؛ أخيرًا ، يتم استبدال {i} في قالب XML بـ OBJ [i] على التوالي.
3. اكتب فئة readerxml لقوالب XML
الفئة العامة readerxml {public string read (string path) {String str = null ؛ str = reader (path) ؛ إرجاع شارع } قارئ السلسلة الخاص (مسار السلسلة) {saxreader reader = new SaxReader () ؛ سلسلة str = null ؛ حاول {document d = reader.read (ملف جديد (path)) ؛ العنصر e = d.getRootElement () ؛ العنصر html = e.Element ("html") ؛ str = html.asxml () ؛ } catch (documentException e) {E.PrintStackTrace () ؛ } إرجاع str ؛ }} 4. أخيرًا ، معامل بريد وحدة التحكم لدينا
الصورة الواردة في تنسيق HTML هي تعيين المعرف الفريد لملف المورد المقابل باستخدام طريقة setContentId () لفئة MimeBodyPart. وهذا يعني أن بروتوكول MIME يحتوي على حقل رأس معرف المحتوى في تنسيق الهيكل والتنظيم للرسالة ، والذي يتوافق مع المعرف CID: {i} في قالب XML ، مثل <img src = "cid: {8}"/> (ملاحظة: {i}
يمتد MailAction من الفئة العامة ActionSupport {private mailform mailform ؛ mailform getMailform () {return mailform ؛ } public void setMailform (mailform mailform) {this.mailform = mailform ؛ }. mimebodypart mbp = new mimebodypart () ؛ Datahandler DH = New Datahandler (FDS) ؛ MBP.SetDatahandler (DH) ؛ // قم بتعيين المعرف الفريد لملف الموارد المقابل ، أي حقل رأس معرف المحتوى في تنسيق هيكل وتنسيق بروتوكول MIME للرسالة ؛ MBP.Setheader ("محتوى معرف" ، ImageName) ؛ mbp.setFilename (mimeutility.encodetext (fds.getName ())) ؛ إرجاع MBP ؛ } السلسلة العامة sendmail () {try {httpservletrequest request = servleTactionContext.getRequest () ؛ String pwd = "******************" ؛ // Sender's البريد الإلكتروني كلمة مرور السلسلة mailfrom = "***************@163.com" ؛ // سلسلة البريد الإلكتروني الخاصة بـ Netease wangyifrom = mailfrom.substring (0 ، mailfrom.indexof ('@')) ؛ // netease email username string tu = "163.com" ؛ // Sendor's البريد الإلكتروني اسم سلسلة tto = "**************:.com" ؛ // عنوان البريد الإلكتروني الذي يتلقى سلسلة البريد الإلكتروني ttitle = "شخص ما يتصل بك --- من موقع Hu Junzheng الشخصي" ؛ // وفقًا لمسارها الفعلي ، احصل على سلسلة قالب XML XML_PATH = servleTActionContext.getServletContext (). String str = new readerxml (). read (xml_path) ؛ Object [] obj = new Object [] {mailform.getName () ، mailform.getphone () ، mailform.gete_mail () ، mailform.getContent () ، "e_mail" ، "left" ، "right" ، "tw" ، "fb"} ؛ // يمكن لـ MessageFormat تنسيق هذه الرسائل ثم إدراج السلسلة المنسقة في الموضع المناسب في سلسلة tcontent = messageformat.format (str ، obj) ؛ خصائص الدعائم = خصائص جديدة () ؛ props.put ("mail.smtp.host" ، "smtp. S.SetDebug (صواب) ؛ رسالة mimemessage = جديد mimemessage (s) ؛ // قم بتعيين المرسل/الوصفة/إرسال وقت لكائن الرسالة InternetAddress من ؛ من = New InternetAddress (MailFrom) ؛ // إرسال رسالة البريد QQ للمرسل. InternetAddress to = new InternetAddress (TTO) ؛ // message message.setRecipient (message.recipienttype.to ، إلى) message.setsubject (ttitle) ؛ message.SetSentDate (Date ()) ؛ // تعيين محتوى لكائن الرسالة bodypart mbp = new mimebodypart () ؛ // إنشاء كائن bodypart جديد mbp.setcontent (tcontent ، "text/html ؛ charset = gb2312") mimemultipart ("ذات الصلة") ؛ // إنشاء كائن mimemultipart جديد لتخزين كائنات bodypart (في الواقع ، متعددة) mm.addbodypart (mbp) ؛ Mm.AddbodyPart (CreateImagemimeBodyPart ("Left")) ؛ Mm.AddbodyPart (CreateImagemimeBodyPart ("Right")) ؛ Mm.AddbodyPart (CreateImagemimeBodyPart ("Right")) ؛ Mm.AddbodyPart (CreateImagemImeBodyPart ("TW")) ؛ Mm.AddbodyPart (CreateImagemImeBodyPart ("FB")) ؛ message.setContent (mm) ؛ // استخدم mm كمحتوى رسالة كائن الرسالة. savechanges () ؛ نقل النقل = S.GetTransport ("SMTP") ؛ Transport.connect ("SMTP."+TU ، Wangyifrom ، PWD) ؛ // Wangyifrom هنا هو نقل حساب Netease للمرسل. transport.close () ؛ ActionContext.getContext (). getSession (). وضع ("العمليات" ، "تم إرسال البريد الإلكتروني بنجاح ، يرجى الانتظار بصبر للرد!") ؛ } catch (استثناء e) {system.out.println (e.toString ()) ؛ ActionContext.getContext (). إرجاع "الأخطاء" ؛ } إرجاع "sendmail" ؛ }}ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.