最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java發(fā)送內(nèi)嵌圖片郵件

 更新時(shí)間:2016年01月19日 10:38:50   作者:小眼兒  
這篇文章主要介紹了java發(fā)送內(nèi)嵌圖片郵件,在博客系統(tǒng)中需要郵件服務(wù)的功能,僅僅是發(fā)送文本內(nèi)容,現(xiàn)在嘗試一下發(fā)送內(nèi)嵌圖片郵件,感興趣的小伙伴們可以參考一下

整體效果:

  發(fā)送端:網(wǎng)易郵箱;接收端:qq郵箱。

1.web前端

2.在網(wǎng)易郵箱“已發(fā)送”中可以看見通過java代碼發(fā)送的郵件

3.同樣在qq郵箱中也可以看到這樣的效果

實(shí)現(xiàn)過程:
1.web前端(bootstrap布局)

<form action="mailAction!sendMail" method="post" name="mailForm" id="mailFormId">
 <ul class="list-group">
  <li class="list-group-item">
    <div class="input-group">
     <span class="input-group-addon" id="basic-addon1">姓名:</span>
     <input type="text" class="form-control" placeholder="your name" name="mailForm.name" aria-describedby="basic-addon1">
    </div>
  </li>
  
  <li class="list-group-item">
    <div class="input-group">
     <span class="input-group-addon" id="basic-addon2">電話:</span>
     <input type="text" class="form-control" placeholder="your phone" name="mailForm.phone" aria-describedby="basic-addon1">
    </div>
  </li>
  
  <li class="list-group-item">
    <div class="input-group">
     <span class="input-group-addon" id="basic-addon2">郵件:</span>
     <input type="text" class="form-control" placeholder="your e-mail" name="mailForm.e_mail" aria-describedby="basic-addon1">
    </div>
  </li>
  
  <li class="list-group-item" style="padding-top: 20px;">
    <span class="label label-default blog-label-1">消息:</span>
    <br><br>
    <textarea rows="10" style="width:100%" name="mailForm.content" placeholder="請(qǐng)輸入消息(不要超過500個(gè)字符)"></textarea>
  </li>
  
   <li class="list-group-item">
     <center><button onclick="$('#mailFormId').submit();" type="button" class="btn btn-success">發(fā)送郵件</button></center>
   </li>
 </ul>
</form>

2.首先準(zhǔn)備一個(gè)XML的模板(<xml-body>包含的是郵件的html格式的文本)。

<?xml version="1.0" encoding="UTF-8"?>
<!-- 將空格換成全角的空格,就可以保證html不會(huì)將空格過濾掉 -->
<xml-body>
  <html>
    <head>
    </head>
    <body style="margin: 0; padding: 0;">
      <table border="0" cellpadding="0" cellspacing="0" width="100%">  
        <tbody><tr>
          <td style="padding: 10px 0 30px 0;">
            <table align="center" border="0" cellpadding="0" cellspacing="0" width="600" style="border: 1px solid #cccccc; border-collapse: collapse;">
              <tbody><tr>
                <td align="center" bgcolor="#70bbd9" style="padding: 40px 0 30px 0; color: #153643; font-size: 28px; font-weight: bold; font-family: Arial, sans-serif;">
                  <img src="cid:{4}" alt="Creating Email Magic" width="300" height="230" style="display: block;"/>
                </td>
              </tr>
              <tr>
                <td bgcolor="#ffffff" style="padding: 40px 30px 40px 30px;">
                  <table border="0" cellpadding="0" cellspacing="0" width="100%">
                    <tbody><tr>
                      <td style="color: #153643; font-family: Arial, sans-serif; font-size: 24px;">
                        <b>
                          發(fā)件人: {0}
                          <br/>
                          電話: {1}
                          <br/>
                          郵箱: {2}
                          <br/>
                          內(nèi)容:<br/>
                        </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>
                    <tr>
                      <td>
                        <table border="0" cellpadding="0" cellspacing="0" width="100%">
                          <tbody><tr>
                            <td width="260" valign="top">
                              <table border="0" cellpadding="0" cellspacing="0" width="100%">
                                <tbody><tr>
                                  <td>
                                    <img src="cid:{5}" alt="" width="100%" height="140" style="display: block;"/>
                                  </td>
                                </tr>
                              </tbody></table>
                            </td>
                            <td style="font-size: 0; line-height: 0;" width="20">
                            </td>
                            <td width="260" valign="top">
                              <table border="0" cellpadding="0" cellspacing="0" width="100%">
                                <tbody><tr>
                                  <td>
                                    <img src="cid:{6}" alt="" width="100%" height="140" style="display: block;"/>
                                  </td>
                                </tr>
                              </tbody></table>
                            </td>
                          </tr>
                        </tbody></table>
                      </td>
                    </tr>
                  </tbody></table>
                </td>
              </tr>
              <tr>
                <td bgcolor="#ee4c50" style="padding: 30px 30px 30px 30px;">
                  <table border="0" cellpadding="0" cellspacing="0" width="100%">
                    <tbody><tr>
                      <td align="right" width="25%">
                        <table border="0" cellpadding="0" cellspacing="0">
                          <tbody><tr>
                            <td style="font-family: Arial, sans-serif; font-size: 12px; font-weight: bold;">
                              <img src="cid:{7}" alt="Twitter" width="38" height="38" style="display: block;" border="0"/>
                            </td>
                            <td style="font-family: Arial, sans-serif; font-size: 12px; font-weight: bold;">
                              <img src="cid:{8}" alt="Facebook" width="38" height="38" style="display: block;" border="0"/>
                            </td>
                          </tr>
                        </tbody></table>
                      </td>
                    </tr>
                  </tbody></table>
                </td>
              </tr>
            </tbody></table>
          </td>
        </tr>
      </tbody></table>
    </body>
  </html>
