日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用geronimo-javamail_1.4发送邮件的有关说明

發(fā)布時(shí)間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用geronimo-javamail_1.4发送邮件的有关说明 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【我的Segmentfault原文】https://segmentfault.com/a/1190000008054230

?

前言

??之所以要寫這篇文章,是因?yàn)樵谄綍r(shí)工作中出現(xiàn)這樣一種場(chǎng)景,領(lǐng)導(dǎo)要求用JavaMail開(kāi)發(fā)郵件發(fā)送,功能開(kāi)發(fā)測(cè)試好以后,發(fā)現(xiàn)項(xiàng)目用的jar包是geronimo-javamail_1.4_spec-1.3.jar,而不是Oracle官方的mail.jar,兩者不能完全等同。若不清楚這點(diǎn),就會(huì)出現(xiàn)一些不必要的麻煩。

一、關(guān)于Apache Geronimo

??一個(gè)用于企業(yè)系統(tǒng)開(kāi)發(fā)的開(kāi)源項(xiàng)目,你會(huì)驚訝于百度竟然沒(méi)有多少可參考資料,就連百度百科上的介紹也只有幾百字,谷歌上倒有不少介紹,英語(yǔ)不好,暫時(shí)略過(guò)。作為一個(gè)J2EE應(yīng)用服務(wù)器,在Eclipse早已提供開(kāi)發(fā)支持,配置截圖如下:

【百度百科】

Apache Geronimo 是 Apache 軟件基金會(huì)的開(kāi)放源碼J2EE服務(wù)器,它集成了眾多先進(jìn)技術(shù)和設(shè)計(jì)理念。
這些技術(shù)和理念大多源自獨(dú)立的項(xiàng)目,配置和部署模型也各不相同。
Geronimo能將這些項(xiàng)目和方法的配置及部署完全整合到一個(gè)統(tǒng)一、易用的模型中。

??另外,好在IBM developerWorks中國(guó)上給出完整的介紹和詳細(xì)的使用教程,下面介紹內(nèi)容摘自IBM developerWorks中國(guó)的Geronimo 入門:(注:IBM developerWorks中國(guó)有不少關(guān)于它的技術(shù)文章,推薦參考學(xué)習(xí))

  • Geronimo 中集成的開(kāi)放源碼項(xiàng)目|開(kāi)放源碼項(xiàng)目 |說(shuō)明|

Apache Tomcat 5.5支持 Java Servlet 2.4 和 JavaServer Pages?(JSP) 2.0 的 Web 層應(yīng)用服務(wù)器
Jetty支持 Java Servlet 2.4 和 JavaServer Pages?(JSP) 2.0 的 Web 層應(yīng)用服務(wù)器 —— 可以替代 Tomcat 服務(wù)器
ActiveMQ開(kāi)放源碼的 Java Message Service(JMS) 1.1 應(yīng)用程序提供者,支持消息驅(qū)動(dòng) bean(MDB)
OpenEJB開(kāi)放源碼的 Enterprise JavaBeans(EJB)容器系統(tǒng)和 EJB 服務(wù)器,支持 Enterprise JavaBeans 2.1,包括 Container Managed Persistence 2(CMP2)和 EJB Query Language(EJBQL)
Apache Axis 和 Scout一種 Simple Object Access Protocol(SOAP)實(shí)現(xiàn)(Axis)和 JSR 93(JAXR)實(shí)現(xiàn)(Scout),用于 Web 服務(wù)和 Web Services Interoperability Organization(WS-I) Basic Profile 支持
Apache Derby完全成熟的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),支持本機(jī) Java Database Connectivity(JDBC)
  • 集成在 Geronimo 中的開(kāi)放源碼項(xiàng)目|開(kāi)放源碼項(xiàng)目 |說(shuō)明|

Spring Framework流行的應(yīng)用程序框架,用于從輕量級(jí) Inversion of Control(IoC)組件構(gòu)建應(yīng)用程序
ServiceMix開(kāi)放源碼工具集,支持 Java Business Integration(JBI)并且為面向服務(wù)體系結(jié)構(gòu)(SOA)實(shí)現(xiàn)提供 Enterprise Service Bus(ESB)

