使用Java mail發送郵件附件出現附件上產生.eml文件夾的問題及附件名.bin結尾問題


近期,線上項目發出郵件是PDF附件但收到的郵件附件格式卻不是PDF,發送郵件的技術為JAVA mail 經復現錯誤現象為下圖:

163郵箱:

QQ郵箱:

 

eml問題排查思路:

1.首先,排除附件本身的問題,附件本身在執行發送郵件之前進行本地服務器文件落地,確認落地的文件確實為PDF格式且附件正常可用。

2.其次,排查公司用的郵件服務器問題是不是對PDF文件進行了某種轉碼,經驗證通過從郵件服務器手動發送郵件,確認收到后的郵件附件正常為PDF格式。

3.最后,跟蹤發送郵件的代碼並在網上查詢相關資料未發現任何和.eml有關的材料,通過在一篇博客中查看正確實例發現在Java mail中正文和附件使用的是一個MimeBodyPart對象,修改后示例如下:

經測試錯誤原因是郵件正文和郵件附件用的MimeBodyPart對象是同一個,進而導致上述現象,解決辦法為正文是一個MimeBodyPart對象,一個附件是一個MimeBodyPart對象,並將兩個對象分別添加到MimeMultipart()

中,經再次測試,問題解決。

.bin問題解決

我在項目中遇到的問題並不是.bin問題,不過網絡上有一些關於這個的資料,在本篇帖子中做個記錄。

.bin問題的原因為附件名過長導致附件名編碼異常,要做幾處更改,如下:

 

問題修復后樣圖:

QQ郵箱

 

163郵箱

 

總結:

在遇到上述這種debug跟不到結尾的問題往往摸不着頭腦,所以 解決這種問題的思路應該使用排除法,排除掉外界環境的因素后,認真有條理的跟蹤程序代碼並且參考一份正確的實例進行比對,這是解決問題的最快辦法,至於問題原因這個有時間可以研究,但是在工作中要做的是以最快的速度解決生產環境出現的問題,降低損失。

在本次解決問題的過程中我參考了一篇正確示例代碼,網址如下:

https://www.cnblogs.com/h--d/p/6138900.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM