たちまち。

即席で役に立つこと。

StandardMail#addAttachmentでメールに添付したファイルが壊れる

 

■対象バージョン:iAP 2012Winterで確認しましたが、古いバージョンでも恐らく同じ

 

表題の通りの事象です。

メールに添付ファイルがついて送ることはできるのですが、画像やExcelなどバイナリ系のファイルだと壊れてしまいます。

 

addAttachmentの第二引数にはStringでファイルの中身を渡しますが、

これのエンコーディングが問題でした。

 

今回の要件では、PublicStorageから取得したデータを添付ファイルとして送りたかったのですが

readメソッドの時にISO_8859_1の文字コードを指定すると正常に送れました。

 

具体的にはこんな感じ。(周辺の処理は省略)

str = new PublicStorage("test.xls").read("8859_1");

standardMail.addAttachment("test.xls",str);