??當(dāng)然以上介紹的內(nèi)容和我要講的內(nèi)容關(guān)系不大,僅作知識(shí)普及。介紹內(nèi)容好像沒(méi)有提到我說(shuō)的geronimo-javamail_1.4,不過(guò)從我的理解角度來(lái)講,geronimo-javamail_1.4是Apache基于Geronimo開(kāi)發(fā)的JavaMail服務(wù)組件,還有類似的servlet組件和JTA組件等,這些組件都有單獨(dú)的jar包,Geronimo官網(wǎng)上我并沒(méi)找到這些jar包,而是在outofmemory網(wǎng)站的Maven中央倉(cāng)庫(kù)找到的。(http://maven.outofmemory.cn/o...)

二、geronimo-javamail_1.4使用說(shuō)明

1、jar包不全,導(dǎo)致郵件發(fā)送異常報(bào)錯(cuò)

??簡(jiǎn)單將Apache的geronimo-javamail_1.4_spec-1.3.jar等同Oracle官方的mail.jar,沿用原有代碼進(jìn)行郵件發(fā)送測(cè)試,出現(xiàn)如下異常錯(cuò)誤信息:

javax.mail.NoSuchProviderException: Unable to locate provider for protocol: smtp at javax.mail.Session.getProvider(Session.java:237) at javax.mail.Session.getTransport(Session.java:346)

??從報(bào)錯(cuò)信息來(lái)看,是缺少名為smtp的provider,信息很明確,卻不知從何排查。我當(dāng)時(shí)的第一反應(yīng)是,兩者的配置方式可能不同,但從網(wǎng)上大部分給出的意見(jiàn)是用回原來(lái)的mail.jar包(比如stackoverflow:Unable to locate provider for protocol: smtp),以致于我也開(kāi)始放棄其他解決方案。但是當(dāng)我將這種解決方案用在項(xiàng)目中,我開(kāi)始產(chǎn)生另外一種顧慮,geronimo-javamail_1.4會(huì)不會(huì)已經(jīng)在其他功能中使用了?(這個(gè)評(píng)估不到位,就可能導(dǎo)致不必要的風(fēng)險(xiǎn)),再者項(xiàng)目用的是Maven依賴庫(kù),進(jìn)行jar刪除操作也是一件麻煩的事,而僅加多mail.jar又會(huì)引發(fā)其他問(wèn)題(參看JavaMail郵件發(fā)送不成功的那些坑人情況及分析說(shuō)明的“4、jar包重疊存在javax.mail.*”)。

??于是,我又嘗試搜索可能的其他解決方案,不過(guò)這次從我嘗試翻墻試試谷歌,果然無(wú)意間看到了一個(gè)關(guān)于Geronimo JavaMail 1.4的官方指導(dǎo)說(shuō)法,內(nèi)容如下:(鏈接:http://geronimo.apache.org/ma...)

??原來(lái)是因?yàn)槿鄙賕eronimo-javamail_1.4_provider這個(gè)配套jar包,可是在stackoverflow這個(gè)專業(yè)的問(wèn)答社區(qū)網(wǎng)站也沒(méi)見(jiàn)人提及,這也足以說(shuō)明Geronimo JavaMail 1.4確實(shí)還應(yīng)用得不是很廣泛。

2、jar包版本配套不兼容,導(dǎo)致郵件內(nèi)容錯(cuò)誤

??雖然問(wèn)題是找到,但也很快出現(xiàn)的另外一個(gè)問(wèn)題,項(xiàng)目使用的是geronimo-javamail_1.4_spec-1.3.jar,geronimo-javamail_1.4_provider該用哪個(gè)版本呢?我想郵件發(fā)送是基本常用功能,應(yīng)該不會(huì)改動(dòng)太大,代碼應(yīng)該是兼容的。由于沒(méi)有找到官方給的配套版本說(shuō)明,我就先從outofmemory網(wǎng)站的Maven中央倉(cāng)庫(kù)下載了最新的provider-1.8.3.jar。測(cè)試發(fā)現(xiàn)發(fā)送的郵件無(wú)標(biāo)題且內(nèi)容亂碼,一下子拋出了一個(gè)jar包配套兼容性的問(wèn)題。

??抱著試試看的想法,我又下載了provider-1.3.jar和provider-1.4.jar,結(jié)果測(cè)試都正常。這下問(wèn)題來(lái)了,到底選1.3還是1.4呢?把問(wèn)題和風(fēng)險(xiǎn)上報(bào)領(lǐng)導(dǎo),領(lǐng)導(dǎo)也是舉棋不定了...既然官方說(shuō)明是javamail_1.4_spec-1.6.jar配套javamail_1.4_provider-1.7.jar,那javamail_1.4_spec-1.3.jar就參考配套javamail_1.4_provider-1.4.jar吧,也只能這么參考選擇了...(其實(shí)也是一個(gè)不太科學(xué)的選擇方法)

轉(zhuǎn)載于:https://www.cnblogs.com/JackFe/p/6557367.html

總結(jié)

以上是生活随笔為你收集整理的使用geronimo-javamail_1.4发送邮件的有关说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。