1

我的 c sharp 程序目前获取 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]并且一条消息说它将在运行时解决。我不知道其他字段叫什么(即接收日期、发件人、大小)。

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

4

3 回答 3

1

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

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

智能感知有时不适用于 VSTO 的原因是许多属性返回dynamic. 动态被视为支持所有可以想象的方法和属性的对象。这就是阻止智能感知工作的原因。如果您使用不存在的方法,它将编译,但在运行时失败。

我发现 MSDN 文档在 VSTO 中处理动态时非常宝贵。

于 2012-05-17T01:47:32.850 回答
0

如果您不想为每一行投射对象,您可以这样做:

        for (int i = 0; i < items.Count; i++)
        {
            var mailItem = items[i] as Outlook.MailItem;
            if (mailItem != null)
            {
                SenderName = mailItem.SenderName;
                //etc...
            }
        }
于 2016-12-17T00:16:21.900 回答
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();
于 2016-09-13T00:58:54.313 回答