</xml-body>

其中模板中會(huì)有一些標(biāo)識(shí)符,如{i},表還是字符串的預(yù)留位置,然后通過MessageFormat格式化這樣的消息,然后將格式化后的字符串插入到模式中的適當(dāng)位置。

//得到XML的模板
String 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可以格式化這樣的消息,然后將格式化后的字符串插入到模式中的適當(dāng)位置
String tcontent = MessageFormat.format(str, obj);

最終XML模板中的{i}分別被obj[i]替換了。
3.寫一個(gè)對(duì)XML模板的類ReaderXML

public class ReaderXML {
  public String read(String path){
    String str=null;
    str=reader(path);    
    return str;
  }  
  private String reader(String path){    
    SAXReader reader=new SAXReader();
    String str=null;    
    try {      
      Document d=reader.read(new File(path));
      Element e=d.getRootElement();
      Element htmle=e.element("html");
      str=htmle.asXML();
    } catch (DocumentException e) {
      e.printStackTrace();
    }
    return str;
  }
}

4.最后就是我們的控制器類MailAction
  在 HTML 格式的正文中內(nèi)含圖片是使用MimeBodyPart類的setContentID() 方法設(shè)置對(duì)應(yīng)的資源文件的唯一標(biāo)識(shí)符,即 MIME 協(xié)議對(duì)于郵件的結(jié)構(gòu)組織格式中的 Content-ID 頭字段,對(duì)應(yīng)著XML模板中的cid:{i}標(biāo)識(shí), 如<img src="cid:{8}"/>(注:{i}會(huì)通過MessageFormat.format替換成對(duì)應(yīng)的字符串)

public class MailAction extends ActionSupport{
  private MailForm mailForm;
  public MailForm getMailForm() {
    return mailForm;
  }
  public void setMailForm(MailForm mailForm) {
    this.mailForm = mailForm;
  }
  //添加內(nèi)嵌圖片
  private MimeBodyPart createImageMimeBodyPart(String imageName) throws MessagingException, UnsupportedEncodingException{
    FileDataSource fds=new FileDataSource(ServletActionContext.getServletContext().getRealPath("/image")+"/" + imageName + ".gif"); 
    MimeBodyPart mbp=new MimeBodyPart(); 
    DataHandler dh=new DataHandler(fds); 
    mbp.setDataHandler(dh); 
    //設(shè)置對(duì)應(yīng)的資源文件的唯一標(biāo)識(shí)符,即 MIME 協(xié)議對(duì)于郵件的結(jié)構(gòu)組織格式中的 Content-ID 頭字段;
    mbp.setHeader("Content-ID", imageName);
    mbp.setFileName(MimeUtility.encodeText(fds.getName())); 
    return mbp;
  }
  
