获取Outlook电子邮件的属性

时间:2012-05-17 01:37:27

标签: c# outlook

我的c程序目前获取Outlook电子邮件并将其导入数据集。但是,我只收到每封电子邮件的主题。

我正在使用Microsoft.Office.Interop.Outlook.Folder olCurrFolder;我使用此变量来获取主题(olCurrFolder从另一个循环中设置)。为了得到主题,我这样做:

intMailCount = olCurrFolder.Items.Count;

for (int i = 1; i <= intMailCount; i++)
{
    strSubject = olCurrFolder.Items[i].Subject;
    strEmailReceived = olCurrFolder.Items[i].Received;
}

正如您所看到的,我也在尝试获取收到的日期,但Items[i].Received不起作用。当我在Items[i]之后键入句点并且消息表明它将在运行时解析时,智能感知不会提取任何内容。我不知道其他字段是什么(即收到日期,从,大小)。

是否有包含我要查找的字段名称的列表?

3 个答案:

答案 0 :(得分:1)

Outlook MailItem对象的文档位于:http://msdn.microsoft.com/en-us/library/aa210946(v=office.11).aspx

您可以使用ReceivedTime属性来获取收到的日期和时间。

intellisense有时无法与VSTO一起使用的原因是许多属性返回dynamic。动态被视为支持可以想象的每个方法和属性的对象。这就是阻止intellisense工作的原因。如果使用不存在的方法,它将编译,但在运行时失败。

我发现在VSTO中处理动态时,MSDN文档非常有用。

答案 1 :(得分:0)

我就这样做了

for (int i = 1; i <= items.Count; i++)
{
    if (items[i] is Outlook.MailItem)
    {
        SenderName = ((Outlook.MailItem)inbox.Items[i]).SenderName;
        SenderEmail =((Outlook.MailItem)inbox.Items[i]).SenderEmailAddress;
        Subject = ((Outlook.MailItem)inbox.Items[i]).Subject;
        Time = ((Outlook.MailItem)inbox.Items[i]).CreationTime.ToString();

答案 2 :(得分:0)

如果您不想为每一行投射对象,可以执行以下操作:

        for (int i = 0; i < items.Count; i++)
        {
            var mailItem = items[i] as Outlook.MailItem;
            if (mailItem != null)
            {
                SenderName = mailItem.SenderName;
                //etc...
            }
        }