国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C#語(yǔ)言集成Lotus Notes客戶端實(shí)現(xiàn)郵件發(fā)送

2016-05-14 04:35林凱李曉偉倪伏躍

林凱 李曉偉 倪伏躍

摘要:Lotus Notes通常被稱為群件,它是一款集電子郵件、通訊軟件、數(shù)據(jù)庫(kù)軟件、文件管理軟件、工作流軟件于一體的辦公軟件。目前,Lotus Notes系統(tǒng)在氣象部門的應(yīng)用主要體現(xiàn)在公文的收發(fā),預(yù)警信號(hào),災(zāi)情直報(bào)等。本文介紹了通過(guò) COM 訪問(wèn) Lotus Domino 資源類,使用Microsoft .NET訪問(wèn)Lotus Notes的數(shù)據(jù)庫(kù),實(shí)現(xiàn)快速發(fā)送Lotus Notes郵件。

關(guān)鍵詞:Microsoft.NET Lotus Notes Domino COM

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)05-0000-00

1 設(shè)計(jì)思路

Windows通常通過(guò)開放數(shù)據(jù)庫(kù)互連標(biāo)準(zhǔn)ODBC進(jìn)行數(shù)據(jù)交換與操作,后來(lái)微軟又推出了ADO技術(shù)用于 Oracle等關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),盡管也提供了Notes ODBC,但它并不支持全文檢索,因此要在Microsoft .NET中實(shí)現(xiàn)對(duì)Lotus Notes數(shù)據(jù)庫(kù)的存取,必須通過(guò)別的方法,即在Notes中使用COM和OLE。

??OLE是Windows的一個(gè)特征,OLE通過(guò)把應(yīng)用程序的功能作為對(duì)象暴露給其他應(yīng)用程序,這些對(duì)象擁有屬性(數(shù)據(jù))和方法(函數(shù)),應(yīng)用程序通過(guò)OLE中的對(duì)象去執(zhí)行相應(yīng)的任務(wù)。Domino既可以作為一個(gè)OLE提供給外部程序調(diào)用,也可以通過(guò)OLE去控制其他OLE對(duì)象。在R5.03以后,Lotus提供了一個(gè)后臺(tái)的COM類NotesSession。NotesSession是一個(gè)功能強(qiáng)大的對(duì)象模型,它提供了其他Notes對(duì)象的接口,即只有通過(guò)它才能訪問(wèn)Notes中的數(shù)據(jù)庫(kù)對(duì)象NotesDatabase、NotesView等。

2 程序?qū)崿F(xiàn)

下面僅介紹通過(guò)Domino COM的NotesSession和NotesDatabase屬性和方法,來(lái)實(shí)現(xiàn)郵件發(fā)送的功能。其它的應(yīng)用可參考Lotus Notes的幫助文檔.設(shè)計(jì)程序之前必須取得三個(gè)信息:?服務(wù)器的描述(如:besz_s/河北/CMA),?郵件文件信息(如mail\zkyangyuan.nsf )?用戶密碼(如:yangyuan)。啟動(dòng)VS2008項(xiàng)目,添加COM引用。

(1)首先先登陸當(dāng)前激活的郵箱,以下函數(shù)模塊可以實(shí)現(xiàn)登陸郵箱的功能。

private void loginMail()

{

try

{

string PassWord = "yangyuan";//登陸時(shí)需要輸入的密碼

//定義Notes會(huì)話

NotesSession ns = new NotesSession();

//初始化Notes會(huì)話

ns.Initialize(PassWord);

//郵件數(shù)據(jù)庫(kù)的服務(wù)器描述

string mail_Server="besz_s/河北/CMA";

//當(dāng)前用戶的郵件數(shù)據(jù)庫(kù)

string mail_dbName=@"mail\zkyangyuan.nsf";

//定義郵件數(shù)據(jù)庫(kù)

NotesDatabase ndb;

//初始化NotesDatabase登陸Notes

ndb =ns.GetDatabase(mail_Server, mail_dbName, false);

if (ndb.IsOpen == false)

ndb.Open();

}

catch (Exception ex)

{

MessageBox.Show("遠(yuǎn)程數(shù)據(jù)庫(kù)連接失敗!");

}

}

(2) 正常登陸郵箱后可以通過(guò)以下函數(shù)模塊可以實(shí)現(xiàn)發(fā)送帶附件的郵件到指定收件人的郵箱。

