■対象バージョン:iAP 2012Winterで確認しましたが、古いバージョンでも恐らく同じ
表題の通りの事象です。
メールに添付ファイルがついて送ることはできるのですが、画像やExcelなどバイナリ系のファイルだと壊れてしまいます。
addAttachmentの第二引数にはStringでファイルの中身を渡しますが、
これのエンコーディングが問題でした。
今回の要件では、PublicStorageから取得したデータを添付ファイルとして送りたかったのですが
readメソッドの時にISO_8859_1の文字コードを指定すると正常に送れました。
具体的にはこんな感じ。(周辺の処理は省略)
str = new PublicStorage("test.xls").read("8859_1");
standardMail.addAttachment("test.xls",str);