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

首頁 > 開發 > 綜合 > 正文

郵件發送類

2024-07-21 02:24:36
字體:
來源:轉載
供稿:網友

using system;
using system.text;
using system.io;
using system.net;
using system.net.sockets;

namespace osleagueforumxp.components
{
    /// <summary>
    /// tcpclient派生類,用來進行smtp服務器的連接工作
    /// </summary>
    public class smtpclient : tcpclient
    {
        /// <summary>
        /// 進行smtp服務器的連接
        /// </summary>
        public smtpclient()
        {
        }
        /// <summary>
        /// 是否以連接
        /// </summary>
        /// <returns>連接為true,不連接為false</returns>
        public bool isconnected()
        {
            return active;
        }
        
        /// <summary>
        /// 向服務器發送命令
        /// </summary>
        /// <param name="command">命令</param>
        public void sendcommandtoserver(string command)
        {
            networkstream ns = this.getstream() ;
            byte[]  writebuffer ;
            writebuffer = new byte[1024] ;
            writebuffer = encoding.default.getbytes(command);
            ns.write(writebuffer,0,writebuffer.length);
            return  ;
        }
        
        /// <summary>
        /// 取得服務器反饋信息
        /// </summary>
        /// <returns>字符串</returns>
        public string getserverresponse()
        {
            int streamsize ;
            string returnvalue = "" ;
            byte[]  readbuffer ;
            networkstream ns = this.getstream() ;
            readbuffer = new byte[1024] ;
            streamsize = ns.read(readbuffer,0,readbuffer.length);
            if (streamsize==0)
            {
                return returnvalue ;
            }
            else
            {
                returnvalue = encoding.default.getstring(readbuffer);
                return  returnvalue;
            }         
        }
        
        /// <summary>
        /// 判斷返回的信息中是否有指定的smtp代碼出現
        /// </summary>
        /// <param name="message">信息</param>
        /// <param name="smtpcode">smtp代碼</param>
        /// <returns>存在返回false,不存在返回true</returns>
        public bool doesstringcontainsmtpcode(string message,string smtpcode)
        {
            return(message.indexof(smtpcode,0,10)==-1)?false:true;
        }

    } //結束類

    /// <summary>
    /// 發送郵件類
    /// </summary>
    public class smtpmail
    {
        /// <summary>
        /// 錯誤反饋信息
        /// </summary>
        private string strerrmessage = null;

        /// <summary>
        /// smtp服務器反饋的信息
        /// </summary>
        private string strresponse;

        /// <summary>
        /// 構造函數
        /// </summary>
        public smtpmail()
        {
            strerrmessage = "";
            strresponse = "";
        }

        /// <summary>
        /// 取得錯誤反饋信息
        /// </summary>
        public string errormessage
        {
            get
            {
                return strerrmessage ;
            }
        }

        /// <summary>
        /// 取得smtp服務器反饋的信息
        /// </summary>
        public string serverresponse
        {
            get
            {
                return strresponse;
            }
        }

        /// <summary>
        /// 郵件發送優先級
        /// </summary>
        public enum prioritys
        {
            /// <summary>
            /// 最高級別
            /// </summary>
            high = 1,
            /// <summary>
            /// 默認級別
            /// </summary>
            normal = 3,
            /// <summary>
            /// 最低級別
            /// </summary>
            low = 5
        }
        
        /// <summary>
        /// 進行base64編碼
        /// </summary>
        /// <param name="data">數據</param>
        /// <returns>字符串</returns>
        private string encode(string data)
        {
            byte[] btedata;
            btedata = encoding.default.getbytes(data);
            return convert.tobase64string(btedata);
        }
        
        /// <summary>
        /// 進行base64解碼
        /// </summary>
        /// <param name="data">數據</param>
        /// <returns>字符串</returns>
        private string decode(string data)
        {
            byte[] btedata;
            btedata = convert.frombase64string(data);
            return encoding.default.getstring(btedata);
        }
        
