1

Pythonのimaplibを使用してimapメールを検索およびフィルタリングしようとしています。フィールドで電子メールアドレスを検索している検索コマンドで、非常に奇妙な問題が発生していFROMます。次のスクリプトがあります。

print('search with name')
status, results = con.search(None, '(FROM "Shrikant Sharat")')
if status == 'OK':
    if results[0]:
        mid = results[0].split()[0]
        print('mail id', mid)
        print(con.fetch(mid, '(UID BODY[HEADER.FIELDS (FROM)])'))
    else:
        print('No results yielded')
else:
    print('unable to search', results)

print()
print('search with email')
status, results = con.search(None, '(FROM "shrikantsharat.k@gmail.com")')
if status == 'OK':
    if results[0]:
        mid = results[0].split()[0]
        print('mail id', mid)
        print(con.fetch(mid, '(UID BODY[HEADER.FIELDS (FROM)])'))
    else:
        print('No results yielded')
else:
    print('unable to search', results)

そのため、次の結果が得られます。

search with name
mail id 2155
('OK', [('2155 (UID 5340 BODY[HEADER.FIELDS (FROM)] {54}', 'From: Shrikant Sharat <shrikantsharat.k@gmail.com>\r\n\r\n'), ' FLAGS (\\Seen))'])

search with email
No results yielded

2 回目の検索が失敗するのはなぜですか? 前の検索で示されているように、電子メール アドレスがFromフィールドに表示されます。2 回目の検索でこのメールに一致したはずですよね?

Fromこれはフィールドでメールアドレスを検索する方法ではありませんか? 私はこれで髪を引き離しています。何か案は?

編集関連する場合は、MS Exchange (2007 だと思います) によって公開されている IMAP サーバーでこれを試しています。

4

1 に答える 1

8

use this as your filter:

(HEADER FROM "shrikantsharat.k@gmail.com")
于 2011-08-10T18:52:21.560 に答える