15

我有一个 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 项目的标准方法,但不可否认,我确实在另一个网站上找到了上述代码并简单地复制了它。

请问我误会了什么?

4

3 回答 3

36

想想看。您正在调用当前对象的CreateItem方法。thisCreateItem在这个类中定义了方法吗?

而不是你的:

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 语句

using Outlook = Microsoft.Office.Interop.Outlook;
于 2012-06-28T10:41:01.537 回答
8

试试这个

string subject = "My subject";
string emailTag = string.Format("mailto:someone@test.com?subject={0}", subject);
System.Diagnostics.Process.Start(emailTag);
于 2012-06-28T10:58:38.123 回答
6

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

于 2014-07-04T11:56:31.433 回答