c# - 使用 C# 打开 Outlook 模板文件
问题描述
我有一个小型应用程序,需要能够打开已经创建的 Outlook 模板文件。另一方面,我可以轻松打开空白的 Outlook 电子邮件。然而,到目前为止我所尝试的一切似乎都不起作用。
using Microsoft.Office.Interop.Outlook;
using Outlook = Microsoft.Office.Interop.Outlook;
using OutlookApp = Microsoft.Office.Interop.Outlook.Application;
private void CreateItemFromTemplate()
{
Outlook.Folder folder =
Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderDrafts) as Outlook.Folder;
Outlook.MailItem mail =
Application.CreateItemFromTemplate(
@"Forms\\RLA.oft", folder) as Outlook.MailItem;
mail.Subject = "Congratulations";
mail.Save();
}
这直接来自 MS 站点,但在 Session 和 CreateItemFromTemplate 下出现错误。我试过包括所有推荐的参考资料,但没有任何效果。
这是我尝试过的另一种选择。
OutlookApp outlookApp = new OutlookApp();
//MailItem mailItem = outlookApp.CreateItem(OlItemType.olMailItem);
MailItem mailItem = outlookApp.CreateItemFromTemplate("\\Content\\RLW.oft", OlItemType.olMailItem);
上面的这个选项适用于 CreateItem 对象,但不适用于 CreateItemFromTemplate 对象。
C#打开一个模板不可能这么难。任何帮助将不胜感激。
解决方案
如果以后遇到这种情况,我想出了自己的答案。这条线就是问题所在。
MailItem mailItem = outlookApp.CreateItemFromTemplate("\\Content\\RLW.oft", OlItemType.olMailItem);
编写时,Visual Studio 实际上会告诉您何时将鼠标悬停在它上面。参数“OlItemType.olMailItem”是它查找的文件夹。如果您不考虑该参数,它将查找给定的路径。如果没有,它将无法正确打开。
推荐阅读
- java - 如果它不是 ArrayList 中的唯一值,如何循环提示用户输入?
- mysql - 用 UNION 选择 DISTINCT
- c++ - 如何通过像素完美缩放/移动修复 SFML 中顶点数组中的垂直伪影线?
- swagger - 使用 Swagger 2.0,如何显示一个模型,它是一个接受多种类型的数组?
- java - StreamingFileSink 的使用抛出 NoClassDefFoundError
- javascript - 我需要将随机图像生成器附加到游戏中的障碍组件
- javascript - 获取活动标签项的元素以显示边界
- html - R Shiny - 垂直对齐标签并以水平形式输入
- bash - 使用 'sh -c' 时 bash diff 返回 0
- cygwin - Cygwin 版本(中)兼容性