• 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访问期间服务器时,你的工作与您的邮件。

  • 相关阅读:
    I/O会一直占用CPU吗?【转载】
    CPU和线程的关系
    future封装了callable,thread封装future。
    (转)Java中的守护线程
    线程中sleep方法和wait方法有什么区别?(转)
    Java异常---获取异常的堆栈信息
    分析iOS Crash文件,使用命令符号化iOS Crash文件
    String Matching(poj1580)
    U转串口驱动安装
    [LNU.Machine Learning.Question.1]梯度下降方法的一些理解
  • 原文地址:https://www.cnblogs.com/Komici/p/1296188.html
Copyright © 2020-2023  润新知