12

件名が「New Order」で始まるすべてのメールを取得しようとしていますが、わかりません。現在、次のような設定で完全一致を検索できます...

result, data = M.uid('search', None, '(HEADER Subject "Subject Here")')

ただし、完全に一致しないメッセージは取得されません。部分一致を行うにはどうすればよいですか?

問題がある場合は、gmail の imap サーバーと通信しています。

ありがとう

4

4 に答える 4

22

IMAP RFC によると、SEARCH部分文字列の一致としてすべての一致を行う必要があります。

文字列を使用するすべての検索キーで、文字列がフィールドの部分文字列である場合、メッセージはキーと一致します。マッチングは大文字と小文字を区別しません。

したがって、検索

M.uid('search', None, 'HEADER Subject "New Order"')

件名のどこかに出現するすべてのメッセージに一致する必要がありますNew Order。そうでない場合は、サーバーが IMAP を適切に実装していないことを Google に通知する必要があります。SUBJECTそれまでの間、次のようにキーを使用してみてください。

M.uid('search', None, 'SUBJECT "New Order"')

また、Google の IMAP 拡張ドキュメントX-GM-RAWによると、次のようにキーと gmail 検索文字列を使用できる場合があります。

M.uid('search', None, r'X-GM-RAW "subject:\"New Order\""')
于 2012-11-15T19:06:33.333 に答える
4

これは私のために働いた:

mail.uid('search', None, r'(X-GM-RAW "subject:\"New Order\"")')
于 2013-03-27T18:22:25.863 に答える
0

これは私のために働いた:

M.uid('search',None, '(SUBJECT "New Order")')

検索のフォーマットは(EmailAttribute "your searchstring")

それがうまくいくことを願っています。

于 2016-06-07T15:22:03.957 に答える