public class LotusManager
{
public static int bodyMaxLength, length;
public static List<Entity.LotusMail> GetEmails(string psw,StringBuilder itemInfo,Action<OnGetEMail> onEMailGet) {
Domino.NotesSession ns = new Domino.NotesSession();
if (ns != null) {
try
{
ns.Initialize(psw);
}
catch {
throw new Exception("Lotus Notes密码错误!");
}
Domino.NotesDocumentCollection all = ns.GetDbDirectory("DominoT/TEST").OpenMailDatabase().AllDocuments;
Domino.NotesDocument nd = all.GetLastDocument();
List<Entity.LotusMail> mails = new List<Huawei.Yom.Lotus.Entity.LotusMail>();
//Entity.LotusMail mail;
//object[] items;
//Domino.NotesEmbeddedObject file;
//int count = 0;
while (nd != null)
{
#region 废弃代码
//mail = new Huawei.Yom.Lotus.Entity.LotusMail();
//mail.Subject = ((object[])nd.GetItemValue("Subject"))[0].ToString();
//mail.From = ((object[])nd.GetItemValue("From"))[0].ToString();
//mail.Body = ((object[])nd.GetItemValue("Body"))[0].ToString();
//mail.Date = ((object[])nd.GetItemValue("PostedDate"))[0].ToString();
//mail.Size = nd.Size.ToString();
//mail.NoteID = nd.NoteID;
//if (nd.Items == null)
//{
// continue;
//}
//items = (object[])nd.Items;
//if (items == null)
//{
// continue;
//}
//foreach (Domino.NotesItem item in items)
//{
// itemInfo.AppendFormat("#{0}#", item.Name);
// file = null; // if (item.Name == "$FILE")
// {
// try
// { // file = nd.GetAttachment(((object[])item.Values)[0].ToString()) as Domino.NotesEmbeddedObject;
// }
// catch
// { // }
// if (file != null)
// {
// if (mail.Attachments == null)
// {
// mail.Attachments = new List<Domino.NotesEmbeddedObject>();
// }
// mail.Attachments.Add(file); // }
// break;
// }
//}
//if (count++ >= 10)
//{
// break;
//}
#endregion
mails.Add(GetMailFromNotesDocument(nd));
if (onEMailGet != null) {
onEMailGet(new OnGetEMail()
{
count = all.Count,
currentIndex = mails.Count-,
email = mails[mails.Count - ]
});
}
nd = all.GetPrevDocument(nd);
}
return mails;
}
return null;
//Domino.NotesDocumentClass nddc = new Domino.NotesDocumentClass();
//return nddc.OpenMailDatabase().AllDocuments.Count;
} internal static Entity.LotusMail GetMailFromNotesDocument(Domino.NotesDocument nd)
{ Huawei.Yom.Lotus.Entity.LotusMail mail = new Huawei.Yom.Lotus.Entity.LotusMail();
mail.Subject = ((object[])nd.GetItemValue("Subject"))[].ToString();
mail.From = ((object[])nd.GetItemValue("From"))[].ToString();
mail.Body = ((object[])nd.GetItemValue("Body"))[].ToString();
//mail.Body = ((Domino.NotesItem)(((object[])nd.Items)[13])).Text;
//mail.Body = ((object[])nd.GetItemValue("wBody"))[0].ToString();
//mail.Date = ((object[])nd.GetItemValue("PostedDate"))[0].ToString();
//if (string.IsNullOrEmpty(mail.Date)) {
// //$Revisions
// mail.Date = ((object[])nd.GetItemValue("$Revisions"))[0].ToString();
//}
//mail.Date = nd.Created.ToString();
mail.Date = nd.LastModified.ToString();
mail.Size = nd.Size.ToString();
mail.NoteID = nd.NoteID;
object[] items = (object[])nd.Items;
bool isBodyGet=false,isDateGet=false;
//foreach (Domino.NotesItem item in items)
//{
// if (item.Name!="" && !string.IsNullOrEmpty(item.Text))
// {
// //mail.Body = item.Text;
// //break;
// }
//}
foreach (Domino.NotesItem item in items)
{
if (item.Name == "Body") {
mail.Body = item.Text;
//break;
isBodyGet=true;
}
if (item.Name == "DeliveredDate")
{
mail.Date = item.Text;
isDateGet = true;
}
if (isBodyGet && isDateGet) {
break;
}
}
//if (mail.Body.IndexOf("注意安全!!!目前广州、深圳常见的街头骗术!!") != -1)
//{
// mail.Body = ((Domino.NotesItem)(((object[])nd.Items)[13])).Text;
//foreach (Domino.NotesItem item in items)
//{
// if (item.Name == "Body" && !string.IsNullOrEmpty(item.Text))
// {
// //mail.Body = item.Text;
// //break;
// }
//}
//}
int bl = mail.Body.Length; if (bl > length)
{
int page = Convert.ToInt32(Math.Ceiling(bl * 1.0 / length));
bodyMaxLength = Math.Max(page, bodyMaxLength);
mail.WBody = new string[page];
for (int i = ; i < page; i++)
{
mail.WBody[i] = mail.Body.Substring(i * length, bl - i * length >= length ? length : bl - i * length);
}
}
else {
mail.WBody = new[] { mail.Body };
}
return mail;
} //public static int ByteLength(string str)
//{
// byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
// int j = 0;
// for (int i = 0; i < bytestr.GetLength(0); i++)
// {
// if (i % 2 == 0)
// { j++; }
// else
// {
// if (bytestr[i] > 0)
// { j++; }
// }
// }
// return j;
//}
}
public class LotusMail
{
public string NoteID
{
get;
set;
}
public string Subject
{
get;
set;
}
public string From
{
get;
set;
}
public string Date
{
get;
set;
}
public string Time
{
get;
set;
}
public string Size
{
get;
set;
}
public string Body
{
get;
set;
}
public List<Domino.NotesEmbeddedObject> Attachments
{
get;
set;
}
public string Other
{
get;
set;
}
public string[] WBody
{
get;
set;

上面是即时文件获取

下面是NSF文件里邮件获取

public class OnGetEMail {
public int count;
public int currentIndex;
public Entity.LotusMail email;
}
public class NsfDB
{
static Domino.NotesSession ns;
static Domino.NotesDatabase ndb;
public static void CreatSession(string psw) {
if (ns == null) {
ns = new Domino.NotesSession();
try
{
ns.Initialize(psw);
}
catch
{
throw new Exception("Lotus Notes密码错误!");
}
}
}
public static void Dispose(){
if (ns != null)
{
ns = null;
}
if (ndb != null)
{
ndb = null;
}
}
public static List<Entity.LotusMail> GetEmailData(string filename, string psw, Action<OnGetEMail> onEMailGet)
{
CreatSession(psw);
if (ns != null)
{
ndb = ns.GetDatabase(null, filename, false);
Domino.NotesDocumentCollection all =ndb.AllDocuments;
ndb = null;
Domino.NotesDocument nd = all.GetLastDocument();
List<Entity.LotusMail> mails = new List<Huawei.Yom.Lotus.Entity.LotusMail>();
while (nd != null)
{
try
{
mails.Add(LotusManager.GetMailFromNotesDocument(nd));
if (onEMailGet != null) {
onEMailGet(new OnGetEMail()
{
count = all.Count,
currentIndex = mails.Count-,
email = mails[mails.Count - ]
});
}
}
catch {
}
nd = all.GetPrevDocument(nd);
}
return mails; }
return null; }
public static object GetEmailDataTest(string filename,string psw)
{
Domino.NotesSession ns = new Domino.NotesSession();
if (ns != null)
{
ns.Initialize(psw);
NotesDatabase nd = ns.GetDatabase(null, filename, false);
return nd.AllDocuments.Count; }
return null; }
}

此例子需要引用两个COM组件:

  1. Lotus Domino Objects
  2. Lotus Notes Automation Classes

【Lotus Notes】邮件获取的更多相关文章

  1. C# Windows Service调用IBM Lotus Notes发送邮件

    近日研究了下IBM Lotus Mail,这货果然是麻烦,由于公司策略,没有开放smtp,很多系统邮件都没有办法发送,于是入手google学习Lotus Mail,想做成Windows服务,提供wcf ...

  2. Lotus Notes中编程发送邮件(二)

    在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字.另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址.而正常情况下,发送邮 ...

  3. 46. Lotus Notes中编程发送邮件(一)

    邮件是Lotus Notes体系的核心和基本功能,以至于Send()是NotesDocument的一个方法,任何一个文档都可以被发送出去,Notes里的一封邮件也只是一个有一些特殊字段的文档.在程序开 ...

  4. C# 使用 Lotus notes 公共邮箱发送邮件

    公司的邮件系统用的是反人类的 Lotus notes, 你敢信? 最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件 前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮 ...

  5. 我学到的新知识之——Lotus Notes闪退如何修复

    很多企业内部都在使用IBM 出品的Lotus Notes 来收发邮件,以及内置的SameTime作为内部交流工具,作为用了多年微软套装产品的我来说,还是有些不适应. 最近遇到一个案例,只要用户登陆sa ...

  6. Lotus Notes 学习笔记

    这是一个学习关于如何使用Lotus Notes的Agent功能来实现自动化办公的学习笔记. 一. 介绍 Lotus Notes/Domino 是一个世界领先的企业级通讯.协同工作及Internet/I ...

  7. 使用LotusScript操作Lotus Notes RTF域

    Lotus Notes RTF域的功能也非常强大,除了支持普通的文本以外,还支持图片.表格.嵌入对象.Http 链接.Notes 链接.附件等等众多的类型.本文将介绍如何使用这些类来灵活操作富文本域. ...

  8. 55. 略谈Lotus Notes的与众不同及系列文章至此的总结

    在二十多年的悠久历史里,Lotus Notes发展出一整套独特的概念.技术和思维.由于它早期惊人的领先时代和后续发展中同样惊人的忠于传统,这位软件领域的寿星在如今发展更新速度远超往日和技术愈趋公开互通 ...

  9. 52. 模版和设计元素——Lotus Notes的代码重用

    不论是理论上还是实用上,代码重用都是编程的一个重要议题.可以从两个角度来讨论代码重用. 一是逻辑上代码以怎样的方式被重用.既可以通过面向对象的思想普及以来耳熟能详的继承的方式.比如先建了一个车的基类, ...

随机推荐

  1. 采用tcpdump攫Android网络数据包

    1 空灵的原理 tcpdump(需Root用户执行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其它数据包.简单说就监控手机进出网络数据. 2 方法优劣 2.1长处 1.手机数据包无遗漏 2 ...

  2. jquery 直接调用 wcf,面向服务的SOA架构 ( 第三天)

    所谓万事 具备,只欠东风了!! 接下来就是 wcf 的调用, 首先 在客户端下,随便 写一个 html页面,然后写入如下方法: <script src="scripts/jquery. ...

  3. 从头学起android&lt;AutoCompleteTextView文章提示文本框.十九.&gt;

    文章提示可以很好的帮助用户输入信息,以方便.在Android它也设置有类似特征,而要实现这个功能需要依靠android.widget.AutoCompleteTextView完毕,此类的继承结构例如以 ...

  4. 饼干怪兽和APT攻击

    APT攻击就像一个孩子,你通过各种方式窃取他们的大脑要拿出饼干,为了防止恶意攻击,过失作为母亲未能发现和防止饼干盗窃贼如.于她仅仅监视厨房椅子.衣柜门或烤箱门的开启.建立起有效防御目标攻击与APT攻击 ...

  5. Microsoft dotnetConf 2015

    Microsoft dotnetConf 2015 一些整理   dotnetConf 2015 直播计划: 第一天 (10 个主讲) - .NET Product Teams 主讲人为 .NET 产 ...

  6. IBM BigInsights 3.0.0.2 集群环境搭建

    1. 改动hosts文件和永久主机名 由于BigInsights 3.0版本号不像之前的版本号能够直接用IP来添加节点,因此我们须要更改每台server的hosts文件和主机名: vim/etc/ho ...

  7. sql 给表结构增加说明

    create  proc proc_addReMark    @TableName nvarchar(50),     @RowName nvarchar(50),    @RowReMark  nv ...

  8. JavasScript实现调查问卷插件

    原文:JavasScript实现调查问卷插件 鄙人屌丝程序猿一枚,闲来无事,想尝试攻城师是感觉,于是乎搞了点小玩意.用js实现调查问卷,实现了常规的题型,单选,多选,排序,填空,矩阵等. 遂开源贴出来 ...

  9. Asterisk 未来之路3.0_0004

    原文:Asterisk 未来之路3.0_0004 Asterisk Wiki   asterisk 的Wiki是很多启迪和困惑的发源地,另外一个最重要的VOIP知识库www.voip-info.org ...

  10. 微软宣布.NET开发环境将开源 支持Mac OS X和Linux

    微软宣布.NET开发环境将开源 支持Mac OS X和Linux 投递人 itwriter 发布于 2014-11-13 06:58 评论(55) 有4388人阅读  原文链接  [收藏]  « » ...