获取 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 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...
}
}