基于Lumisoft.NET组件的SMTP账号登陆检测

在邮件处理的方面,Lumisoft.NET可以说是非常不错的一个选择,我在前面几篇文章中都介绍过这个组件。

基于Lumisoft.NET组件开发碰到乱码等一些问题的解决

基于Lumisoft.NET组件的POP3邮件接收和删除操作

基于Lumisoft.NET组件和.NET API实现邮件发送功能的对比

我的博客内容几乎全部来源我的项目开发或者研究工作,因此对于这个组件的使用还是有一定的说服力,这个组件封装了很多底层的一些操作,对于我们操作邮件的发送、接收的处理,更加方便高效。本文主要介绍该组件一个小的应用,基于Lumisoft.NET组件的SMTP账号登陆检测。

做某种工作,一般都有一个背景知识,从背景里面,我们可以大致了解这个工作的应用场景和具体目的,这个基于SMTP账号登陆检测的功能来源我对一批邮件账号进行交替邮件发送的时候需要,我手上有一批免费邮箱的SMTP账号,可以用于邮件的发送,但是我不确信是否所有的账号密码都是可以登录使用的,因此我需要对它们进行检测,只有正确的账号密码,我才用来批量发送邮件。这种检测我希望是通过自动化进行实现,不要人工一个个登录,在偶尔的一次Lumisoft.NET组件的使用过程中,我发现它发送邮件前,都会进行账号密码的登录操作,因此如果有成功的回应,那么就算达到目的了。

Lumisoft组件里面,SMTP_Client的对象有一个Auth方法(或者Authenticate方法),并且调用后,对象本身有一个IsAuthenticated的bool属性,这样就可以达到我们的操作目的了。

具体对SMTP_Client的SMTP账号登陆检测代码如下所示。

        private bool CheckLogin(string smtp, string username, string password)
        {
            bool result = false;
            using (SMTP_Client client = new SMTP_Client())
            {
                try
                {
                    if (this.txtUseSSL.Checked)
                    {
                        client.Connect(smtp, WellKnownPorts.SMTP_SSL, true);
                    }
                    else
                    {
                        client.Connect(smtp, WellKnownPorts.SMTP, false);
                    }

                    client.EhloHelo(smtp);
                    var authhh = new AUTH_SASL_Client_Plain(username, password);
                    client.Auth(authhh);
                    //client.Authenticate(username, password);

                    result = client.IsAuthenticated;
                }
                catch (Exception ex)
                {
                    LogHelper.Error(ex);
                }
            }
            return result;
        }

为了更有效实现账号的检测,我们使用了背景线程进行处理,以达到更好的界面体验。

        private BackgroundWorker worker;

        public FrmEditMailConfig()
        {
            InitializeComponent();

            worker = new BackgroundWorker();
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);
            worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
        }

然后在实现账号检测的事件里面对背景线程进行调用,具体操作代码如下所示。

        void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            string smtp = this.txtSmtpServer.Text.Trim();
            string username = this.txtLoginId.Text.Trim();
            string password = this.txtPassword.Text.Trim();

            bool success = CheckLogin(smtp, username, password);
            e.Result = success;
        }

这个线程处理后,会返回一个结果,然后我们在线程完成的操作里面对他们进行处理,即可实现把结果展示到界面上了。

        void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            string username = this.txtLoginId.Text.Trim();
            bool success = Convert.ToBoolean(e.Result);
            if (success)
            {
                string message = string.Format("[{0}] 测试成功", username);
                MessageDxUtil.ShowTips(message);
            }
            else
            {
                string message = string.Format("[{0}] 测试失败,可能密码不正确或未开通SMTP", username);
                MessageDxUtil.ShowWarning(message);
            }
        }

当然,这个只是对一个账号密码进行SMTP登录检测,如果需要批量检测,把思路变化一下,遍历需要检测的账号密码,对账号处理完成后,把结果显示到界面上即可。

本文转自博客园伍华聪的博客,原文链接:基于Lumisoft.NET组件的SMTP账号登陆检测,如需转载请自行联系原博主。

时间: 2024-10-25 16:47:15

基于Lumisoft.NET组件的SMTP账号登陆检测的相关文章

基于Lumisoft.NET组件开发碰到乱码等一些问题的解决

在Lumisoft.NET组件获取POP3邮件的时候,发现大多数邮件都能正常获取,不过对于一些特殊的邮件,好像总是会出现转换错误,或者出现乱码及部分乱码现象,有些在标题里面或者邮件接收人地址,而有些则在内容里面,为了更好整理相关的问题,写了本文,希望对大家使用该组件有一定的帮助作用. 1. 日期转换出错问题. 错误信息:[2013-05-04 10:49:03]    转换邮件的Date出错:账号wuhuacong@163.com 邮件标题:ICP???????????????????????w

基于Lumisoft.NET组件和.NET API实现邮件发送功能的对比

我在较早时期的一篇文章<基于Lumisoft.NET实现的邮件发送功能>有大致对这个Lumisoft.NET组件的使用进行了介绍,在<DevExpress控件使用之RichEditControl的使用>则对使用.NET API进行邮件发送进行了说明,其实,实现邮件发送,这两种方式是比较常见的,当然Lumisoft.NET组件除了提供邮件发送功能外,还提供了邮件接收等功能的处理(包括基于POP3协议和IMAP协议),而.NET则除了提供SMTP协议功能外,则没有提供POP3协议处理的

