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

如何更新本地文件夹中.msg文件的SentOn日期?支持Python/VBA吗?

修改本地.msg文件的SentOn日期方法

可以通过VBA、Python或第三方工具修改.msg文件的SentOn日期,以下是具体实现方式:

VBA实现(依赖Outlook)

.msg是Outlook原生格式,借助Outlook对象模型直接操作最稳定:

  • 操作步骤:
    1. 打开Outlook客户端,按Alt+F11打开VBA编辑器
    2. 右键点击项目列表,选择「插入」→「模块」
    3. 粘贴以下代码并修改路径和目标日期:
Sub ModifyMsgSentOnDate()
    Dim msg As Outlook.MailItem
    Dim filePath As String
    Dim newSentOnDate As Date
    
    ' 替换为你的.msg文件绝对路径
    filePath = "C:\Docs\old_email.msg"
    ' 设置新的发送日期(格式:#年/月/日 时:分:秒#)
    newSentOnDate = #2024/05/20 14:45:00#
    
    Set msg = Outlook.Application.CreateItemFromTemplate(filePath)
    ' 修改SentOn属性
    msg.SentOn = newSentOnDate
    ' 覆盖原文件保存,若要保留原文件可修改路径为新地址
    msg.SaveAs filePath, olMSG
    
    Set msg = Nothing
    MsgBox "SentOn日期修改完成"
End Sub
  • 注意:运行前确保Outlook处于打开状态,代码会直接覆盖原文件,建议提前备份。

Python实现(使用pywin32库)

通过pywin32调用Outlook接口,实现和VBA一致的逻辑:

  • 操作步骤:
    1. 安装依赖库:pip install pywin32
    2. 编写代码并运行:
import win32com.client as win32
import datetime

def update_msg_sent_on(file_path, new_sent_datetime):
    outlook = win32.Dispatch("Outlook.Application")
    # 加载本地.msg文件
    mail_item = outlook.CreateItemFromTemplate(file_path)
    # 赋值新的发送日期
    mail_item.SentOn = new_sent_datetime
    # 3对应olMSG格式,覆盖原文件保存
    mail_item.SaveAs(file_path, 3)
    
    # 释放资源
    del mail_item
    del outlook

if __name__ == "__main__":
    target_file = r"C:\Docs\old_email.msg"
    # 设置目标日期时间
    new_date = datetime.datetime(2024, 5, 20, 14, 45, 0)
    update_msg_sent_on(target_file, new_date)
    print("SentOn日期修改完成")
  • 注意:同样依赖Outlook客户端,运行时避免Outlook被其他进程占用。

第三方工具实现(无需代码)

如果不想编写代码,可使用专门的.msg文件编辑工具:

  • MsgEdit:轻量级单文件编辑器,打开.msg后直接找到「SentOn」字段修改保存,无需依赖Outlook
  • Outlook PST Viewer Pro:支持批量导入.msg文件,批量修改包括SentOn在内的元数据,适合大量文件处理场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:21:02