Efeito geral:
Remesing final: email NetEase; Recebendo final: QQ email.
1. Front-end da web
2. Você pode ver o e -mail enviado pelo código Java no e -mail da NetEase "enviado"
3. Você também pode ver esse efeito na caixa de correio QQ
Processo de implementação:
1. Front-end da web (layout de bootstrap)
<form action = "MailAction! Sendmail" Method = "post" name = "MailForm" id = "MailFormid"> <ul> <li> <div> <span id = "Basic-addon1"> Nome: </span> <input type = "text" Baskholder = "seu nome" Nome = "Mailform.name" ARIA-Descredby = " id = "Basic-addon2"> Tel: </span> <input type = "text" stakeholder = "seu telefone" name = "mailform.phone" aria-descriptedby = "Basic-addon1"> </div> </li> <li> <li> <div> <span id = "Basic-addon2"> email: </span> name = "MailForm.E_MAIL" ARIA-DESCRIBEDBY = "BASIC-ADDON1"> </div> </li> <li style = "Padding-top: 20px;"> <pan> mensagem: </span> <br> <br> <tomattarea linhas = "10 name =" Mailform.content ") <brounder =" por favor (não, (não-span> <br) <br). <li> <Center> <botão onclick = "$ ('#MailFormid'). submmit ();" type = "Button"> Enviar email </botão> </fenter> </li> </ul> </form> 2. Primeiro, prepare um modelo XML (<xml-Body> contém texto no formato HTML para o email).
<? xml versão = "1.0" Encoding = "utf-8"?> <!-Altere os espaços para espaços de largura completa para garantir que o HTML não filtre os espaços-> <xml-body> <html> <head> </head> <style = "margin: 0; Padding: 0; style = "preenchimento: 10px 0 30px 0;"> <tabela align = "center" CellPadding = "0" CellPacing = "0" style = "borda: 1px sólido #cccccc; borda-colapso: colapso;"> <tbody> <tr> <td align = "" "bgcolor =" 70BBBBD "" 70BBBD "0,70bbd: #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 = "preenchimento: 20px 0 30px 0; cor: #153643; font-family: Arial, sans-serif; font-size: 16px; linha-hEAT: 20px;"> {3} </td> </tr> <tr> <t> <tabla; valign = "top"> <tabela CellPadding = "0" CellPacing = "0"> <Tbody> <tr> <td> <img src = "cid: {5}" style = "display: block;"/> </td> </tbody> </tabela> </td> <td style = "FO-size: 0; <tabela CellPadding = "0" CellPacing = "0"> <Tbody> <tr> <td> <img src = "cid: {6}" style = "display: block;"/> </td> </tr> </tbody> </ table> </td> </trd> <//</tum> </tdbody> </tum> </tkbod </td> </tr> </tbody> </ table> </td> </tr> </tbody> </itlast> </td> </tr> <tr> <td bgcolor = "#e4c50" 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 = "" ARIAL, Sans-serif; </html> </xml-body> Haverá alguns identificadores no modelo, como {i}, tabela ou localização reservada para strings, e formate essas mensagens através do messageFormat e, em seguida, insira a sequência formatada no local apropriado no padrão.
// Obtenha o modelo de xml string xml_path = servletActionContext.getServletContext (). GetRealPath ("/MailTemplate")+"/mymailtemplete.xml"; String str = novo leitorxml (). Leia (xml_path); Object [] obj = new Object [] {MailForm.getName (), MailForm.getphone (), MailForm.gete_mail (), MailForm.getContent (), "e_mail", "Esquerda", "Direita", "Tw", "FB"}; // MessageFormat pode formatar essas mensagens e, em seguida, inserir a sequência formatada na posição apropriada na sequência de padrões tcontent = messageFormat.format (str, obj); Finalmente, o {i} no modelo XML é substituído pelo obj [i], respectivamente.
3. Escreva um leitor de classe para modelos XML
public class Readerxml {public String Read (String Path) {String str = null; str = leitor (caminho); retornar str; } Private String Reader (String Path) {SaxReader Reader = new SaxReader (); String str = null; tente {document d = reader.read (novo arquivo (caminho)); Elemento e = d.GeLeROOTELEMENT (); Elemento html = e.Element ("html"); str = html.asxml (); } catch (documentException e) {e.printStackTrace (); } retornar str; }} 4. Finalmente, nossa classe de classe controladora
A imagem contida no formato HTML é definir o identificador exclusivo do arquivo de recursos correspondente usando o método setContentId () da classe MimebodyPart. Ou seja, o protocolo MIME possui o campo de cabeçalho do ID de conteúdo no formato de estrutura e organização da mensagem, que corresponde ao identificador CID: {i} no modelo XML, como <img src = "cid: {8}"/> (note: {i} será substituído pela string correspondente:
classe pública MailAction estende o ACOCTIONSupport {private MailForm MailForm; public MailForm getMailForm () {return MailForm; } public void SetmailForm (MailForm MailForm) {this.mailForm = MailForm; } // Adicione uma imagem incorporada MimeBodyPort CreateImageMimeBodyPart (String Imagename) lança MessagingException, UnsupportEdEncodingException {filedataSource fds = new FileDataSource (ServLeActionContext.getSlevLeContext (). MimeBodyPart MBP = new MimeBodyPart (); Datahandler DH = new Datahandler (FDS); mbp.setDatahandler (DH); // Defina o identificador exclusivo do arquivo de recurso correspondente, ou seja, o campo de cabeçalho do ID de conteúdo no formato de estrutura e organização do protocolo MIME para a mensagem; mbp.setheader ("content-id", imageName); mbp.setFilename (Mimeutility.EncodeText (fds.getName ())); retornar MBP; } public string sendmail () {try {httpServletRequest request = servletActionContext.getRequest (); String pwd = "******************"; // e -mail do remetente String string Mailfrom = "***************@163.com"; // string de e -mail da NetEase wangyifrom = correiofrom.substring (0, correiofrom.indexof ('@')); // NetEase por e -mail nome de usuário string tu = "163.com"; // Nome de domínio de e -mail do sendor String tto = "************@qq.com"; // O endereço de e-mail que recebe a string de email ttitle = "Alguém entra em contato com você --- do site pessoal de Hu Junzheng"; // De acordo com seu caminho físico, obtenha o modelo XML String xml_path = servletActionContext.getServletContext (). GetRealPath ("/MailTemplate")+"/mymailtemplete.xml"; String str = novo leitorxml (). Leia (xml_path); Object [] obj = new Object [] {MailForm.getName (), MailForm.getphone (), MailForm.gete_mail (), MailForm.getContent (), "e_mail", "Esquerda", "Direita", "Tw", "FB"}; // MessageFormat pode formatar essas mensagens e, em seguida, inserir a sequência formatada na posição apropriada na sequência de padrões tcontent = messageFormat.format (str, obj); Propriedades Props = new Properties (); props.put ("Mail.smtp.host", "smtp."+tu); // caixa de correio SMTP Endereço da porta ProPs.put ("Mail.smtp.auth", "true"); // dessa maneira, você pode passar nas sessões de verificação s = session.getInstance (props); s.setdebug (verdadeiro); Mensagem Mimemessage = novo (s) Mimemessage (s); // defina o remetente/receita/envio tempo para o objeto de mensagem internetddress de; de = new InternetAddress (correio); // Envie o QQ Caixa de correio do remessa.setFrom (de); InternetDrED para = new InternetAddress (TTO); // Mensagem de email do destinatário.SetRecipient (message.recipientType.to, para); message.SetSubject (ttitle); message.SetSentDate (new Date ()); // Defina o conteúdo da mensagem Objeto BodyPart mbp = new MimebodyPart (); // Crie um novo objeto BodyPart mbp.setContent (tContent, "text/html; charset = gb2312"); // Defina conteúdo e formato/codificação para o objeto BodyEmart // Utilizado para combinar textos e fotos "" Mimemultipart ("Relacionado"); // Crie um novo objeto Mimemultipart para armazenar objetos corporais (de fato, múltiplos) Mm.addbodyPart (MBP); // Adicione o corpo ao MIMEMULTIPART (Múltiplo BodyPart pode ser adicionado) // Adicione MM.AdbodyPart (CreateImimebodyBodyPart ("e // Image Mm.Adbody (CreateImimeBodyBody (" mm.addbodypart (createImageMimeBodyPart ("esquerda")); mm.addbodypart (createImageMimeBodyPart ("Right")); mm.addbodypart (createImageMimeBodyPart ("Right")); mm.addbodypart (createImageMimeBodyPart ("TW"); mm.addbodypart (createImageMimeBodyPart ("fb")); message.setContent (mm); // use mm como o conteúdo da mensagem do objeto message.saveChanges (); Transporte de transporte = s.gettransport ("smtp"); transport.connect ("smtp."+tu, wangyifrom, pwd); // O wangyifrom aqui está o remetente da conta do remetente Transport.sendMessage (message, message.getAllRecipients ()); transport.close (); ActionContext.getContext (). GetSession (). Put ("Operações", "O email foi enviado com sucesso, aguarde pacientemente a resposta!"); } catch (Exceção e) {System.out.println (e.toString ()); ActionContext.getContext (). GetSession (). Put ("erros", e.toString ()); retornar "erros"; } retornar "sendmail"; }}O exposto acima é tudo sobre este artigo, espero que seja útil para o aprendizado de todos.