全域郵件集合
public List<Mail> mails = new List<Mail>();
遍歷收件箱完整代碼
lb_Mail.Items.Clear();
mails.Clear();
NotesDbDirectory dir = ns.GetDbDirectory("DominoT/TEST");
NotesDatabase maildb = dir.OpenMailDatabase();
NotesView nv = maildb.GetView("$inbox");
NotesDocument doc = nv.GetFirstDocument();
while (doc != null)
{
Mail mail = new Mail();
mail.Subject = ((object[])doc.GetItemValue("Subject"))[0].ToString();
mail.From = ((object[])doc.GetItemValue("From"))[0].ToString();
mail.Body = ((object[])doc.GetItemValue("Body"))[0].ToString();
mail.Time = ((object[])doc.GetItemValue("PostedDate"))[0].ToString();
// 解析附件
object[] items = (object[])doc.Items;
foreach (NotesItem item in items)
{
if (item.Name == "$FILE")
{
string fileName = ((object[])item.Values)[0].ToString();
NotesEmbeddedObject file = (NotesEmbeddedObject)doc.GetAttachment(fileName);
if (file != null)
mail.Files.Add(file);
}
}
mails.Add(mail);
lb_Mail.Items.Add(mail.Subject);
doc = nv.GetNextDocument(doc); // 移至下一封
}
關鍵 API 解析
GetDbDirectory(server):取得伺服器資料庫目錄
OpenMailDatabase():開啟當前用戶郵件資料庫
GetView("$inbox"):收件箱視圖 (系統固定名稱)
GetFirstDocument/GetNextDocument:視圖文件迭代器模式
GetItemValue(field):回傳 object[],取 [0] 為實際值
Items 集合遍歷尋找 $FILE 項目解析附件
GetAttachment(name):取得附件物件