You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于客户信息用Python自动迁移Outlook邮件至对应销售代表文件夹

实现Outlook邮件自动分类到对应销售代表文件夹

先将客户信息整理为便于快速查询的映射关系,再遍历收件箱邮件,通过发件人邮箱或正文内的客户编号匹配对应销售代表,最终完成邮件的自动归类。以下是完整实现代码:

import win32com.client as client

# 初始化Outlook实例
outlook = client.Dispatch('Outlook.Application')
namespace = outlook.GetNameSpace("MAPI")
inbox = namespace.GetDefaultFolder(6)

# 构建客户信息映射表,提升查询效率
email_to_rep = {
    "bob@bobsco.com": "John",
    "jim@jimsco.com": "Jane"
}
id_to_rep = {
    "1234": "John",
    "5678": "Jane"
}

# 获取收件箱邮件,可按需过滤(比如只处理未读邮件:inbox.Items.Restrict("[Unread] = True"))
emails = inbox.Items

for mail in emails:
    try:
        assigned_rep = None
        # 优先通过发件人邮箱匹配销售代表
        sender_email = mail.SenderEmailAddress.lower()
        if sender_email in email_to_rep:
            assigned_rep = email_to_rep[sender_email]
        
        # 邮箱未匹配到的话,扫描邮件正文查找客户编号
        if not assigned_rep:
            body = mail.Body
            for cust_id in id_to_rep.keys():
                if cust_id in body:
                    assigned_rep = id_to_rep[cust_id]
                    break
        
        # 找到对应文件夹并移动邮件
        if assigned_rep:
            try:
                target_folder = inbox.Folders[assigned_rep]
                mail.Move(target_folder)
                print(f"邮件已移动至{assigned_rep}的文件夹")
            except Exception as folder_err:
                print(f"未找到{assigned_rep}的文件夹:{folder_err}")
    except Exception as mail_err:
        print(f"处理邮件时出错:{mail_err}")

关键细节说明

  • 映射表设计:用两个字典分别存储邮箱、客户编号到销售代表的对应关系,实现O(1)的快速查询,适配每日数百封邮件的处理效率需求。
  • 匹配优先级:优先通过发件人邮箱匹配(准确率更高),避免正文扫描的冗余操作;仅当邮箱未匹配时,才检查正文内的客户编号。
  • 异常处理:加入双层异常捕获,既避免单封邮件处理失败导致整个循环中断,也能及时反馈文件夹不存在的问题。
  • 可选优化:可以用Restrict方法过滤邮件,比如只处理未读邮件,减少重复处理;若客户信息较多,可将数据存在Excel/CSV中,通过pandas读取生成映射表,避免硬编码。

内容的提问来源于stack exchange,提问作者benfo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:40:34