        /// <summary>
        /// 發送郵件
        /// </summary>
        /// <param name="smtphost">smtp服務器</param>
        /// <param name="port">smtp服務器端口</param>
        /// <param name="from">郵件發送者</param>
        /// <param name="displayfromname">顯示的發送者名稱</param>
        /// <param name="authentication">是否進行認證</param>
        /// <param name="username">認證用戶名</param>
        /// <param name="password">認證密碼</param>
        /// <param name="to">郵件接收者</param>
        /// <param name="displaytoname">顯示的接收者名稱</param>
        /// <param name="priority">優先級</param>
        /// <param name="html">是否為html</param>
        /// <param name="base">url</param>
        /// <param name="subject">郵件主題</param>
        /// <param name="message">郵件內容</param>
        public void sendmail(string smtphost,int port,string from,string displayfromname,bool authentication,string username,string password,string to,string displaytoname,prioritys priority,bool html,string base,string subject,string message)
        {
            try
            {
                string strresponsenumber;
                smtpclient smtpcmail = new smtpclient();
                smtpcmail.connect(smtphost,port);
                bool bolconnect = smtpcmail.isconnected();
                
                //判斷是否進行了連接
                if (!bolconnect)
                {
                    strerrmessage = "smtp服務器連接失敗...";
                    return;
                }
                
                //讀取反饋信息
                strresponsenumber = smtpcmail.getserverresponse();
                if (smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"220"))
                {
                    this.strresponse += strresponsenumber;
                }
                else
                {
                    this.strerrmessage = "連接失敗" + strresponsenumber;
                    return ;
                }
                
                int intbuffer = 0;
                int intarray = 0;
                if(authentication)
                {
                    intbuffer = 9;
                }
                else
                {
                    intbuffer = 6;
                }
                string[] strsendbuffer = new string[intbuffer];
                string[] strresponsecode = {"220","250","251","354","221","334","235"};   // success codes from smtp server
                
                string strdata = "";
                strdata = string.concat("helo ",smtphost);
                strdata = string.concat(strdata,"/r/n");
                strsendbuffer[intarray] = strdata;
                intarray = intarray+1;
                
                if(authentication)
                {
                    strdata = "";
                    strdata = string.concat("auth login","/r/n");
                    strdata = string.concat(strdata,"/r/n");
                    strsendbuffer[intarray] = strdata;
                    intarray = intarray+1;
                    
                    strdata = "";
                    strdata = string.concat(encode(username),"/r/n");
                    strdata = string.concat(strdata,"/r/n");
                    strsendbuffer[intarray] = strdata;
                    intarray = intarray+1;
                    
                    strdata = "";
                    strdata = string.concat(encode(password),"/r/n");
                    strdata = string.concat(strdata,"/r/n");
                    strsendbuffer[intarray] = strdata;
                    intarray = intarray+1;
                }
                
                strdata = "";
                strdata = string.concat("mail from: ","<" + from + ">" + "auth=" + from);
                strdata = string.concat(strdata,"/r/n");
                strsendbuffer[intarray] = strdata;
                intarray = intarray+1;
                
                strdata = "";
                strdata = string.concat("rcpt to: ","<" + to + ">");
                strdata = string.concat(strdata,"/r/n");
                strsendbuffer[intarray] = strdata;
                intarray = intarray+1;
                
                strdata = "" ;
                strdata = string.concat("data","/r/n");
                strsendbuffer[intarray] = strdata  ;
                intarray = intarray+1;
                
                strdata = "" ;
                strdata = string.concat("from: ",displayfromname + "<" + from + ">");
                strdata = string.concat(strdata,"/r/n" );
                strdata = string.concat(strdata,"to: " );
                strdata = string.concat(strdata,displaytoname + "<" + to + ">");
                strdata = string.concat(strdata,"/r/n" );
                strdata = string.concat(strdata,"subject: " );
                strdata = string.concat(strdata,subject);
                strdata = string.concat(strdata,"/r/n");
                strdata = string.concat(strdata,"mime-version: 1.0" );
                strdata = string.concat(strdata,"/r/n");
                strdata = string.concat(strdata,"x-priority: " + priority);
                strdata = string.concat(strdata,"/r/n");
                strdata = string.concat(strdata,"x-msmail-priority: " + priority);
                strdata = string.concat(strdata,"/r/n");
                if(html)
                {
                    strdata = string.concat(strdata,"content-type: text/html;" );
                }
                else
                {
                    strdata = string.concat(strdata,"content-type: text/plain;" );
                }
                strdata = string.concat(strdata,"/r/n");
                strdata = string.concat(strdata,"charset=/"iso-8859-1/"" );
                strdata = string.concat(strdata,"/r/n");
                if(html == true)
                {
                    strdata = string.concat(strdata,"content-transfer-encoding: text/html;" );
                }
                else
                {
                    strdata = string.concat(strdata,"content-transfer-encoding: text/plain;" );
                }
                strdata = string.concat(strdata,"/r/n");
                strdata = string.concat(strdata,"content-base: /"" + base + "/"" );
                strdata = string.concat(strdata,"/r/n" + "/r/n");
                
                strdata = string.concat(strdata,message);
                strdata = string.concat(strdata,"/r/n./r/n");
                strsendbuffer[intarray] = strdata;
                intarray = intarray+1;
                
                strdata = "" ;
                strdata = string.concat(strdata,"quit/r/n");
                strsendbuffer[intarray] = strdata;
                intarray = intarray+1;
                
                int i = 0 ;
                
                while(i < strsendbuffer.length)
                {
                    smtpcmail.sendcommandtoserver(strsendbuffer[i]);
                    strresponsenumber = smtpcmail.getserverresponse();
                    
                    for(int j=0;j<strresponsecode.length;j++)
                    {
                        if (smtpcmail.doesstringcontainsmtpcode(strresponsenumber,strresponsecode[j]))
                        {
                            this.strresponse += strresponsenumber;
                            this.strresponse += "<br>";
                            break;
                        }
                        else
                        {
                            if(j==strresponsecode.length-1)
                            {
                                if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"500"))
                                {
                                    this.strerrmessage = "郵箱地址錯誤";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"501"))
                                {
                                    this.strerrmessage = "參數格式錯誤";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"502"))
                                {
                                    this.strerrmessage = "命令不可實現";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"503"))
                                {
                                    this.strerrmessage = "服務器需要smtp驗證";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"504"))
                                {
                                    this.strerrmessage = "命令參數不可實現";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"421"))
                                {
                                    this.strerrmessage = "服務未就緒,關閉傳輸信道";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"450"))
                                {
                                    this.strerrmessage = "要求的郵件操作未完成,郵箱不可用(例如,郵箱忙)";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"550"))
                                {
                                    this.strerrmessage = "要求的郵件操作未完成,郵箱不可用(例如,郵箱未找到,或不可訪問)";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"451"))
                                {
                                    this.strerrmessage = "放棄要求的操作;處理過程中出錯";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"551"))
                                {
                                    this.strerrmessage = "用戶非本地,請嘗試<forward-path>";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"452"))
                                {
                                    this.strerrmessage = "系統存儲不足,要求的操作未執行";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"552"))
                                {
                                    this.strerrmessage = "過量的存儲分配,要求的操作未執行";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"553"))
                                {
                                    this.strerrmessage = "郵箱名不可用,要求的操作未執行(例如郵箱格式錯誤)";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"553"))
                                {
                                    this.strerrmessage = "郵箱名不可用,要求的操作未執行(例如郵箱格式錯誤)";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"432"))
                                {
                                    this.strerrmessage = "需要一個密碼轉換";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"534"))
                                {
                                    this.strerrmessage = "認證機制過于簡單";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"538"))
                                {
                                    this.strerrmessage = "當前請求的認證機制需要加密";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"454"))
                                {
                                    this.strerrmessage = "臨時認證失敗";
                                }
                                else if(!smtpcmail.doesstringcontainsmtpcode(strresponsenumber,"530"))
                                {
                                    this.strerrmessage = "需要認證";
                                }
                                return;
                            }
                        }
                    }
                    
                    i++ ;
                } // 結束循環
            }
            catch(socketexception err)
            {
                this.strerrmessage += err.message + " " + err.stacktrace;
            }
            catch(exception e)
            {
                this.strerrmessage += e.message + " " + e.stacktrace;
            }
        } //結束郵件發送方法
         
    } // 結束類
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝鸡市| 宣汉县| 华坪县| 古丈县| 清原| 广宁县| 渑池县| 乐昌市| 阜康市| 禹城市| 宝鸡市| 格尔木市| 青河县| 龙山县| 永安市| 久治县| 蕉岭县| 古交市| 鱼台县| 文山县| 郑州市| 鄂托克前旗| 出国| 辉县市| 乐昌市| 尤溪县| 吉林省| 塔河县| 克什克腾旗| 晋州市| 无极县| 汾西县| 乡城县| 黎川县| 依安县| 封开县| 衢州市| 湛江市| 桦甸市| 那坡县| 济南市|