Как скачать вложение электронной почты из Gmail в Python для конкретной темы и даты - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь загрузить форму вложения в почтовый ящик gmail, почта приходит ежедневно, и мне нужно загрузить вложение из письма, код которого я имею, позволяет мне загружать все вложения в свой почтовый ящик.То, что я хочу, - это загрузить форму вложения, которая относится к конкретному письму того дня.

Я использую этот код:

импорт электронной почты импорт getpass, imaplib import os import sys

detach_dir = 'path'
# if 'attachments' not in os.listdir(detach_dir):
#     os.mkdir('attachments')

userName = 'xyz@gmail.com'
passwd = 'xyzabc'

imapSession = imaplib.IMAP4_SSL('imap.gmail.com')
typ, accountDetails = imapSession.login(userName, passwd)
if typ != 'OK':
    print ('Not able to sign in!')
    raise


day = datetime.now().strftime("%Y-%m-%d")
subject = 'this is the subject name'
look_for = '(SENTSINCE {0} SUBJECT "{1}")'.format(datetime.strptime(day, '%Y-%m-%d').strftime('%d-%b-%Y'), subject)
imapSession.select('Inbox')
typ, data = imapSession.search(None, look_for)

if typ != 'OK':
        print ('Error searching Inbox.')
        raise

     # Iterating over all emails
for msgId in data[0].split(): typ, messageParts = imapSession.fetch(msgId,'(RFC822)')
if typ != 'OK':
    print ('Error fetching mail.')
    raise

emailBody = messageParts[0][1]
mail = email.message_from_string(emailBody)
for part in mail.walk():
    if part.get_content_maintype() == 'multipart':
        # print part.as_string()
        continue
    if part.get('Content-Disposition') is None:
            # print part.as_string()
        continue
    fileName = part.get_filename()

    if bool(fileName):
        filePath = os.path.join(detach_dir,fileName)
        if not os.path.isfile(filePath) :
            print (fileName)
            fp = open(filePath, 'wb')
            print "done"
            fp.write(part.get_payload(decode=True))
            fp.close()
imapSession.close()

imapSession.logout()

Это не загрузка файла и закрытие плз помощи в разрешении кода или если у кого-то есть код для этого, пожалуйста, дайте его в разделе ответов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...