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

首頁 > 開發 > 綜合 > 正文

C#寫的支持SMTP驗證的發送郵件組件(2)

2024-07-21 02:24:26
字體:
來源:轉載
供稿:網友
        /// <summary>
        /// 接收smtp服務器回應
        /// </summary>
        private string recvresponse()
        {
            int streamsize;
            string returnvalue = "";
            byte[]  readbuffer = new byte[1024] ;
            try
            {
                streamsize=ns.read(readbuffer,0,readbuffer.length);
            }
            catch
            {
                errmsg="網絡連接錯誤";
                return "false";
            }

            if (streamsize==0)
            {
                return returnvalue ;
            }
            else
            {
                returnvalue = encoding.default.getstring(readbuffer).substring(0,streamsize);
                logs+=returnvalue;
                return  returnvalue;
            }
        }


        /// <summary>
        /// 與服務器交互,發送一條命令并接收回應。
        /// </summary>
        /// <param name="command">一個要發送的命令</param>
        /// <param name="errstr">如果錯誤,要反饋的信息</param>
        private bool dialog(string command,string errstr)
        {
            if(command==null||command.trim()=="")
            {
                return true;
            }
            if(sendcommand(command))
            {
                string rr=recvresponse();
                if(rr=="false")
                {
                    return false;
                }
                string rrcode=rr.substring(0,3);
                if(rightcodeht[rrcode]!=null)
                {
                    return true;
                }
                else
                {
                    errmsg+=(rrcode+errcodeht[rrcode].tostring());
                    errmsg+=enter;
                    errmsg+=errstr;
                    return false;
                }
            }
            else
            {
                return false;
            }

        }


        /// <summary>
        /// 與服務器交互,發送一組命令并接收回應。
        /// </summary>

        private bool dialog(string[] command,string errstr)
        {
            for(int i=0;i<command.length;i++)
            {
                if(!dialog(command[i],""))
                {
                    errmsg+=enter;
                    errmsg+=errstr;
                    return false;
                }
            }

            return true;
        }



        private bool sendemail()
        {
            //連接網絡
            try
            {
                tc=new tcpclient(mailserver,mailserverport);
            }
            catch(exception e)
            {
                errmsg=e.tostring();
                return false;
            }

            ns = tc.getstream();
            smtpcodeadd();

            //驗證網絡連接是否正確
            if(rightcodeht[recvresponse().substring(0,3)]==null)
            {
                errmsg="網絡連接失敗";
                return false;
            }


            string[] sendbuffer;
            string sendbufferstr;

            //進行smtp驗證
            if(esmtp)
            {
                sendbuffer=new string[4];
                sendbuffer[0]="ehlo " + mailserver + enter;
                sendbuffer[1]="auth login" + enter;
                sendbuffer[2]=base64encode(username) + enter;
                sendbuffer[3]=base64encode(password) + enter;
                if(!dialog(sendbuffer,"smtp服務器驗證失敗,請核對用戶名和密碼。"))
                    return false;
            }
            else
            {
                sendbufferstr="helo " + mailserver + enter;
                if(!dialog(sendbufferstr,""))
                    return false;
            }

            //
            sendbufferstr="mail from:<" + from + ">" + enter;
            if(!dialog(sendbufferstr,"發件人地址錯誤"))
                return false;

            //
            sendbuffer=new string[10];
            for(int i=0;i<recipient.count;i++)
            {

                sendbuffer[i]="rcpt to:<" + recipient[i].tostring() +">" + enter;

            }
            if(!dialog(sendbuffer,"收件人地址有誤"))
                return false;

            sendbuffer=new string[10];
            for(int i=0;i<recipientbcc.count;i++)
            {

                sendbuffer[i]="rcpt to:<" + recipientbcc[i].tostring() +">" + enter;

            }
            if(!dialog(sendbuffer,"密件收件人地址有誤"))
                return false;

            sendbufferstr="data" + enter;
            if(!dialog(sendbufferstr,""))
                return false;

            sendbufferstr="from:" + fromname + "<" + from +">" +enter;
            sendbufferstr+="to:" + recipientname + "<" + recipient[0] +">" +enter;
            sendbufferstr+="cc:";
            for(int i=1;i<recipient.count;i++)
            {
                sendbufferstr+=recipient[i].tostring() + "<" + recipient[i].tostring() +">,";
            }
            sendbufferstr+=enter;


            if(replyto.trim()!="")
            {
                sendbufferstr+="reply-to: " + replyto + enter;
            }

            if(charset=="")
            {
                sendbufferstr+="subject:" + subject + enter;
            }
            else
            {
                sendbufferstr+="subject:" + "=?" + charset.toupper() + "?b?" + base64encode(subject) +"?=" +enter;
            }

            sendbufferstr+="mime-version: 1.0" + enter;

            if(html)
            {
                sendbufferstr+="content-type: text/html;" + enter;
            }
            else
            {
                sendbufferstr+="content-type: text/plain;" + enter;
            }

            if(charset=="")
            {
                sendbufferstr+="charset=/"iso-8859-1/"" + enter;
            }
            else
            {
                sendbufferstr+="charset=/"" + charset.tolower() + "/"" + enter;
            }

            sendbufferstr+="content-transfer-encoding: base64" + enter;
            sendbufferstr+="x-priority:" + priority + enter;
            sendbufferstr+="x-msmail-priority:" + priority + enter;
            sendbufferstr+="importance:" + priority + enter;
            sendbufferstr+="x-mailer: huolx.pubclass" + enter;
            sendbufferstr+= enter + enter;
            sendbufferstr+= base64encode(body) + enter;
            sendbufferstr+=enter + "." + enter;

            if(!dialog(sendbufferstr,"錯誤信件信息"))
                return false;


            sendbufferstr="quit" + enter;
            if(!dialog(sendbufferstr,"斷開連接時錯誤"))
                return false;


            ns.close();
            tc.close();
            return true;
        }


        /// <summary>
        /// 發送郵件方法,所有參數均通過屬性設置。
        /// </summary>
        public bool send()
        {
            if(recipient.count==0)
            {
                errmsg="收件人列表不能為空";
                return false;
            }

            if(recipientname=="")
                recipientname=recipient[0].tostring();

            if(mailserver.trim()=="")
            {
                errmsg="必須指定smtp服務器";
                return false;
            }

            return sendemail();
            
        }


        /// <summary>
        /// 發送郵件方法
        /// </summary>
        /// <param name="smtpserver">smtp服務器信息,如"username:[email protected]:25",也可去掉部分次要信息,如"www.smtpserver.com"</param>
        public bool send(string smtpserver)
        {
            
            maildomain=smtpserver;
            return send();
        }


        /// <summary>
        /// 發送郵件方法
        /// </summary>
        /// <param name="smtpserver">smtp服務器信息,如"username:[email protected]:25",也可去掉部分次要信息,如"www.smtpserver.com"</param>
        /// <param name="from">發件人mail地址</param>
        /// <param name="fromname">發件人姓名</param>
        /// <param name="replyto">回復郵件地址</param>
        /// <param name="to">收件人地址</param>
        /// <param name="toname">收件人姓名</param>
        /// <param name="html">是否html郵件</param>
        /// <param name="subject">郵件主題</param>
        /// <param name="body">郵件正文</param>
        public bool send(string smtpserver,string from,string fromname,string replyto,string to,string toname,bool html,string subject,string body)
        {
            maildomain=smtpserver;
            from=from;
            fromname=fromname;
            replyto=replyto;
            addrecipient(to);
            recipientname=toname;
            html=html;
            subject=subject;
            body=body;
            return send();
            
        }
    }
}
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 皋兰县| 罗定市| 桑日县| 容城县| 云霄县| 白玉县| 漯河市| 永丰县| 响水县| 永济市| 平乡县| 宝鸡市| 保康县| 灵石县| 安平县| 柳州市| 西乌珠穆沁旗| 新干县| 乐山市| 五台县| 雷州市| 桃园县| 太湖县| 隆德县| 微山县| 海口市| 图木舒克市| 定西市| 麦盖提县| 永州市| 美姑县| 延边| 谢通门县| 昌吉市| 楚雄市| 新邵县| 赣榆县| 尼玛县| 威宁| 土默特右旗| 藁城市|