0

そのため、以下のコードで連絡先から最後に受信した電子メールの日付を取得することに成功しました。

今、連絡先に送信された最後の電子メールの日付を取得しようとしています。コーディング/Pythonの初心者として、私はそれを正しく理解することができません. 「From」を「To」に変更しようとしましたが、正しい日付が表示されませんでした。

これをどのように進めればよいですか?私は周りを見回してみましたが、解決策が見つかりませんでした。

import email
from imapclient import IMAPClient
from datetime import timedelta, date, datetime


HOST = 'imap.gmail.com'
USERNAME = 'username'
PASSWORD = 'password'
ssl = True

## Connect, login and select the INBOX
server = IMAPClient(HOST, use_uid=True, ssl=ssl)
server.login(USERNAME, PASSWORD)
select_info = server.select_folder('INBOX') 

since_date = date(2016, 1, 1)    

##Search Inbox
messages = server.search(['FROM', 'email_i_want_to_search@gmail.com', 'Since', since_date])
response = server.fetch(messages, ['RFC822'])
last_msg_id = list(response.keys())[-1] 
data = response[last_msg_id]
msg_string = data[b'RFC822']
msg = email.message_from_string(msg_string.decode())
print('ID %d: From: %s Date: %s' % (last_msg_id , msg['From'], msg['date']))
4

2 に答える 2

0

この方法はどうですか?非常に単純ではありませんが、それは仕事をします。

  • 特定のユーザーに送信されたメッセージのリストを作成する
  • そこからアイテムを取得します (最初のアイテムは、送信された最新のメッセージです)
  • andのパラメーターとしてandを使用して、最初のメッセージの ID を使用してGetを実行します。metadatadateformatmetadataHeaders

  • headers返されたの最初の項目の値を取得します

    service = build('gmail', 'v1', credentials=creds)


    messages = service.users().messages().list(userId='me', q='to:user@email.com').execute()

    items = messages.items()[1][1]

    lastmess = service.users().messages().get(userId='me', id=items[0]['id'], format='metadata', metadataHeaders='Date').execute()
    print (lastmess['payload']['headers'][0]['value'])

結果:

Wed, 11 Mar 2020 16:10:32 +0100

于 2020-03-11T15:54:16.157 に答える