繁体   English   中英

如何在python中从指定收件人收到新邮件后下载Outlook附件

[英]How to download Outlook attachments after receiving new mail from specified receiver in python

我创建了一个 python 脚本,用于从指定的发件人下载 Outlook 附件。 一旦收到来自指定发件人的新邮件,我想自动下载 Outlook 附件。 例如,我的发件人在上午 10.30 发送,附件应按时下载。(10.30/10.31)。 这可以使用 VBA 完成吗?

下面是我的邮件附件的下载脚本。

from pathlib import Path
from pyexpat.errors import messages
import win32com.client
import os,sys
import time
import glob
import subprocess
import xlwings as xw
import shutil 

#Check existing & create folder
output_dir=Path.cwd() / "Output"
output_dir.mkdir(parents=True,exist_ok=True)

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)

print("Success")
inbox.Name

messages=inbox.items
ytemails=[message for message in inbox.Items if 
message.SenderEmailAddress.endswith('123@gmail.com')]
i1=0

for message in ytemails:
  print("insta =",message)
  i1=i1+1
  sender=message.Sender
  subject = message.Subject
  body=message.body
  attachments=message.Attachments
  print(str(i1))
    if(str(sender).__contains__("inqube")):
    print("message =",message)
    #time.sleep(20)

    target_folder=output_dir / str(subject)

    if os.path.exists(target_folder):
        print(str(target_folder))
        print("Error")

    elif (target_folder.exists):
        print(str(target_folder))
        target_folder.mkdir(parents=True, exist_ok=True)

    print("step >> "+str(i1))
    for attachment in attachments:
        print(str(attachment))
        attachment.SaveAsFile(target_folder / str(attachment))

谢谢。

如果您需要立即处理传入的电子邮件,则需要处理Application类的NewMailEx事件。 对于 Microsoft Outlook 处理的每个收到的项目,此事件都会触发一次。 该项目可以是几种不同的项目类型之一,例如MailItemMeetingItemSharingItem NewMailEx事件在新邮件到达收件箱时触发,在客户端规则处理发生之前。 使用由EntryIDCollection字符串表示的条目 ID 来调用NameSpace.GetItemFromID方法并处理该项目。

您也可以为收件箱文件夹挂钩Items类的ItemAdd事件。 两种方法都有其优点和缺点。

但永远不要遍历文件夹中的所有项目:

ytemails=[message for message in inbox.Items if 
message.SenderEmailAddress.endswith('123@gmail.com')]

相反,您需要使用 Items 类的Find / FindNextRestrict方法。 这些方法允许获取与您的条件相对应的项目,而无需遍历文件夹中的所有项目。 在以下文章中阅读有关这些方法的更多信息:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM