あなたが私があなたが求めていると思うことを求めていると仮定して、これが何をすべきかです:
まず、をフェッチしBODYSTRUCTURE
ます。GmailのIMAPサーバーがこれをサポートしていると仮定すると、次のようなものが返されます。
(("TEXT" "PLAIN" ("CHARSET" "UTF-8") NIL NIL "QUOTED-PRINTABLE" 56 1 NIL NIL NIL NIL)
("TEXT" "HTML" ("CHARSET" "UTF-8") (NAME "") NIL NIL "BASE64" 12345 NIL
("attachment" ("FILENAME" "")) NIL NIL)
("IMG" "JPEG" (NAME "funny picture") NIL NIL "BASE64" 56789 NIL
("attachment" ("FILENAME" "image.jpg")) NIL NIL))
"MIXED" ("BOUNDARY" "----_=_NextPart_001_1234ABCD.56789EF0") NIL NIL NIL)
そして(BODY ENVELOPE)
、構造が1つあることをフェッチします。
RFC3501 7.4.2を見ると、これらの処理方法が説明されています。
(BODY[1])
と(BODY[2])
がメインコンテンツのプレーンテキストバージョンとHTMLバージョンであり(BODY[3])
、最初の実際の添付ファイルであると判断したら(BODY[1])
、をフェッチしてプレーンテキストの本文をダウンロードし、から添付ファイルの名前を取得します。構造。
申し訳ありませんが、ここにコードはありません。imaplib
stdlib MIMEおよびメール関連のモジュールのいずれかまたはいずれも(構造の解釈)あなたにとって難しい部分を行うとは思いませんが、実際にはチェックしていないので、最初にそこを調べます。そうではなく、PyPIにアクセスして、他の誰かがすでにコードを記述していないかどうかを確認してください。
ええと、実際には、最初にフェッチしBODYSTRUCTURE
、特定のメッセージについては、コード全体を書く前にGmailが完全にサポートされていることを確認します…</ p>
(BODY ENVELOPE)
(BODY[3])
PS、最悪の事態が発生した場合、ユースケースが説明したように単純で厳格な場合は、いつでもフェッチBODYSTRUCTURE
して失敗した場合(BODY[1])
にフォールバックしRFC822
、構造でハッキーな正規表現を実行する代わりに添付ファイル名を取得できます実際の解析。私はこれを、Gmailについて学ぶためのワンショットスクリプトまたはクイック&ダーティプロトタイプ以外には書きませんが、そのような場合は、おそらく書きます。