程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#開發基於ESMTP協議的郵件發送系統經驗總結

C#開發基於ESMTP協議的郵件發送系統經驗總結

編輯:C#入門知識

用過C#內置的SMTP類的朋友大概知道,使用它發送郵件的時候,有時候總是出現莫名奇妙的錯誤,有時候可以發送成功,有時候說用戶帳號驗證失敗,即使你設置了帳號驗證信息,問題依舊,特別是在你使用QQ郵箱(好像163的用SMTP發送比較正常),基本上使用SMTP對象來發送郵件是不可能的事情,後來查詢了一些資料,說QQ的協議好像是ESMTP協議了,也就是加強版的SMTP協議,不知道是不是,反正用QQ郵件的人比較多,發送的問題就比較突出了。

特別是我的軟件“QQ號碼采集及郵件發送系統”,之前一直使用SMTP類來處理郵件的發送,客戶反映QQ郵件發送不成功的問題就特別突出,但是當時不知道如何處理這個問題,晚上找了很多資料,問題依舊,甚是頭痛。先看看我這個郵件發送軟件的界面先。 \
  這個軟件目前已經實現了ESMTP協議的批量發送功能了,測試發現163也支持ESMTP協議,估計大多數的SMTP提供商都是支持這個接口的了,因為對他們來說這個是更加安全、更少垃圾郵件的協議,好像有的像我們日常所說的“實名制”規則一樣。 和SMTP類發送郵件不同,ESMTP是通過以流方式向服務器發送TCP/IP命令,進而獲得交互響應的模式進行的,如要連接SMTP服務器,首先通過下面代碼進行連接。             //連接網絡
            try
            {
                tc = new TcpClient(mailserver, mailserverport);
            }
            catch (Exception e)
            {
                errmsg = e.ToString();
                return false;
            }

            ns = tc.GetStream();
          /// <summary>
        /// 接收SMTP服務器回應
        /// </summary>
        protected string RecvResponse()
        {
            int StreamSize;
            string ReturnValue = "false";
            byte[] ReadBuffer = new byte[4096];

            try
            {
                StreamSize = ns.Read(ReadBuffer, 0, ReadBuffer.Length);
            }
            catch
            {
                errmsg = "網絡連接錯誤";
                return ReturnValue;
            }

            if (StreamSize == 0)
            {
                return ReturnValue;
            }
            else
            {
        &nb

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved