c# - MailItem SaveAs() 方法文件类型

标签 c# vsto outlook-addin office-addins

当我传递 olMHTML 时,它以 .msg 扩展名保存它,但如果我将扩展名更改为 .mht,它就可以完美地用作 mht 文件,如果我不这样做,我将无法打开扩展名为 .msg 的文件。如果我将它保存为 olMSGUnicode,它保存时没有扩展名,但添加 .msg 扩展名可以使其完美地用作 .msg 文件。

保存为 .mht 的正确方法是什么,因为 olMHTML 似乎是 .msg 格式,尽管它看起来不对,因为正如我所说,我在打开 msg 文件时遇到问题,但在重命名为 .mht 时工作正常,而 olMSGUnicode 而不是不使用扩展名单独保存,将文件作为 .msg 文件打开。

明确一点,为什么 olMHTML 保存为 msg 而不是 mht? olMSGUnicode 适用于 msg 文件,尽管它们保存时没有扩展名添加 .msg 使它们工作完美。正如将 olMHTML 从 .msg 更改为 .mht 一样。

编辑:通过在保存后执行 File.Move(),我可以将其重命名为 .mht 并且它工作正常,但以正确的格式保存会更方便。

EDIT2:评论者要求的代码:

        if (!filename.EndsWith(".mht"))
        {
            filename = filename + ".mht";
        }
        try
        {
            message.SaveAs(path + filename, Microsoft.Office.Interop.Outlook.OlSaveAsType.olMHTML);
            MessageBox.Show(String.Format("Success saving file {0} at {1}", filename, path), "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            string newfilename = filename.Substring(0, filename.Length - 4) + ".mht";
            File.Move(path + filename, path + newfilename);
        }
        catch (System.Exception ex)
        {
            MessageBox.Show(String.Format("Error {0} while trying to save {1} at {2}", ex, filename, path), "Error",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

我意识到我没有将 if 语句更新为不是 .msg,它现在可以工作了。但仍然没有解释为什么当使用 olMHTML 作为保存类型时,我得到一个没有扩展名而不是 .mht 扩展名的文件,我必须在使用其他 SaveAs 类型时指定它。但这是另一天的问题。我想出了答案。

最佳答案

如果您是在调用 MailItem.SaveAs 时指定文件名(包括扩展名)的人,我不确定如何获得错误的扩展名。

确保指定包含目录、文件名和扩展名的完全限定文件名。

关于c# - MailItem SaveAs() 方法文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30004859/

相关文章:

c# - 为什么不调用此 C# 4.0 异步方法?

c# - 面向对象设计 : using method parameters vs properties

c# - 为什么 .NET 中没有 Tree<T> 类?

c# - 对 .NET SQL 程序集进行逆向工程

C#Excel : Programmatically open and copy workbook while ignoring dependency

c# - 需要在磁盘上存储 Office Word 2007 加载项 (VSTO) 的设置文件

outlook - 如何从 Web 服务器向 Outlook 加载项发送推送通知?

c# - 有什么方法可以更改 VSTO Outlook 插件中的边框/标题背景吗?

outlook-addin - Office UI fabric JS Dropdown 组件在单击时未加载正确的样式

c# - 如何使用 StorageItem 保存 vsto 加载项特定数据