  public String sendMail(){
    try {
      HttpServletRequest request = ServletActionContext.getRequest();
      String pwd = "************";//發(fā)件人郵箱密碼
      String mailfrom = "***********@163.com"; //網(wǎng)易的郵箱
      String wangyiFrom = mailfrom.substring(0, mailfrom.indexOf('@'));//網(wǎng)易郵箱的用戶名
      String tu = "163.com"; //發(fā)件人郵箱的后綴域名
      String tto= "**********@qq.com"; //接收郵件的郵箱
      String ttitle= "有人聯(lián)系你---來自胡峻崢的個(gè)人網(wǎng)站";
      
      //根據(jù)其物理路徑,得到XML的模板
      String 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可以格式化這樣的消息,然后將格式化后的字符串插入到模式中的適當(dāng)位置
      String tcontent = MessageFormat.format(str, obj);
      
      Properties props=new Properties();
  
      props.put("mail.smtp.host","smtp."+tu);//郵箱SMTP服務(wù)器地址端口
  
      props.put("mail.smtp.auth","true");//這樣才能通過驗(yàn)證
  
      Session s=Session.getInstance(props);
  
      s.setDebug(true);
  
      MimeMessage message=new MimeMessage(s);
  
      //給消息對(duì)象設(shè)置發(fā)件人/收件人/主題/發(fā)信時(shí)間
  
      InternetAddress from;
    
      from = new InternetAddress(mailfrom);//發(fā)件人的qq郵箱
      message.setFrom(from);
      InternetAddress to=new InternetAddress(tto);//收件人的郵箱
      message.setRecipient(Message.RecipientType.TO,to);
      message.setSubject(ttitle);
      message.setSentDate(new Date());
      //給消息對(duì)象設(shè)置內(nèi)容
      BodyPart mbp=new MimeBodyPart();//新建一個(gè)存放信件內(nèi)容的BodyPart對(duì)象
      mbp.setContent(tcontent,"text/html;charset=gb2312");//給BodyPart對(duì)象設(shè)置內(nèi)容和格式/編碼方式
      // 用于組合文本和圖片,"related"型的MimeMultipart對(duì)象 
      Multipart mm=new MimeMultipart("related");//新建一個(gè)MimeMultipart對(duì)象用來存放BodyPart對(duì)象(事實(shí)上可以存放多個(gè))
      mm.addBodyPart(mbp);//將BodyPart加入到MimeMultipart對(duì)象中(可以加入多個(gè)BodyPart)
      
      //添加圖片
      mm.addBodyPart(createImageMimeBodyPart("e_mail"));
      mm.addBodyPart(createImageMimeBodyPart("left"));
      mm.addBodyPart(createImageMimeBodyPart("right"));
      mm.addBodyPart(createImageMimeBodyPart("tw"));
      mm.addBodyPart(createImageMimeBodyPart("fb"));
      
      message.setContent(mm);//把mm作為消息對(duì)象的內(nèi)容
      message.saveChanges();
      Transport transport=s.getTransport("smtp");
      transport.connect("smtp."+tu, wangyiFrom, pwd); //這里的wangyiFrom為發(fā)件人網(wǎng)易賬號(hào)
      transport.sendMessage(message,message.getAllRecipients());
      transport.close();
      ActionContext.getContext().getSession().put("operations", "郵件發(fā)送成功, 請(qǐng)耐心等待回復(fù)!");
    } catch (Exception e) {
      System.out.println(e.toString());
      ActionContext.getContext().getSession().put("errors", e.toString());
      return "errors";
    } 
    return "sendMail";
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • SpringBoot+WebSocket實(shí)現(xiàn)多人在線聊天案例實(shí)例

    SpringBoot+WebSocket實(shí)現(xiàn)多人在線聊天案例實(shí)例

    本文主要介紹了SpringBoot+WebSocket實(shí)現(xiàn)多人在線聊天案例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java中數(shù)據(jù)庫(kù)加密的方式有哪些

    Java中數(shù)據(jù)庫(kù)加密的方式有哪些

    這篇文章主要介紹了Java中數(shù)據(jù)庫(kù)加密的方式有哪些,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • JavaWeb項(xiàng)目中springmvc和tomcat對(duì)靜態(tài)文件的處理

    JavaWeb項(xiàng)目中springmvc和tomcat對(duì)靜態(tài)文件的處理

    這篇文章主要介紹了JavaWeb項(xiàng)目中springmvc和tomcat對(duì)靜態(tài)文件的處理 的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • java 中自定義OutputFormat的實(shí)例詳解

    java 中自定義OutputFormat的實(shí)例詳解

    這篇文章主要介紹了java 中 自定義OutputFormat的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • 揭秘SpringBoot!一分鐘教你實(shí)現(xiàn)配置的動(dòng)態(tài)神刷新

    揭秘SpringBoot!一分鐘教你實(shí)現(xiàn)配置的動(dòng)態(tài)神刷新

    在今天的指南中,我們將深入探索SpringBoot?動(dòng)態(tài)刷新的強(qiáng)大功能,讓你的應(yīng)用保持最新鮮的狀態(tài),想象一下,無需重啟,你的應(yīng)用就能實(shí)時(shí)更新配置,是不是很酷?跟我一起,讓我們揭開這項(xiàng)技術(shù)如何讓開發(fā)變得更加靈活和高效的秘密吧!
    2024-03-03
  • Spring中Bean創(chuàng)建完后打印語句的兩種方法

    Spring中Bean創(chuàng)建完后打印語句的兩種方法

    這篇文章主要介紹了Spring中Bean創(chuàng)建完后打印語句的兩種方法,一個(gè)是實(shí)現(xiàn)InitializingBean接口,另一個(gè)使用@Bean注解和initMethod屬性,通過代碼示例介紹的非常詳細(xì),感興趣的小伙伴可以參考閱讀
    2023-07-07
  • SpringBoot優(yōu)先加載指定Bean的實(shí)現(xiàn)

    SpringBoot優(yōu)先加載指定Bean的實(shí)現(xiàn)

    SpringBoot框架在啟動(dòng)時(shí)可以自動(dòng)將托管的Bean實(shí)例化,一般情況下它的依賴注入特性可以正確處理Bean之間的依賴關(guān)系,無需手動(dòng)指定某個(gè) Bean優(yōu)先創(chuàng)建實(shí)例,文中有詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-05-05
  • 詳解JVM中的GC調(diào)優(yōu)

    詳解JVM中的GC調(diào)優(yōu)

    我們經(jīng)常會(huì)聽到甚至需要自己動(dòng)手去做GC調(diào)優(yōu)。那么GC調(diào)優(yōu)的目的到底是什么呢?讓程序跑得更快?讓GC消耗更少的資源?還是讓程序更加穩(wěn)定?帶著這些疑問來讀一下這篇文章,將會(huì)得到一個(gè)系統(tǒng)的甚至是不一樣的結(jié)果。
    2021-06-06
  • java的接口解耦方式

    java的接口解耦方式

    這篇文章主要介紹了java的接口解耦方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java 中String StringBuilder 與 StringBuffer詳解及用法實(shí)例

    Java 中String StringBuilder 與 StringBuffer詳解及用法實(shí)例

    這篇文章主要介紹了Java 中String StringBuilder 與 StringBuffer詳解及用法實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評(píng)論

彝良县| 鄂伦春自治旗| 西盟| 紫云| 昌邑市| 揭东县| 加查县| 邻水| 长葛市| 吴堡县| 两当县| 静海县| 三亚市| 长岛县| 印江| 黔江区| 桦南县| 仪陇县| 辽阳县| 尼木县| 石棉县| 临汾市| 新余市| 察哈| 陕西省| 调兵山市| 略阳县| 东丰县| 儋州市| 松桃| 绥宁县| 华宁县| 祁连县| 德州市| 卓尼县| 双辽市| 辉县市| 岑巩县| 孝义市| 阜城县| 琼中|