获取 Outlook 电子邮件的属性

本文关键字:属性 电子邮件 Outlook 获取 | 更新日期: 2023-09-27 18:34:20

我的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]后键入句点时,智能感知不会拉出任何内容,并且一条消息说它将在运行时解决。我不知道其他字段叫什么(即接收日期、发件人、大小)。

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

获取 Outlook 电子邮件的属性

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

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

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

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

我就是这样做的

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();

如果您不想为每一行强制转换对象,则可以执行以下操作:

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