0

这可能是非常初学者的问题。我正在尝试创建我的第一个 Windows 窗体应用程序,并希望通过单击窗体上的按钮来创建 Outlook 电子邮件。

问题是有13个错误主要是说:

严重性代码描述项目文件行抑制状态错误 CS0246 找不到类型或命名空间名称“Outlook”(您是否缺少 using 指令或程序集引用?)提供机器 v.0.0.1 C:\Users\PC\source \repos\Offer machine v.0.0.1\Offer machine v.0.0.1\Form1.cs 29 活动

我添加了对我的项目的引用:

在此处输入图像描述

这是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Offer_machine_v._0._0._1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                List<string> lstAllRecipients = new List<string>();
                //Below is hardcoded - can be replaced with db data
                lstAllRecipients.Add("sanjeev.kumar@testmail.com");
                lstAllRecipients.Add("chandan.kumarpanda@testmail.com");

                Outlook.Application outlookApp = new Outlook.Application();
                Outlook._MailItem oMailItem = (Outlook._MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);
                Outlook.Inspector oInspector = oMailItem.GetInspector;
                // Thread.Sleep(10000);

                // Recipient
                Outlook.Recipients oRecips = (Outlook.Recipients)oMailItem.Recipients;
                foreach (String recipient in lstAllRecipients)
                {
                    Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(recipient);
                    oRecip.Resolve();
                }

                //Add CC
                Outlook.Recipient oCCRecip = oRecips.Add("THIYAGARAJAN.DURAIRAJAN@testmail.com");
                oCCRecip.Type = (int)Outlook.OlMailRecipientType.olCC;
                oCCRecip.Resolve();

                //Add Subject
                oMailItem.Subject = "Test Mail";

                // body, bcc etc...

                //Display the mailbox
                oMailItem.Display(true);
            }
            catch (Exception objEx)
            {
                Response.Write(objEx.ToString());
            }
        }

        private void Label1_Click(object sender, EventArgs e)
        {

        }
    }
}
4

2 回答 2

2

您没有在代码中添加正确的使用。您需要添加:

using Microsoft.Office.Interop.Outlook;

如果没有这一行,您应该在互操作库中的每个对象之前键入完整的命名空间。通过就地使用,您可以删除Outlook.来​​自互操作的所有对象。但是创建主应用程序对象的人需要完整的命名空间以避免与 Winforms 中定义的应用程序类发生冲突。

Microsoft.Office.Interop.Outlook.Application outlookApp = 
                   new Microsoft.Office.Interop.Outlook.Application();
_MailItem oMailItem = (_MailItem)outlookApp.CreateItem(OlItemType.olMailItem);
Inspector oInspector = oMailItem.GetInspector;

..... and so on ....
于 2019-08-19T19:14:25.547 回答
1

您似乎已将 Outlook 互操作添加到项目引用中两次。

Outlook 自动化参考

至于错误信息,您只需在 Outlook 命名空间中添加一个别名:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;

此外,您可能会发现C# 应用程序自动化 Outlook (CSAutomateOutlook)示例项目很有帮助。

于 2019-08-19T19:14:52.313 回答