首页 新闻 搜索 专区 学院

LumiSoft.Net.POP3 接收邮件

0
悬赏园豆:30 [待解决问题]

最近做了一个邮件服务器,运用LumiSoft.Net.POP3这个第三方的组件,但是遇到很多问题,所以想请问一下大家如何解决,下面是想要实现显示邮件信息后的点击标题显示信息详情这个功能,但是每次出来的总只能是第一条数据,查了很多资料都没能解决,因此向大家求救。。。下面是得到邮件的详情的部门代码。

#region 网络邮件的操作方法
//得到邮件的详细信息
protected void GrvWebEmail_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Detail")
{
GetPopServer();
//加载判断邮件的服务器
List<string> gotEmailIds = new List<string>();
List
<Mime> result = new List<Mime>();
string uid = e.CommandArgument.ToString();//得到网路邮件的UID

using (LumiSoft.Net.POP3.Client.POP3_Client pop3 = new POP3_Client())
{
try
{
//与Pop3服务器建立连接
pop3.Connect(PopServer, intPort, pop3UseSsl);
//验证身份
strlogin = txtFrom.Text;
PassWord
= password.Value;
pop3.Authenticate(strlogin, PassWord,
true);
//获取邮件信息列表
POP3_ClientMessageCollection infos = pop3.Messages;
foreach (POP3_ClientMessage info in infos)
{
//每封Email会有一个在Pop3服务器范围内唯一的Id,检查这个Id是否存在就可以知道以前有没有接收过这封邮件
if (!gotEmailIds.Contains(uid))
{
//获取这封邮件的内容
byte[] bytes = info.MessageToByte();
// //记录这封邮件的Id
gotEmailIds.Add(info.UID);
//解析从Pop3服务器发送过来的邮件信息
Mime m = Mime.Parse(bytes);

if (m != null)
{
string mailfromname = "";
if (m.MainEntity.From != null)
{
for (int i = 0; i < m.MainEntity.From.Mailboxes.Length; i++)
{
mailfromname
= (m.MainEntity.From).Mailboxes[0].DisplayName != ""
? (m.MainEntity.From).Mailboxes[0].DisplayName
: (m.MainEntity.From).Mailboxes[
0].EmailAddress;
}
}
SendUser
= MailEncoding(mailfromname);
}

From
= MailEncoding(m.MainEntity.To.ToAddressListString());
Subject
= m.MainEntity.Subject;
EmailDate
= m.MainEntity.Date.ToLongDateString();
if (m.BodyHtml == "")
Body
= m.BodyText;
else
Body
= m.BodyHtml;

Random ran
= new Random();
foreach (MimeEntity me in m.Attachments)
{
//附件文件名
attname = me.ContentDisposition_FileName;//附件名称
//附件大小

string attsize = ((int)(me.Data.Length / 1000) == 0 ? 1 : (int)(me.Data.Length / 1024)).ToString() + "KB";

if (!File.Exists(Server.MapPath("AttachFiles") + "\\" + FromUser + "\\" + attname))
{
//附件存储到服务器
FileStream fs = new FileStream(Server.MapPath("AttachFiles") + "\\" + FromUser + "\\" + attname, FileMode.Create);
//这里可使用CreateNew抛出异常重新命名新的文件名,防止重复文件名产生覆盖
fs.Write(me.Data, 0, me.Data.Length); //将字节数组存储到文件流中
fs.Close();
}
LinkAttachment.Text
= attname;
}
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
}
GetPanleDetail();
}

 

 


还有我每次加载邮件信息的时候都特别慢,因为每次加载都是获取全部邮件,不知道各位有不有什么好的建议,能够解决这个问题呀,多谢啦。

上帝代言人的主页 上帝代言人 | 初学一级 | 园豆:130
提问于:2010-12-20 18:25
< >
分享
所有回答(1)
0

 第一次得, 以后不要

xuld | 园豆:494 (菜鸟二级) | 2010-12-29 22:55
那请问应该怎么设置和实现呢?最好能帮忙贴出代码来,或者是改改就好了。呵呵
支持(0) 反对(0) 上帝代言人 | 园豆:130 (初学一级) | 2010-12-30 09:07

@上帝代言人:你好,你这个问题解决了吗?可以把你这个源码给我吗?我的QQ:1577231764

支持(0) 反对(0) 勤与奋斗 | 园豆:200 (初学一级) | 2016-05-09 09:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册