将Outlook附件名称接收到C#datagrid中

时间:2017-09-05 16:00:42

标签: c# datagridview outlook attachment

目前我的应用程序正在从Outlook中提取所有未读电子邮件并在datagridview中显示它们。导致我承受压力的是错误:" System .__ ComObject"这是出现在"附件"列。

我尝试做的就是将未读Outlook电子邮件中的附件名称添加到附件列中。

我不明白我哪里出错了。任何帮助都会很棒。

谢谢。

  private void Form1_Load(object sender, EventArgs e)
    {

try
        {
            Outlook._Application app = new Outlook.Application();
            Outlook.NameSpace ns = app.GetNamespace("MAPI");
            Outlook.MAPIFolder inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
            Outlook.Items UnRead = inbox.Items.Restrict("[Unread]=true");

            ns.SendAndReceive(true);

            dt = new DataTable("Inbox");
            dt.Columns.Add("From Email", typeof(String));
            dt.Columns.Add("Date", typeof(String));
            dt.Columns.Add("Subject", typeof(String));
            dt.Columns.Add("Body", typeof(String));
            dt.Columns.Add("Attachments", typeof(String));
            dt.Columns.Add("Print Body", typeof(String));
            dt.Columns.Add("File Format", typeof(String));
            dt.Columns.Add("Selected", typeof(String));

            dataGridView1.DataSource = dt;
            foreach (Object item in inbox.Items)
            {
                if ((item as Outlook.MailItem) != null && (item as Outlook.MailItem).UnRead == true)
                {
                    Outlook.MailItem item1 = (Outlook.MailItem)item;

        dt.Rows.Add(new Object[] { item1.SenderName, item1.SentOn.ToLongDateString() + "" + item1.SentOn.ToLongTimeString(), item1.Subject,
        item1.Body, item1.Attachments});
                }
            }
            MessageBox.Show("Retrieving Unread Email Messages.");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }


    }

0 个答案:

没有答案