全体的な効果:
送信の終わり:Netease電子メール。受信側:QQメール。
1。Webフロントエンド
2。Neteaseメール「送信」でJavaコードを介して送信された電子メールを見ることができます
3. QQメールボックスにこの効果も確認できます
実装プロセス:
1。Webフロントエンド(ブートストラップレイアウト)
<form action = "mailaction!sendmail" method = "post" name = "mailform" id = "mailformid"> <ul> <li> <li> <span id = "basic-addon1"> name:</span> <入力タイプ= "テキスト" Placeholder = "your name" your name = "mailform.name" aria-described = "basic-addon1 </</< id = "Basic-Addon2"> tel:</span> <入力タイプ= "Text" Placeholder = "Your Phone name" name "name" aria-describedby = "basic-addon1"> </div> </li> <li> <li> <li> <li> <li> <li> <li> aria-describedby = "Basic-Addon1"> </div> </li> <li style = "padding-top:20px;"> <span>メッセージ:</span> <br> <br> <br> <br> <br> <br> <br> <"10" name = "mailform.content" placeholder = " onclick = "$( '#mailformid')。submit();" type = "button">電子メールを送信</button> </center> </li> </ul> </form>
2。最初にXMLテンプレートを準備します(<xml-body>には、電子メールのHTML形式のテキストが含まれています)。
<?xml version = "1.0" encoding = "utf-8"?> <! - htmlがスペースを除外しないようにスペースを変更します - > <xml-body> <html> </head> <body style = "margin:0; padding:0; style = "padding:10px 0 30px 0;"> <table align = "center" cellpadding = "0" cellpacing = "0" style = "border:" border: "border-ollapse:collapse;"> <tdoby> <td align = "center" bgcolor = " #153643:28px:font-family:sans-serif; <Table CellPadding = "0" CellPacing = "0"> <tbody> <tr> <td style = "color:#153643; font-family:arial、sans-serif; font-size:24px;"> <b>送信者:{0} </td> </tr> <tr> <td style = "padding:20px 0 30px 0; color:#153643; font-family:arial、sans-serif; font-size:16px; line-height:20px; <TOBODY> <TR> <TD VALIGN = "TOP"> <Table CellPadding = "0" cellpacing = "0"> <tbody> <tr> <td> <img src = "cid:{5}" style = "display:block;"/> </td> </tbody> </table> </td> <td style = " </td> <td valign = "top"> <table cellpadding = "0" cellpacing = "0"> <tbody> <tr> <td> <img src = "cid:{6}" style = "display:block;"/> </td> </tr> </tbody> </tr> </tbody> </table> </td> </tobody> </tbody> </table> </td> </tr> </tbody> </table> </td> </tr> <tr> <td bgcolor = "#ee4c50" style = "padding:30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px 30px =" <TOBODY> <TR> <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;"/> </td> </tbody> </table> </td> </tbody> </html> </xml-body>テンプレートには、{i}、テーブル、または弦の場所などの識別子があり、そのようなメッセージをmessageFormatを介してフォーマットし、フォーマットされた文字列をパターンの適切な場所に挿入します。
// XML文字列xml_path = servletactionContext.getServletContext()。getRealPath( "/mailTemplate")+"/mymailtemplete.xml"; 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)に適切な位置に挿入できます。最後に、XMLテンプレート内の{i}はそれぞれOBJ [i]に置き換えられます。
3. XMLテンプレートのクラスReaderXMLを書き込みます
public class readerxml {public string read(string path){string str = null; str = reader(path); strを返します。 } private string reader(string path){saxreader reader = new saxreader();文字列str = null; try {document d = reader.read(new file(path));要素e = d.getRootelement();要素html = e.element( "html"); str = html.asxml(); } catch(documentexception e){e.printstacktrace(); } return str; }} 4.最後に、コントローラークラスのメールで
HTML形式に含まれる画像は、MimeBodyPartクラスのSetContentID()メソッドを使用して、対応するリソースファイルの一意の識別子を設定することです。つまり、MIMEプロトコルには、メッセージの構造と組織形式にコンテンツIDヘッダーフィールドがあります。これは、xmlテンプレートのCID:{i}識別子、<img src = "cid:{8}"/>(注:{i}は、メッセージファーフォームを介して対応する文字列に置き換えられます。
public class Mailactionはactionsupportを拡張します{private mailform mailform; public Mailform getMailform(){return mailform; } public void setMailform(mailform mailform){this.mailform = mailform; } //組み込み画像を追加するプライベートMimeBodyPart CreateImageMimeBodyPart(String Imagename)THROWS MESSEGSECTINCETE、UNSUPPORTEDENCODINGEXCEPTION {fileDataSource FDS = new FileDataSource(ServletactionContext.getServletContext()。 MimeBodyPart MBP = new MimeBodyPart(); DataHandler DH =新しいDataHandler(FDS); MBP.SetDataHandler(DH); //対応するリソースファイルの一意の識別子、つまり、メッセージのMIMEプロトコルの構造と組織形式のコンテンツIDヘッダーフィールドを設定します。 mbp.setheader( "content-id"、imagename); mbp.setfileName(mimeutility.encodetext(fds.getName())); MBPを返します。 } public string sendmail(){try {httpservletrequest request = servletactioncontext.getRequest(); string pwd = "****************"; //送信者の電子メールパスワード文字列mailfrom = "*****************@163.com"; // neteaseの電子メール文字列wangyifrom = mailfrom.substring(0、mailfrom.indexof( '@')); // netease email username string tu = "163.com"; // Sendorの電子メールドメイン名文字列TTO = "************@qq.com"; //電子メール文字列ttitleを受信するメールアドレス= "誰かがあなたに連絡します--- Hu Junzhengの個人Webサイトから"; //その物理的なパスに従って、XMLテンプレート文字列XML_PATH = ServleTACTIONCONTEXT.GETSERVLETCONTEXT()。GETREALPATH( "/MailTemplate")+"/mymailtemplete.xml"; 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)に適切な位置に挿入できます。 Properties Props = new Properties(); props.put( "mail.smtp.host"、 "smtp。"+tu); // mailbox smtp serverアドレスポートpropss.put( "mail.smtp.auth"、 "true"); //この方法で、検証セッションs = session.getinstance(props); S.SetDebug(true); mimemessage message = new Mimemessage(s); //送信者/レシピを設定する/メッセージオブジェクトの時間を送信します。 from = new InternetAddress(MailFrom); //送信者のQQメールボックスmessage.setfrom(from); InternetAddress to = new InternetAddress(TTO); //受信者の電子メールmessage.setRecipient(message.RecipientType.to、to); message.setsubject(ttitle); message.setsentdate(new date()); //メッセージオブジェクトのコンテンツを設定するボディパートMBP = new MimeBodyPart(); //新しいボディパートオブジェクトMBP.SetContent(tcontent、 "text/html; charset = gb2312"); mimemultipart( "related"); //新しいMimemultipartオブジェクトを作成して、ボディパートオブジェクト(実際、複数)mm.addbodypart(mbp)を保存します。 mm.adddodypart(createimagemimebodypart( "left")); mm.adddodypart(createimagemimebodypart( "right")); mm.adddodypart(createimagemimebodypart( "right")); mm.adddodypart(createimagemimebodypart( "tw")); mm.adddodypart(createimagemimebodypart( "fb")); message.setContent(mm); // mmをメッセージオブジェクトMessage.saveChanges();輸送輸送= S.GetTransport( "SMTP"); Transport.Connect( "smtp。"+tu、wangyifrom、pwd); //ここにあるwangyifromは、送信者のneteaseアカウントTransport.sendmessage(message、message.getallrecipients())です。 Transport.Close(); ActionContext.getContext()。getSession()。put( "Operations"、 "電子メールは正常に送信されました。返信を辛抱強く待ってください!"); } catch(Exception e){System.out.println(e.toString()); ActionContext.getContext()。getSession()。put( "errors"、e.toString()); 「エラー」を返します。 } "sendmail"を返します。 }}上記はこの記事に関するものです。すべての人の学習に役立つことを願っています。