emlファイルからメールをいろいろ加工するようなブツを作っているのですが、日本語が含まれるファイルの場合、問題になる事が判明。
1 2 |
String filePath = "/var/lib/apl/aaa/faile/日本語emlファイル.eml"; MimeMessage msg = new MimeMessage(null, new FileInputStream(filePath)); |
開発環境のWindowsでは特に問題ありませんでしたが、Linux環境で実行するとファイルが見つかりませんでエラーになるんですね。。
こちらの下の方を参考に、nio仕様に変えたら問題は解消しました。環境依存でしょうか、特にJVM引数は必要なかったです。
1 2 3 4 5 |
String filePath = "/var/lib/apl/aaa/faile/日本語emlファイル.eml"; Path file = Paths.get(filePath); if(file.toFile().exists()){ MimeMessage msg = new MimeMessage(null, Files.newInputStream(file)); } |
今の時代、Javaのファイル処理はnioに統一した方がよさそうですね。