c#通过IMAP协议获取未读邮件数量
2008-09-22 20:24 Komici 阅读(4355) 评论(0) 编辑 收藏 举报最近公司在用.NET开发一个城域网系统,里面应用到一个电子邮件系统是用php开发,与项目是独立开来的,利用了单点登陆技术在基础平台中登陆到各子系统中,现在要在登陆到基础平台首页上显示登陆用户在子系统(邮件系统)中未读邮件信息的条数,由于对协议这一块不是很了解,所以刚开始做的时候一头雾水,只晓得可以利用pop3协议可以获取邮件,后来咨询邮件系统那边的开发人员,他们说他们在php里面直接调用有内置函数可以获取,在.net中不行,用pop3也不行,利用pop3协议只能获取电子邮件中所有邮件的信息列表,不能获取邮件的状态,但IMAP协议可以获取邮件的状态,有了点思路于是找关于IMAP的资料,最后在一个老外的一篇文章里找到相关的资料,也是获取利用IMAP协议获取邮件的未读数量,是用VB做的,于是我按照上面的思路进行编写代码,运行通过,心里一阵窃喜,-_-,终于搞定了,这里只简单一个示例,通过LumiSoft.Net第三方组件有处理协议方面的强大功能,虽然没啥很高技术含量,也可以给遇到这方面问题的哥们一些参考:
一.本文代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LumiSoft.Net.IMAP;
using LumiSoft.Net.IMAP.Client;
namespace CommonLibrary.Mail
{
public class MailsInfo
{
/// <summary>
/// 获取未读邮件数量
/// </summary>
/// <param name="mailServer">邮件服务器地址</param>
/// <param name="username">邮箱用户名</param>
/// <param name="password">邮箱密码</param>
/// <returns></returns>
public static int GetUnReadMails(string mailServer, string username, string password)
{
IMAP_Client IMAPServer = new IMAP_Client();
try
{
//连接邮件服务器通过传入邮件服务器地址和用于IMAP协议的端口号
IMAPServer.Connect(mailServer, 143);
//登陆邮箱
IMAPServer.Authenticate(username, password);
IMAPServer.SelectFolder("INBOX");
if (IMAPServer.GetUnseenMessagesCount() == 1)
{
return 1;
}
else
{
return IMAPServer.GetUnseenMessagesCount();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
IMAPServer.Disconnect();
}
}
}
}
(说明:sina,126,qq等邮箱经测试好像都不支持IMAP协议连接,只有支持IMAP协议的邮件系统才可以使用IMAP协议获取邮件信息)
二.总结:
POP3协议,SMPT协议,IAMP协议介绍:
pop3:(Post Office Protocal 3),3是它的版本,是目前使用的主流版本。POP3是客户-服务器协议,其中电子邮件的接收需要一个收件服务器,邮件下载到本地计算机上所有一次,从而使离线阅读更轻松,可以指定是否保留副本的邮件在服务器上。 The default port number for POP3 is 110.默认端口数目为POP3是110.
SMTP(Simple Mail Transfer Protocal):简单Mail传输协议,是个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器建立SMTP连接。 独立于特定的传输子系统,它可以是电子邮件从客户机传输到服务器;也可以是从某一个服务器传输到另一个服务器;且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即SMTP 邮件中继。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。
IMAP ( Internet消息访问协议)是一种标准协议,用于访问电子邮件从您的本地服务器。的IMAP (最新版本的IMAP第4版)是一个客户机/服务器协议在电子邮件收到并为您举行的由您的因特网服务器。您(或您的电子邮件客户端)可以查看刚才的标题和发件人的信件,然后决定是否下载该邮件。您还可以创建和操纵多个文件夹或邮箱的服务器上,删除邮件,或寻找某些地区或整个说明。需要不断的IMAP访问期间服务器时,你的工作与您的邮件。