首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 簡單操作 Lotus Notes 郵件(三):遍歷收件箱並解析郵件與附件

     編輯:關於C語言

全域郵件集合


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):取得附件物件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved