国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于Lumisoft.NET組件的SMTP賬號登陸檢測

2019-11-17 03:21:31
字體:
來源:轉載
供稿:網友

基于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登錄檢測,如果需要批量檢測,把思路變化一下,遍歷需要檢測的賬號密碼,對賬號處理完成后,把結果顯示到界面上即可。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 甘南县| 河北省| 侯马市| 上林县| 台中市| 天台县| 安吉县| 山东省| 揭阳市| 肥城市| 锡林郭勒盟| 承德市| 海丰县| 遂川县| 合作市| 新余市| 宝鸡市| 黎城县| 响水县| 宁阳县| 进贤县| 高唐县| 巧家县| 皋兰县| 鄯善县| 措勤县| 沙坪坝区| 海南省| 东阳市| 青铜峡市| 宕昌县| 莒南县| 泸西县| 涡阳县| 景东| 鞍山市| 威海市| 彭州市| 平利县| 五家渠市| 都兰县|