使用Python自动下载电子邮件附件。 (Python3)
#python #devops #自动化

嗨,我们都知道,如果我们每天收到数百封电子邮件,那么浏览每个电子邮件并下载附件是很忙碌的。因此,我们可以使用Python程序下载这些附件。让我们深入研究技术部分。

先决条件

 pip install tqdm
 pip install python-imap

2)需要在Gmail上打开两个步骤验证,并添加应用程序密码。GO管理您的帐户>安全>两个步骤验证>添加应用程序密码。

3)转到Gmail设置并启用IMAP。

需要模块

import imaplib
import email
import os
from datetime import datetime, timedelta

**创建文件夹以下载其中的这些附件。**

folder_name = today.strftime(f"Mail_Attachments")
if not os.path.exists(folder_name):
    os.makedirs(folder_name, mode=0o777)
folder_path = os.path.abspath(folder_name)
 user = "yourmailid@gmail.com"
    password = "copy_pass_from_app_password"
    imap_url = 'imap.gmail.com'
    my_mail = imaplib.IMAP4_SSL(imap_url)
    my_mail.login(user, password)
    my_mail.select('Inbox')

现在我们需要指定我们需要从哪个日期获取并下载附件。
假设我们正在昨天(从昨天到今天)


    today = datetime.now()
    yesterday = today - timedelta(days=1)
    yesterday_date_string = yesterday.strftime("%Y-%m-%d")

    search_query = f'(X-GM-RAW "has:attachment after: 
    {yesterday_date_string}")'
    result, data = my_mail.search(None, search_query)
    email_ids = data[0].split()

使用循环我们正在通过检索的所有邮件进行迭代并检查附件,如果是的,我们将其下载到下面的代码下面将显示我们的操作方式。
使用TQDM向用户显示下载进度栏。

 for part in msg.walk():
            if part.get_content_maintype() == 'multipart':
                continue
            if part.get('Content-Disposition') is None:
                continue

            filename = part.get_filename()
            if filename:
                filepath = os.path.join(folder_path,filename)
                with open(filepath, 'wb') as f:
                    f.write(part.get_payload(decode=True))

    my_mail.logout()

我希望你们明白了,如果您有任何疑问,请在评论部分告诉我。