嗨,我们都知道,如果我们每天收到数百封电子邮件,那么浏览每个电子邮件并下载附件是很忙碌的。因此,我们可以使用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()
我希望你们明白了,如果您有任何疑问,请在评论部分告诉我。