使用EWS JAVA API發(fā)送內(nèi)嵌圖片的郵件

? ? ? ? 在最近的項(xiàng)目中需要使用Java代碼動(dòng)態(tài)生成html報(bào)告郵件,并且郵件正文中要嵌入圖片,用過(guò)Outlook的同學(xué)可能都知道,這太簡(jiǎn)單不過(guò)了,編寫(xiě)正文時(shí)直接插入圖片即可,但使用EWS JAVA API來(lái)嵌入圖片時(shí)還是遇到了不少的坑,本文將詳細(xì)介紹如何利用這個(gè)API來(lái)創(chuàng)建內(nèi)嵌圖片的Outlook郵件。

一、EWS JAVA API是什么?

? ? ? ?先了解一下EWS JAVA API:它是用來(lái)訪問(wèn) Exchange Web 服務(wù)的 Java 客戶端,說(shuō)白了就是一套訪問(wèn)Exchange郵件服務(wù)的Java API庫(kù),利用它我們可以編寫(xiě)Java代碼來(lái)動(dòng)態(tài)創(chuàng)建和發(fā)送所需要的html郵件了。

EWS JAVA API官方開(kāi)源代碼Git庫(kù)地址

二、發(fā)送內(nèi)嵌圖片的html郵件步驟:

開(kāi)始前先上圖看看實(shí)現(xiàn)效果:

圖片被嵌入在郵件正文中


Step 1 準(zhǔn)備html郵件模板:

這有兩個(gè)方法:

a.直接使用一個(gè)html文件的模板然后通過(guò)Java代碼讀取其html字符串進(jìn)行相應(yīng)的修改。

b.直接使用Jsoup庫(kù)像寫(xiě)js一樣直接動(dòng)態(tài)生成HTML頁(yè)面,關(guān)于Jsoup的使用請(qǐng)參考其文檔:

Jsoup官方主頁(yè)? ??Jsoup使用文檔

我們使用的是第二種方法通過(guò)Jsoup來(lái)動(dòng)態(tài)生成html郵件,細(xì)節(jié)如下圖:


初始化Doc

Step 2 html郵件中添加img標(biāo)簽:

增加img標(biāo)簽用于郵件正文內(nèi)嵌圖片

注意:<img>標(biāo)簽最關(guān)鍵的地方是src屬性中有cid:"圖片附件cid值", 這個(gè)cid是維一標(biāo)識(shí)那張圖片附件顯示在此位置,關(guān)于這個(gè)附件cid值如何生成后面的步驟將詳細(xì)介紹。

Step 3 初始化ExchangeService

初始化ExchangeService并設(shè)置應(yīng)用的連接URL與賬號(hào)

Step 4 初始化郵件主題及正文

初始化郵件主題、正文及接收者及抄送者

注意:設(shè)置郵件內(nèi)容的格式為html

Step 5 添加圖附件


添加圖附件

attachmentPath是一個(gè)圖片附件的字符串?dāng)?shù)組,每數(shù)組項(xiàng)目保存的是一個(gè)圖片路徑用于從本地讀取圖片文件,attachment.setContentId("image_"+a)是給每一個(gè)圖附件指定一個(gè)CID,我這里使用的是一個(gè)image_編號(hào)來(lái)表示,當(dāng)然你也可以使用文件名作為CID值,注意這個(gè)值一定要與Step 2中<img>標(biāo)簽中的值對(duì)應(yīng),不然圖片就不會(huì)顯示在郵件正文中了而是顯示為附件了。


Step 5 發(fā)送郵件


使用EmailMessage對(duì)象的send方法來(lái)發(fā)送郵件。

至此已經(jīng)完成所有的步驟,

三、注意的坑:

要注意的一個(gè)坑是: 網(wǎng)上很多人說(shuō)使用下面的方法來(lái)內(nèi)嵌圖片到郵件正文中,但我一直沒(méi)有成功,后來(lái)查到一個(gè)老外寫(xiě)的文檔,其中詳細(xì)說(shuō)明這種情況是因?yàn)镺utlook2007以上的版本不再支持這種方式,后來(lái)使用cid附件的方式就成功了。

支持或者不支持內(nèi)嵌Base64編碼圖片的Email客戶端

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文包括:1、名詞解釋2、郵件收發(fā)過(guò)程3、JavaMail 知識(shí)概要4、發(fā)送一封符合 MIME 協(xié)議的 JavaM...
    廖少少閱讀 4,302評(píng)論 2 13
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,645評(píng)論 19 139
  • 一、郵件開(kāi)發(fā)涉及到的一些基本概念 郵件服務(wù)器和電子郵箱 郵件傳輸協(xié)議 電子郵件的發(fā)送和接收過(guò)程 1.1郵件服務(wù)器和...
    yjaal閱讀 1,616評(píng)論 0 7
  • 西北幾乎沒(méi)有雨季,一年里能有幾場(chǎng)正兒八經(jīng)的雨是相當(dāng)難得的。烏魯木齊的春天也格外的遲鈍,大雨前幾天終于臨幸了這里。 ...
    陳舊啊閱讀 274評(píng)論 1 3
  • 千古紅塵色淡然, 騷人墨客繪江山。 才子佳人皆風(fēng)韻, 膾炙詩(shī)篇后人傳。 誰(shuí)言詩(shī)人酸情苦? 千年文化訴千年。 我提筆...
    黎若雪閱讀 396評(píng)論 0 0

友情鏈接更多精彩內(nèi)容