试图以编程方式创建&打开一个新的Outlook电子邮件

时间:2012-06-28 10:32:58

标签: c# winforms 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项目的标准方法,但不可否认的是,我确实在其他网站上找到了上述代码,只是复制了它。

请问我有什么误解?

3 个答案:

答案 0 :(得分:26)

想一想。您正在CreateItem当前对象上调用this方法。您是否在此课程中定义了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)确保你的班级有适当的使用陈述

using Outlook = Microsoft.Office.Interop.Outlook;

答案 1 :(得分:7)

试试这个

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

答案 2 :(得分:4)

根据我的经验,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