我的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]
之后键入句点并且消息表明它将在运行时解析时,智能感知不会提取任何内容。我不知道其他字段是什么(即收到日期,从,大小)。
是否有包含我要查找的字段名称的列表?
答案 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...
}
}