挺早之前整理的一套邮件信息查询功能。
后半部分贴入完整前后台代码。
首先需要添加引用OpenPop.NET类,版本为2.0.5:类库下载地址:http://download.csdn.net/download/xianglikai1/9950364
共分为两个页面:1.邮件列表页面,不包含邮件内容
2.选中的邮件的全部内容,由1页面传值来查询显示
页面一、邮件列表页面:
1.项目名称上右键添加引用:
2.使用Repeater来显示邮件列表,客户端页面:
3.重点,服务端
页面一、客户端代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mail接收.aspx.cs" Inherits="测试_mail接收" %>
<!DOCTYPE html>
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<a href="Details.aspx?id=<%#Eval("NO") %>">
<%#Eval("Subject") %>
<%#Eval("Date") %>
<%#Eval("FromSender")%>(<%#Eval("FromAddress")%>)
</a>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using OpenPop.Pop3;
using OpenPop.Mime;
public partial class 测试_mail接收 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<MailItem> list = new List<MailItem>();
//实例化pop3访问对象
Pop3Client pop3 = new Pop3Client();
//连接到邮件服务器
pop3.Connect("pop.126.com", 110, false); //连接方法("连接服务器",端口号,是否使用安全)
//身份验证
//读邮件列表
//1、获取邮件的个数
int count = pop3.GetMessageCount();
//2、遍历显示出来
for (int i = 1; i <= count; i++)//i必须从1开始,邮件个数不能小于0
{
try
{
Message msg = pop3.GetMessage(i);
MailItem data = new MailItem();
data.NO = i;
data.FromAddress = msg.Headers.From.Address;//发送者的邮箱地址
data.FromSender = msg.Headers.From.DisplayName;//发送者的名字
data.Date = msg.Headers.DateSent; //邮件的发送时间
data.Subject = msg.Headers.Subject;//邮件的标题/主题
if (msg.MessagePart.Body != null)
{
data.Body = msg.MessagePart.GetBodyAsText();//文件的主体部分,注意!!!
}
//注意:要使用GetBodyAsText方法,来获得解析后的主体文件,如果直接使用Body属性,则返回二进制string数组
list.Add(data);
}
catch
{
continue;
}
}
//断开连接
pop3.Disconnect();
//绑定显示
Repeater1.DataSource = list;
Repeater1.DataBind();
}
}
public class MailItem
{
public int NO { get; set; } //主键
public string FromSender { get; set; } //发送人
public string FromAddress { get; set; }//发送人邮箱地址
public DateTime Date { get; set; }//邮件发送的时间
public string Subject { get; set; }//标题
public string Body { get; set; }//邮件体
}
1.客户端制作页面:
2.后台查询绑定数据:
页面二、客户端代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Details.aspx.cs" Inherits="测试_Details" %>
<!DOCTYPE html>
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
标题:<asp:Label ID="lblSubject" runat="server" Text=""></asp:Label><br />
发送者:<asp:Label ID="lblSender" runat="server" Text=""></asp:Label><br />
时间:<asp:Label ID="lblDate" runat="server" Text=""></asp:Label><br />
内容:<asp:Label ID="lblBody" runat="server" Text=""></asp:Label><br />
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using OpenPop.Pop3;
using OpenPop.Mime;
public partial class 测试_Details : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request["id"] != null)
{
//获取邮件代号
int no = Convert.ToInt32(Request["id"]);
//根据邮件代号查找邮件
Pop3Client pop3 = new Pop3Client();
//安全配置
pop3.Connect("pop.126.com",110,false);
//帐号密码设置
Message msg = pop3.GetMessage(no);
//显示,数据绑定至四个label中
lblSubject.Text = msg.Headers.Subject;
lblSender.Text = msg.Headers.From.DisplayName + msg.Headers.From.Address;
lblDate.Text = msg.Headers.DateSent.ToString();
if (msg.MessagePart.Body != null)//126邮箱部分邮件报错,获取不到邮件正文,过滤掉
{
lblBody.Text = msg.MessagePart.GetBodyAsText();
}
//断开连接
pop3.Disconnect();
}
}
}