【轉】Kettle發送郵件步驟遇到附件名是中文名變成亂碼的問題解決辦法


原文:http://www.ukettle.org/thread-607-1-1.html

 

本帖最后由 大白菜 於 2016-3-7 10:18 編輯

導語:看到群里很多朋友問Kettle發送郵件附件中文名亂碼(發件人如果是中文的話,也亂碼),怎么辦,又有論壇朋友在論壇問。http://www.ukettle.org/forum.php?mod=viewthread&tid=322&page=1#pid4708 ,然后又見有朋友在博客里面發的通過修改源碼解決的方案。個人受到啟發,就嘗試有了自己的一套解決這個問題的方案,現在分享出來,希望各位朋友能提供一個更好的解決方式。

解決相關問題:kettle發送郵件,如果帶附件的話,會有以下兩個問題:                                                                                                                                                                            ①附件如果是中文的話,會出現中文名的附件在郵箱里面顯示為亂碼
                         ②發送人如果是中文的話,會出現發送人顯示為亂碼

首先,我貼出目前我能查到的一種解決方式的鏈接地址:《 KETTLE 發送郵件亂碼修正》
其次,我給出我自己的解決方式:

              附件中文名顯示亂碼的問題,個人猜測為kettle運行所需要的mail.jar包,版本滯后了,如果替換為新的mail包,是可以支持中文的。
              發送人中文名顯示亂碼的問題,這部分問題通過替換mail.jar包也沒能解決,所以,通過參考網上人修改發送部分代碼的方式,通過在kettle里面寫java腳本,來修補這個問題。


             第一步,添加新的mail.jar包,修改附件中文名顯示亂碼的問題:
                          jar包下載地址:https://java.net/projects/javamail/pages/Home#Download_JavaMail_Release,下載下來的文件為:javax.mail-1.5.5.jar 
                          下載所在位置如下圖所示:

                          下載之后,將jar包添加到\pdi-ce-5.1.0.0-752\data-integration\lib目錄下即可


             第二步,添加步驟,修改發信人中文顯示為亂碼的問題:
                           這一步的解決,我這邊是新建了一個轉換(附件中對應的轉換名字為:發件人姓名中文encode.ktr通過java代碼這個組件來對發件人這個字段進行
                      處理來解決。下面是核心的代碼:
                           


                           
[Java]  純文本查看 復制代碼
1
2
3
4
5
6
//get mail_sender_name field value
                                  String foobar = get(Fields.In, "mail_sender_name" ).getString(r);
                                   //encode mail_sender_name value
                                   foobar=MimeUtility.encodeText(foobar);
                                 //set mail_sender_name field value
                                  get(Fields.Out, "mail_sender_name" ).setValue(r, foobar);


免責聲明!

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



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