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

C#/.NET 4.8程序中实现Outlook邮件拖放功能的问题求助

C#/.NET 4.8程序中实现Outlook邮件拖放功能的问题求助

大家好,我现在在开发一个C#/.NET 4.8的应用,想实现从Outlook拖拽邮件到程序内处理的功能。目前拖拽附件是正常的,因为能直接获取到文件流;但拖拽邮件本身的时候就卡壳了——我本来以为会得到.msg格式的文件数据,结果检查拖放事件的Data对象时,只拿到了RenPrivateSourceFolder相关的信息,完全没有实际的邮件内容。

我也尝试用Outlook的COM Interop DLL来处理,但是依然拿不到邮件数据。下面是我写的代码片段:

拖放事件处理代码

void Import_DragDrop(object sender, DragEventArgs e)
{
    try
    {
        if (e.Data.GetDataPresent("FileGroupDescriptor"))
        {
            var obj = e.Data.GetData("RenPrivateMessages"); 
            if (obj is object[] items && items.Length > 0) // 这里items总是为空数组
            {
                InitOutlook();
                for (int i = 0; i < items.Length; i++)
                {
                    var mailItemComObject = items[i];
                    var mailItem = mailItemComObject as Outlook.MailItem;
                    if (mailItem != null)
                    {
                        string tempPath = System.IO.Path.Combine(System.IO.Path.GetTempPath(), mailItem.Subject + "." + i);
                        mailItem.SaveAs(tempPath, Outlook.OlSaveAsType.olMSG);
                        MessageBox.Show("Saved mail to " + tempPath);
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
        // 省略了异常处理逻辑
    }
}

初始化Outlook实例的方法

之前遇到Outlook已运行时创建实例失败的问题,所以写了带重试的初始化逻辑:

private static void InitOutlook()
{
    Outlook.Application outlookApp = null;
    int retries = 3;
    while (retries-- > 0)
    {
        try
        {
            outlookApp = (Outlook.Application)Marshal.GetActiveObject("Outlook.Application");
            break;
        }
        catch (COMException ex) when ((uint)ex.HResult == 0x800401E3)
        {
            System.Threading.Thread.Sleep(500);
        }
    }
    if (outlookApp == null)
    {
        // 省略了实例创建失败的后续处理
    }
}

后来我还尝试了用GroupDescriptorW来获取数据,以及用开源项目OpenMcdf来解析,但是都没有成功拿到邮件内容。

有没有大佬能指点一下?不管是基于Outlook Interop的方案,还是其他不需要依赖Outlook的方法,我都很感激!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:33:01