最近做了一个邮件服务器,运用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();
}
还有我每次加载邮件信息的时候都特别慢,因为每次加载都是获取全部邮件,不知道各位有不有什么好的建议,能够解决这个问题呀,多谢啦。
第一次得, 以后不要
@上帝代言人:你好,你这个问题解决了吗?可以把你这个源码给我吗?我的QQ:1577231764