// Subject表示郵件主題;Body表示郵件正文;Attachment表示郵件附件的文件;Receive_People表示收件人信息

Private void MailSend(String Subject,String Body,String[] Attachment,String Receive_People)

{

try

{

if (ns != null)

{

string[] people = Receive_People.Split(',');

foreach (string str in people)

{

NotesDocument doc = ndb.CreateDocument();

doc.ReplaceItemValue("Form", "Memo");

doc.ReplaceItemValue("SendTo", str);

//郵件主題

doc.ReplaceItemValue("Subject", Subject);

//郵件正文

NotesRichTextItem rt = doc.CreateRichTextItem("Body");

rt.AppendText(Body);

//附件

if (!string.IsNullOrEmpty(Attachment[0]))

{//可以添加多個(gè)附件

NotesRichTextItem attachment = doc.CreateRichTextItem("attachment");

foreach (string Str in Attachment)

{

attachment.EmbedObject(EMBED_TYPE.EMBED_ATTACHMENT,"",Str,attachment");

}

}

//發(fā)送郵件

object obj = doc.GetItemValue("SendTo");

doc.Send(false, ref obj);

doc = null;

}

MessageBox.Show("郵件發(fā)送成功!");

}

}

catch (Exception ex)

{

MessageBox.Show("郵件發(fā)送失??!");

}

}

(3)如下可以實(shí)現(xiàn)把” 道路結(jié)冰黃色預(yù)警信號(hào)”給多個(gè)收件人發(fā)送

//表示收件人信息

String Receive_People=”赤城縣氣象局,崇禮縣氣象局,沽源縣氣象局,懷安縣氣象局,懷來(lái)縣氣象局”;

//表示郵件主題;

String Subject=” 道路結(jié)冰黃色預(yù)警信號(hào)”

//表示郵件正文

String Body =” 張家口市氣象臺(tái)2009年11 月11日16時(shí) 00分發(fā)布道路結(jié)冰黃色預(yù)警信號(hào)”

//表示郵件附件的文件

String[]Attachment={”200911111604544010道路結(jié)冰黃色.xml”}

//調(diào)用郵件發(fā)送函數(shù)

MailSend(Subject, Body, Attachment, Receive_People);

(4)下面的函數(shù)可以得到指定某一群體的所有收件人信息

//初始化

private void People_View ()

{

try

{

//郵件數(shù)據(jù)庫(kù)的服務(wù)器描述

string mail_Server="besz_s/河北/CMA";

//某一個(gè)群體的數(shù)據(jù)庫(kù),如河北省氣象部門通訊錄如下

string mail_dbName=" hebnames.nsf ";

//定義郵件數(shù)據(jù)庫(kù)

NotesDatabase ndb;

//初始化NotesDatabase登陸Notes

ndb =ns.GetDatabase(mail_Server, mail_dbName, false);

//獲取用戶視圖

NotesView vw = ndb.GetView("People");

//遍歷所有用戶

NotesDocument doc = vw.GetFirstDocument();

while (doc != null)

{

//獲取用戶全名

object[] fullname = doc.GetFirstItem("FullName").Values as object[];

lb_People.Items.Add(fullname[1].ToString());

//查找下一個(gè)用戶

doc = vw.GetNextDocument(doc);

}

if (lb_People.Items.Count > 0)

lb_People.SelectedIndex = 0;

}

catch (Exception ex)

{

MessageBox.Show("Error:" + ex.Message);

}

}

3 結(jié)語(yǔ)

采用COM作為Microsoft .NET與Domino的橋梁,既可以發(fā)揮Domino的強(qiáng)大的文檔處理能力,又可以發(fā)揮Microsoft .NET友好的可視化功能??梢园袻otus Notes集成到應(yīng)用程序中,可以適當(dāng)提高工作效率。

平武县| 堆龙德庆县| 德庆县| 县级市| 庆阳市| 若尔盖县| 澄江县| 通化县| 合水县| 和林格尔县| 钟山县| 库尔勒市| 驻马店市| 逊克县| 错那县| 中宁县| 吉隆县| 贡嘎县| 广饶县| 田阳县| 湘乡市| 建德市| 屯留县| 千阳县| 成武县| 闵行区| 元朗区| 水富县| 巢湖市| 桃源县| 梅河口市| 靖远县| 南安市| 安龙县| 宁晋县| 邵武市| 隆安县| 镇远县| 从江县| 璧山县| 贵港市|