Jython2.5.3を使用してメールに添付された画像を取得しようとしています。メールを受け取ります(Python imapライブラリのJythonバージョンを使用)。get_content_type()を使用してパーツをループし、正しいパーツタイプを見つけることで、添付ファイルを取得できます。
image, img_ext = None, None
for part in self.mail.get_payload():
part_type, part_ext = part.get_content_type().split('/')
part_type = part_type.lower().strip()
part_ext = part_ext.lower().strip()
if part_type == 'image':
image = part.get_payload(decode=True)
img_ext = part_ext
return image, img_ext
'image'はバイトの大きなブロックとして返されます。これは、通常のPythonではファイルに直接書き込みます。ただし、Jythonで同じことを実行すると、次のエラーが発生します。
TypeError: write(): 1st arg can't be coerced to java.nio.ByteBuffer[], java.nio.ByteBuffer
Jythonに私の大きなデータブロブをバイト配列として認識させる正しい方法は何ですか?
PS:書き込みコードはtempfile.mkstmp()を使用します。これは、デフォルトでバイナリの書き込みになります...