전반적인 효과 :
발신 종료 : Netease 이메일; 수신 종료 : QQ 이메일.
1. 웹 프론트 엔드
2. Netease 이메일 "Send"에서 Java 코드를 통해 전송 된 이메일을 볼 수 있습니다.
3. QQ 사서함 에서이 효과를 볼 수 있습니다.
구현 프로세스 :
1. 웹 프론트 엔드 (부트 스트랩 레이아웃)
<form action = "mailaction! sendmail"method = "post"name = "mailform"id = "mailformid"> <ul> <li> <div> <span id = "basic-addon1"> name : </span> <input type = "text"placeholder = "name"name = "mail.name"aria-describedby = "basic-addon1"> id = "Basic-Addon2"> 전화 : </span> <input type = "text"placeholder = "당신의 전화"name = "mailform.phone"aria-describedby = "Basic-Addon1"> </div> </li> <li> <div> <span id = "Basic-Addon2"> 이메일 : </span> <input type = "text"placeholder " 이름 = "mailform.e_mail"aria-describedby = "Basic-Addon1"> </div> </li> <li style = "padding-top : 20px;"> <br> amsmight : </span> <br> <br> <Textarea rows = "10"name = "mailform.content"placeholder = "메시지를 초과하지 않음). <li> <center> <버튼 onclick = "$ ( '#mailformid'). submit ();" type = "button"> 이메일 보내기 </button> </center> </li> </ul> </form>
2. 먼저 XML 템플릿을 준비합니다 (<xml-body>는 이메일에 대한 html 형식의 텍스트를 포함).
<? xml version = "1.0"alcoding = "utf-8"?> <!-HTML이 공백을 걸러 내지 않도록 공간을 최대 공간으로 변경합니다 .-> <xml-body> <html> <head> </head> <body style = "Margin : 0; 패딩 : 0;"> <Table CellPadding = "0"0 "0"> <tbocing = "0; 스타일 = "패딩 : 10px 0 30px 0;"> <테이블 align = "Center"CellPadding = "0"셀 패키는 = "0"스타일 = "테두리 : 1px solid #cccccc; border-collapse : collapse;"> <tbody> <td> <td align = "center"bgcolor = " #70bbd9" " #70bbd9" " #70bbd9". #153643; 글꼴 크기 : FONT-WEIGHT : ARIAL, SANS-SERIF; 30px; "> <테이블 셀 패딩 ="0 "CellPacing ="0 "> <tbody> <td> <색상 : #153643; </b> </td> </tr> <tr> <td style = "패딩 : 20px 0 30px 0; 컬러 : #153643; 글꼴-파밀 : Arial, Sans-serif; font-size : 16px; line-height : 20px;"> {3} </td> </tr> <td> <테이블 Cellpad = ""0pad = <tbody> <td> <td valign = "top"> <table cellpadding = "0"cellPacing = "0"> <tbody> <tr> <td> <img src = "cid : {5}"style = "display :"/> </td> </tbody> </td> <td style = "font-size : 0; </td> <td valign = "top"> <table cellpadding = "0"cellPacing = "0"> <tbody> <tr> <img src = "cid : {6}"style = "display : block;"/> </td> </td> </td> </td> </td> </td> </td> </td> </td> </td> </tr> </tbody> </table> </td> </td> </tbody> </table> </td> </td> </tbody> </table> </td> </tr> <tr> <td bgcolor = "#ee4c50"style = "패딩 : 30px 30px 30px; <tbody> <tr> <td 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}. <td style = "font-family : arial, sans-serif; font-size : 12px; font-weight : bold;"> <img src = "cid : {8}"style = "display :"/> </td> </tbody> </table> </td> </tbody> </td> </tbody> </tbody> </td> </td> </td> </td> </td> </td> </td> </td> </td> </td> </td> </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", "왼쪽", "오른쪽", "tw", "fb"}; // MessageFormat은 해당 메시지를 형식화 한 다음 패턴 문자열에서 적절한 위치에 형식의 문자열을 삽입 할 수 있습니다. tcontent = messageformat.format (str, obj); 마지막으로, XML 템플릿의 {i}는 각각 OBJ [i]로 대체됩니다.
3. XML 템플릿에 대한 클래스 readerxml을 작성하십시오
공개 클래스 readerxml {public String read (문자열 경로) {String str = null; str = reader (경로); Return str; } private String reader (String Path) {saxReader reader = new SaxReader (); 문자열 str = null; try {document d = reader.read (새 파일 (path)); 요소 e = d.getRootElement (); 요소 html = e.element ( "html"); str = html.asxml (); } catch (DocumentException e) {e.printstacktrace (); } return str; }} 4. 마지막으로, 우리의 컨트롤러 클래스 메일 션
HTML 형식에 포함 된 이미지는 MimeBodyPart 클래스의 setContentId () 메소드를 사용하여 해당 리소스 파일의 고유 식별자를 설정하는 것입니다. 즉, MIME 프로토콜에는 메시지의 구조 및 구성 형식에 Content-ID 헤더 필드가 있으며 CID : {i} XML 템플릿의 식별자에 해당합니다. 예 : <img src = "cid : {8}"/> (참고 : {i}는 MessageFormat.format을 통해 해당 문자열로 교체됩니다.
공개 클래스 메일 션은 ActionSupport {private mailform mailform; public mailform getmailform () {return mailform; } public void setmailform (mailform mailform) {this.mailform = mailform; } // 임베디드 이미지 추가 개인 MimeBodyPart CreateImagemimeBodyPart (String imageName)는 메시징 지출, UnSupportedEncodingException {filedatasource fds = new FileDatasource (servletactionContext.getServletContext ( "/image") + " + imagename +"); MimebodyPart MBP = New MimeBodyPart (); Datahandler DH = 새로운 Datahandler (FDS); MBP.SetDatahandler (DH); // 해당 리소스 파일의 고유 식별자, 즉 메시지에 대한 MIME 프로토콜의 구조 및 구성 형식의 Content-ID 헤더 필드를 설정합니다. mbp.setheader ( "content-id", imageName); mbp.setfilename (mimeUtility.encodetext (fds.getName ())); 반환 MBP; } public String sendMail () {try {httpservletRequest request = servletActionContext.getRequest (); 문자열 pwd = "********************"; // 발신자의 이메일 비밀번호 문자열 mailfrom = "*********************"; // netEase의 이메일 문자열 wangyifrom = mailfrom.substring (0, mailfrom.indexof ( '@')); // netease 이메일 username string tu = "163.com"; // Sendor의 이메일 도메인 이름 String tto = "*************@qq.com"; // 전자 메일 문자열을받는 이메일 주소 ttitle = "누군가가 당신에게 연락합니다 ------- Hu Junzheng의 개인 웹 사이트에서"; // 물리적 경로에 따라 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", "왼쪽", "오른쪽", "tw", "fb"}; // MessageFormat은 해당 메시지를 형식화 한 다음 패턴 문자열에서 적절한 위치에 형식의 문자열을 삽입 할 수 있습니다. tcontent = messageformat.format (str, obj); 속성 propss = 새로운 속성 (); props.put ( "mail.smtp.host", "smtp."+tu); // mailbox smtp 서버 주소 props.put ( "mail.smtp.auth", "true"); // verification session s = session.getinstance (propss); S.SetDebug (True); mimemessage 메시지 = 새로운 Mimemessage (들); // 메시지에 대한 발신자/레시피/전송 시간을 객체 internetAddress에서 설정합니다. From = new InternetAddress (MailFrom); // 발신자의 QQ 사서함 메시지를 보내십시오. InternetAddress to = new InternetAddress (tto); // 수신자의 이메일 메시지. message.setsubject (ttitle); message.setsentDate (새 날짜 ()); // 메시지 객체에 대한 내용 설정 BodyPart MBP = New MimeBodyPart (); // 새 BodyPart 객체 MBP.SetContent (tcontent, "text/html; charset = gb2312"); // bodypart 객체를 설정하고 형식/인코딩 방법을 빗질하는 텍스트 및 그림 "annifice"relanting "relanting"related multipart 객체 " mimemultipart ( "관련"); // bodypart 객체를 저장하기 위해 새로운 mimemultipart 객체를 만듭니다 (실제로, 다중) mm.addbodypart (mbp); // mimemultipart 객체에 BodyPart를 추가합니다 (여러 bodypart가 추가 될 수 있음) // 이미지 추가 mm.AddBodyPart (createImagemimeBodyPart ( "e_mail")); mm.AddbodyPart (CreateImagemimeBodyPart ( "왼쪽")); mm.AddbodyPart (CreateImagemimeBodyPart ( "오른쪽")); mm.AddbodyPart (CreateImagemimeBodyPart ( "오른쪽")); mm.AddbodyPart (CreateImagemimeBodyPart ( "TW")); mm.AddbodyPart (CreateImagemimeBodyPart ( "FB")); message.setContent (mm); // mm을 메시지 객체의 내용으로 사용합니다. 전송 전송 = S.GetTransport ( "SMTP"); 송신 .connect ( "smtp."+tu, wangyifrom, pwd); // wangyifrom은 여기에 발신자의 netease 계정 전송입니다 .SendMessage (message, message.getallRecipients ()); 송신 .close (); ActionContext.getContext (). getSession (). put ( "조작", "이메일이 성공적으로 전송되었습니다. 참을성있게 답장을 기다리십시오!"); } catch (예외 e) {system.out.println (e.toString ()); ActionContext.getContext (). getSession (). put ( "오류", e.toString ()); "오류"를 반환합니다. } return "sendmail"; }}위의 내용은이 기사에 관한 모든 것입니다. 모든 사람의 학습에 도움이되기를 바랍니다.