MailItem SaveAs() 方法文件类型
MailItem SaveAs() Method FIletypes
当我传递 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 并且它工作正常,但是以正确的格式保存 int 会更方便。
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 类型时指定它。但这是另一天的问题。我想出了答案。
MSDN中的OlSaveAsType枚举页面提供了table值和对应的文件扩展名:
olTXT 文本格式 (.txt)
olRTF 富文本格式 (.rtf)
olTemplate Microsoft Outlook 模板 (.oft)
olMSG Outlook 邮件格式 (.msg)
olDoc Microsoft Office Word 格式 (.doc)
olHTML HTML 格式 (.html)
olVCard VCard 格式 (.vcf)
olVCal VCal 格式 (.vcs)
olICal iCal 格式 (.ics)
olMSGUnicode Outlook Unicode 邮件格式 (.msg)
olMHTML MIME HTML 格式 (.mht)
如果您是在调用 MailItem.SaveAs.
时指定文件名(包括扩展名)的人,我不确定如何获得错误的扩展名
确保指定包含目录、文件名和扩展名的完全限定文件名。
当我传递 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 并且它工作正常,但是以正确的格式保存 int 会更方便。
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 类型时指定它。但这是另一天的问题。我想出了答案。
MSDN中的OlSaveAsType枚举页面提供了table值和对应的文件扩展名:
olTXT 文本格式 (.txt)
olRTF 富文本格式 (.rtf)
olTemplate Microsoft Outlook 模板 (.oft)
olMSG Outlook 邮件格式 (.msg)
olDoc Microsoft Office Word 格式 (.doc)
olHTML HTML 格式 (.html)
olVCard VCard 格式 (.vcf)
olVCal VCal 格式 (.vcs)
olICal iCal 格式 (.ics)
olMSGUnicode Outlook Unicode 邮件格式 (.msg)
olMHTML MIME HTML 格式 (.mht)
如果您是在调用 MailItem.SaveAs.
时指定文件名(包括扩展名)的人,我不确定如何获得错误的扩展名确保指定包含目录、文件名和扩展名的完全限定文件名。