基于Lumisoft.NET组件的POP3邮件接收和删除操作

Lumisoft.NET组件是一个非常强大的邮件发送.邮件接收等功能的开源组件,一般用它来处理邮件的相关操作,是非常合适的.之前也写过一些该组件的随笔文章,不过主要是利用来发送邮件居多,最近由于项目需要,需要利用该组件来接收邮件,邮件通过POP3协议进行接收到本地,故对该组件进行了全面的了解和使用.本文主要是在此背景上,介绍该组件的POP3协议处理类的使用.Lumisoft.NET组件2013年作者有做了一定的更新,修复了一些问题,本文是基于该组件的最新版本进行开发使用. 1.POP3登录及头部

深入Lumisoft.NET组件与.NET API实现邮件发送功能的对比分析_实用技巧

我在另一篇文章<深入Lumisoft.NET实现邮件发送功能的方法详解>有大致对这个Lumisoft.NET组件的使用进行了介绍,当然Lumisoft.NET组件除了提供邮件发送功能外,还提供了邮件接收等功能的处理(包括基于POP3协议和IMAP协议),而.NET则除了提供SMTP协议功能外,则没有提供POP3协议处理的相关类库,因此收取邮件这需要自己进行封装(需要也可以参考codeproject.com上的相关文章). 1..NET的邮件发送功能实现.NET本身封装了一个SmtpClient

基于Lumisoft.NET实现的邮件发送功能

在前面的一些文章中,有介绍过DotNet内置SMTP类的邮件发送功能,附件.嵌入图片的模式都有介绍,本文继续介绍Lumisoft.NET这个非常优秀的开源组件,用该组件来设计开发邮件工具,将变得更加方便,功能更加强大.网上很多文章基本介绍如何使用该组件来收取邮件较多,较少介绍使用该组件做邮件发送功能的.本文主要探寻使用该组件实现邮件的发送功能,邮件发送有两种方式,一种是不用发件人即可发送邮件,一种是使用发件人账户密码和SMTP服务器来实现邮件发送的,本文分别对这两种方式进行介绍. 组件下载地址:

深入Lumisoft.NET组件开发碰到乱码等问题的解决方法_实用技巧

在Lumisoft.NET组件获取POP3邮件的时候,发现大多数邮件都能正常获取,不过对于一些特殊的邮件,好像总是会出现转换错误,或者出现乱码及部分乱码现象,有些在标题里面或者邮件接收人地址,而有些则在内容里面,为了更好整理相关的问题,写了本文,希望对大家使用该组件有一定的帮助作用. 1. 日期转换出错问题.错误信息:[2013-05-04 10:49:03]    转换邮件的Date出错:账号wuhuacong@163.com 邮件标题:ICP???????????????????????wu

深入Lumisoft.NET组件POP3邮件接收与删除操作的使用详解_实用技巧

Lumisoft.NET组件是一个非常强大的邮件发送.邮件接收等功能的开源组件,一般用它来处理邮件的相关操作,是非常合适的.之前也写过一些该组件的随笔文章,不过主要是利用来发送邮件居多,最近由于项目需要,需要利用该组件来接收邮件,邮件通过POP3协议进行接收到本地,故对该组件进行了全面的了解和使用.本文主要是在此背景上,介绍该组件的POP3协议处理类的使用.Lumisoft.NET组件2013年作者有做了一定的更新,修复了一些问题,本文是基于该组件的最新版本进行开发使用. 1.POP3登录及头部

基于YUI的组件开发(1)【珍珠奶茶帮】

分享人:拔赤 导语:如今的前端开发越来越OO,也越来越注重重用,娴熟的用js写出OO的前端代码已然是一个前端工程师的基本素质之一.与此同时,网站的开发过程也越来越类似于堆积木.模块思想也逐渐深入的应用在大型网站的开发之中,指导网站的设计和架构,在今天[珍珠奶茶帮]的分享中,我们来对基于YUI的组件开发做深入探讨. 模块化的前端开发 在web技术迅猛发展的今天,大型网站的前端开发越来越依赖复杂的团队配合,而模块化思想则能有效的指导团队开发的效率提升和成本压缩.它使得我们在项目中将注意力放在颗粒化组

搜狗拼音输入法怎么退出个人账号登陆

  搜狗拼音输入法怎么退出个人账号登陆?在使用搜狗拼音输入法的时候,有些用户喜欢登录其平台上,比如用注册账号QQ账号.人人网.新浪账号登陆搜狗拼音输入法.当然,有登陆自然也有推出.今天超人软件小编就给大家讲解一下搜狗拼音输入法的登录方法,以及搜狗拼音输入法怎么退出个人账号登陆. 搜狗拼音输入法个人账号登陆步骤: 点击搜狗"自定义状态栏",登陆账户的按钮;如图: 用户登录,可以选择注册账号登陆也可以用QQ账号.人人网.新浪账号登陆,此时小编用QQ号登陆. 登陆成功. 搜狗拼音输入法怎么退