C# 获取outlook电子邮件的属性

C# 获取outlook电子邮件的属性,c#,outlook,C#,Outlook,我的c sharp程序目前获取outlook电子邮件并将其导入数据集。然而,我只知道每封邮件的主题 我正在使用Microsoft.Office.Interop.Outlook.Folder文件夹我使用此变量获取主题(olCurrFolder从另一个循环中设置)。为了获得主题,我做了以下工作: intMailCount = olCurrFolder.Items.Count; for (int i = 1; i <= intMailCount; i++) { strSubject =

我的c sharp程序目前获取outlook电子邮件并将其导入数据集。然而,我只知道每封邮件的主题

我正在使用Microsoft.Office.Interop.Outlook.Folder文件夹我使用此变量获取主题(olCurrFolder从另一个循环中设置)。为了获得主题,我做了以下工作:

intMailCount = olCurrFolder.Items.Count;

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

对于(int i=1;i,Outlook MailItem对象的文档如下所示:

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

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


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

Outlook MailItem对象的文档如下:

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

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

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

我就是这样做的

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(inti=1;i我就是这样做的

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=1;i如果不想为每行强制转换对象,可以执行以下操作:

        for (int i = 0; i < items.Count; i++)
        {
            var mailItem = items[i] as Outlook.MailItem;
            if (mailItem != null)
            {
                SenderName = mailItem.SenderName;
                //etc...
            }
        }
for(int i=0;i
如果不想为每行强制转换对象,可以执行以下操作:

        for (int i = 0; i < items.Count; i++)
        {
            var mailItem = items[i] as Outlook.MailItem;
            if (mailItem != null)
            {
                SenderName = mailItem.SenderName;
                //etc...
            }
        }
for(int i=0;i
这正是我一直在寻找的东西,但在谷歌上找不到。仅供参考,在该页面的“属性”下,它有一个名为ReceivedTime的属性。该属性将接收日期和时间一起提供给我,因此效果非常好。对于其他试图做同样事情的人,您必须在下面这样的内容后放置ToString():Items[I].ReceivedTime.ToString()哦,是的。我看到了一个属性列表,但没有看到上面的时间,所以我假设它不在那里。我应该查看属性部分。:)没什么大不了的,那些属性在那页上有点混乱,所以很容易忽略一些东西。而且,有人会假设“时间”意思是时间,而不是日期和时间。这正是我一直在寻找的内容,但在google上找不到。仅供参考,在该页面的属性下,它有一个名为ReceivedTime的属性。该属性将接收的日期和时间一起提供给我,因此效果非常好。对于其他试图做同样事情的人,您必须将ToString()放在在这样之后:Items[i].ReceivedTime.ToString()哦,是的。我看到了一个属性列表,但没有看到上面的时间,所以我假设它不在那里。我应该查看属性部分。:)没什么大不了的,那些属性在那页上有点混乱,所以很容易忽略一些东西。而且,人们会假设“时间”表示时间而不是日期和时间。不要使用多点表示法。除了效率极低之外,在联机交换模式下,您将耗尽RPC通道。仅在循环开始时检索该项目一次,并在完成后使用Marshal.ReleaseComObject将其释放。不要使用多点表示法。除了效率低下,您将在联机交换模式下耗尽RPC通道。仅在循环开始时检索该项目一次,并在完成后使用Marshal.ReleaseComObject释放它。