Pythonで「imaplib」を使用してGmailアカウントからメールを取得しています。ただし、メールの内容、添付ファイルのタイトルを知りたいだけですが、添付ファイル全体をダウンロードする必要はありません。
デフォルトでは、
myGmail = imaplib.IMAP4_SSL(...)
....
(respCode, data) = myGmail.fetch(mailUid, 'RFC822')
返信データにテキストとしてエンコードされた添付ファイル全体を含む、電子メールのすべての部分が返されます。これは、巨大で不要な場合があります。
私は答えを見つけるためにインターネットとstackOverflowで検索しました。それらの多くは使用することに言及しました
myGmail.fetch(mailUid, 'BODYSTRUCTURE')
最初に電子メールの構造を決定し、次にダウンロードする部分を特定します。また、imap4プロトコルに関するRFC 3501のドキュメントも読みました。このドキュメントには、使用できると記載されています。
BODY [] <>を使用して、Fetchコマンドで特定のボディパーツをダウンロードします。
しかし、私は次のようにpythonimaplibで多くのコマンドを試しました。
(rCode, data) = myGmail.fetch(mailUid, 'BODY[0]')
(rCode, data) = myGmail.fetch(mailUid, 'BODY0')
(rCode, data) = myGmail.fetch(mailUid, 'BODY[TEXT]')
しかし、それらはすべてエラーメッセージで失敗しました:
エラー:FETCHコマンドエラー:BAD['コマンドを解析できませんでした']
だから誰もがGmail用のpythonimaplibでこのコマンドを使用する方法を教えてもらえますか?
参考までに、上記の例の電子メールのBODYSTRUCTUREは次のとおりです。
(BODY
(
(
(
("TEXT" "PLAIN" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 1742 33)
("TEXT" "HTML" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 17976 485) "ALTERNATIVE"
)
(
"IMAGE" "JPEG"
("NAME" "image001.jpg") "<image001.jpg@01CD029F.6831C440>" "image001.jpg" "BASE64" 4070
)
"RELATED"
)
("APPLICATION" "PDF" ("NAME" "SAC 2012.pdf") NIL "SAC 2012.pdf" "BASE64" 20638)
"MIXED"
)
)
ありがとう!!!