通過 Lotus Domino Objects COM 組件,.NET 應用可訪問 Domino 服務器/Notes 客戶端對象模型,實現郵件收發、附件處理、用戶列表獲取。需環境安裝 Notes/Domino Designer/Administrator。
using Domino;regsvr32 "C:\Program Files\lotus\notes\nlsxbe.dll"NotesSession ns;
NotesDatabase ndb; // 用戶郵件數據庫
// 遍歷 People 視圖,填充 ComboBox
NotesView view = ndb.GetView("People");
NotesDocument doc = view.GetFirstDocument();
while (doc != null) {
string fullName = doc.GetItemValue("FullName")[0].ToString();
cb_People.Items.Add(fullName);
doc = view.GetNextDocument(doc);
}
try {
if (ns != null) {
NotesDocument mail = ndb.CreateDocument();
mail.ReplaceItemValue("Form", "Memo");
mail.ReplaceItemValue("SendTo", cb_People.Text); // 單收件人
// 多收件人:
// string[] receivers = { cb_People.Text, "windie chai/TEST" };
// mail.ReplaceItemValue("SendTo", receivers);
mail.ReplaceItemValue("Subject", tb_Subject.Text);
// 正文 (RichText)
NotesRichTextItem body = mail.CreateRichTextItem("Body");
body.AppendText(tb_Body.Text);
// 附件
if (!string.IsNullOrEmpty(tb_Attachment.Text)) {
NotesRichTextItem attachment = mail.CreateRichTextItem("Attachment");
attachment.EmbedObject(EMBED_TYPE.EMBED_ATTACHMENT, "", tb_Attachment.Text, "attachment");
// 多附件:再次調用 EmbedObject
}
// 發送
object sendTo = mail.GetItemValue("SendTo");
mail.Send(false, ref sendTo);
MessageBox.Show("Successfully!");
}
} catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); }
定義郵件實體類:
public class Mail {
public string Subject { get; set; }
public string From { get; set; }
public string Body { get; set; }
public string Time { get; set; }
public List<NotesEmbeddedObject> Files { get; set; } = new List<NotesEmbeddedObject>();
}
遍歷 $Inbox 視圖:
List<Mail> mails = new List<Mail>();
NotesDbDirectory dir = ns.GetDbDirectory("DominoT/TEST");
NotesDatabase mailDb = dir.OpenMailDatabase();
NotesView inbox = mailDb.GetView("$Inbox");
NotesDocument doc = inbox.GetFirstDocument();
while (doc != null) {
Mail m = new Mail {
Subject = doc.GetItemValue("Subject")[0].ToString(),
From = doc.GetItemValue("From")[0].ToString(),
Body = doc.GetItemValue("Body")[0].ToString(),
Time = doc.GetItemValue("PostedDate")[0].ToString()
};
// 提取附件
foreach (NotesItem item in doc.Items) {
if (item.Name == "$FILE") {
string fileName = item.Values[0].ToString();
NotesEmbeddedObject file = doc.GetAttachment(fileName);
if (file != null) m.Files.Add(file);
}
}
mails.Add(m);
lb_Mail.Items.Add(m.Subject); // UI 列表
doc = inbox.GetNextDocument(doc);
}
// ListBox 選中項顯示
Mail m = mails[lb_Mail.SelectedIndex];
StringBuilder sb = new StringBuilder();
sb.AppendLine(m.Subject).AppendLine("----------")
.AppendLine(m.Time).AppendLine("----------")
.AppendLine(m.Body).AppendLine("----------")
.AppendLine("Attachments:");
foreach (var f in m.Files) sb.AppendLine(f.Name);
tb_Mail.Text = sb.ToString();
btn_OpenAttachment.Enabled = m.Files.Count > 0;
// 打開附件:釋放到臨時路徑並啟動進程
Mail m = mails[lb_Mail.SelectedIndex];
NotesEmbeddedObject file = m.Files[0];
string path = Path.Combine(Application.StartupPath, file.Name);
file.ExtractFile(path);
Process.Start(path);

來源:https://www.cnblogs.com/xiaoshatian/archive/2008/06/17/1223439.html