Google App Engine/Javaでのメール受信の挙動が変わったようだ

昨日の晩うごいてたメール受信のコードが、今日は動かなくなっていた。
ログを見ると、MimeMessage#getContent()がInputStreamではなくてMimeMultipartを返すようになっているらしい。


つまり、ココで書いたコードはそのままでは動かなくなってる。
http://d.hatena.ne.jp/nowokay/20091024#1256376563


ドキュメントに書いてあるとおりの挙動になったということだと思う。

The getContent() method returns an object that implements the Multipart interface. You can then call getCount() to determine the number of parts and getBodyPart(int index) to return a particular body part.


なので、この部分

Multipart content = new MimeMultipart(
     new ByteArrayDataSource(
         (InputStream)message.getContent(), 
         message.getContentType()));


これで大丈夫のはず

Multipart content = (Multipart)message.getContent();


ちなみに、エラーはいてたメール処理、プログラム書き換えると再処理されて正常な処理が行われるようなので注意。