首先让我说这个代码是在SharpDevelop 4.3中开发的,代码运行正常,并给出了它应该得到的结果,但是在调试方面到达那一点要困难得多,因为监视窗口似乎没有像我预期的那样呈现价值。 任何人都能告诉我是否应该做些什么来检查这个循环中的值?
例如mailItem.Subject
的值在监视中显示为:对象不是类型Microsoft.Office.Interop.Outlook._MailItem
(我对下划线有点困惑,因为我读它只是一个命名约定而我相信我已经根据自己的喜好删除了整个项目中的下划线)但是我注意到手表中的mailItem显示为System.__ComObject
- 这是否是我丢失的线索?
//LOOPING THROUGH MAIL ITEMS IN THAT FOLDER.
foreach (Microsoft.Office.Interop.Outlook.MailItem mailItem in fldMailItems.Items)
{
if (mailItem.Body != "")
{
MyMail mail = new MyMail();
mail.Subject = (mailItem.Subject == null) ? string.Empty : mailItem.Subject;
//mail.
mailItems.Add(mail);
}
}
为了进一步说明应用Redemption RDOMail时的问题,消息框显示为您所期望的但是监视窗口未显示属性SenderName甚至存在 - 它将基类显示为值:object,其中_Identity
和Identity
均为空,其他非公开成员m_ObjjectToDataMap
的值也为null。
这是一个引起同样头痛的例子:
void ConnectOutlook()
{
session = new Redemption.RDOSession();
session.Logon();
inbox = session.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);
}
void DisconnectOutlook()
{
session.Logoff();
session = null;
}
void MainFormLoad(object sender, EventArgs e)
{
try
{
ConnectOutlook();
int i=0;
foreach ( RDOMail mailItem in inbox.Items.Restrict("[MessageClass] = 'IPM.Note'"))
{
i++;
MessageBox.Show(mailItem.SenderName);
}
....
答案 0 :(得分:0)
文件夹中的所有项目是否都会发生?你需要确保你有一个常规的消息,一个报告项目。
这不适用于Redemption,因为在Redemption中,所有消息项(RDOReportItem,RDOMeetingIrtem等)都是从RDOMail派生的。