c 通过IMAP协议获取未读邮件数量

     最近公司在用.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访问期 间服务器时,你的工作与您的邮件。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自www.cnblogs.com/swdhywhd/p/10313048.html