尝试以编程方式创建和打开新的Outlook电子邮件

我有一个winforms应用程序,我正在尝试创建一个方法,将创建并打开一个新的Outlook电子邮件。 到目前为止我有

private void CreateOutlookEmail() { try { Outlook.MailItem mailItem = (Outlook.MailItem) this.CreateItem(Outlook.OlItemType.olMailItem); mailItem.Subject = "This is the subject"; mailItem.To = "someone@example.com"; mailItem.Body = "This is the message."; mailItem.Importance = Outlook.OlImportance.olImportanceLow; mailItem.Display(false); } catch (Exception eX) { throw new Exception("cDocument: Error occurred trying to Create an Outlook Email" + Environment.NewLine + eX.Message); } } 

但是’CreateItem’引用带有错误消息的下划线

“不包含CreateItem的定义”

我认为’CreateItem’是MS Office项目的标准方法,但不可否认的是,我确实在另一个网站上找到了上述代码并简单地复制了它。

我有什么误会吗?

想一想。 您正在this当前对象上调用CreateItem方法。 你在这个类中定义了CreateItem方法吗?

而不是你的:

 Outlook.MailItem mailItem = (Outlook.MailItem) this.CreateItem(Outlook.OlItemType.olMailItem); 

你需要这些台词:

 Outlook.Application outlookApp = new Outlook.Application(); Outlook.MailItem mailItem = (Outlook.MailItem) outlookApp.CreateItem(Outlook.OlItemType.olMailItem); 

您可以创建Outlook应用程序的实例,您可以在其上调用CreateItem方法。

编辑

还有两件事可以使这项工作正常进行。

1)将Microsoft.Office.Interop.Outlook包的引用添加到项目中

2)确保您的class级中有适当的使用声明

 using Outlook = Microsoft.Office.Interop.Outlook; 

试试这个

 string subject = "My subject"; string emailTag = string.Format("mailto:someone@test.com?subject={0}", subject); System.Diagnostics.Process.Start(emailTag); 

根据我的经验,Office.Interop可能很麻烦,只需使用适当的参数启动Outlook可能代表一个更简单,更便携的选项:

 System.Diagnostics.Process.Start("C:\\Program Files (x86)\\Microsoft Office\\Office12\\OUTLOOK.EXE", "/c ipm.note /m name@address.com")); 

Outlook命令行开关为您提供了更多包含众多信息来源的选项( 请访问http://www.outlook-tips.net/how-to/using-outlook-command-lines )