WEB开发网
开发学院软件开发C语言 C#开发基于ESMTP协议的邮件发送系统经验总结 阅读

C#开发基于ESMTP协议的邮件发送系统经验总结

 2010-09-30 21:02:02 来源:WEB开发网   
核心提示:用过C#内置的SMTP类的朋友大概知道,使用它发送邮件的时候,C#开发基于ESMTP协议的邮件发送系统经验总结,有时候总是出现莫名奇妙的错误,有时候可以发送成功,进而获得交互响应的模式进行的,如要连接SMTP服务器,有时候说用户帐号验证失败,即使你设置了帐号验证信息

用过C#内置的SMTP类的朋友大概知道,使用它发送邮件的时候,有时候总是出现莫名奇妙的错误,有时候可以发送成功,有时候说用户帐号验证失败,即使你设置了帐号验证信息,问题依旧,特别是在你使用QQ邮箱(好像163的用SMTP发送比较正常),基本上使用SMTP对象来发送邮件是不可能的事情,后来查询了一些资料,说QQ的协议好像是ESMTP协议了,也就是加强版的SMTP协议,不知道是不是,反正用QQ邮件的人比较多,发送的问题就比较突出了。

特别是我的软件“QQ号码采集及邮件发送系统”,之前一直使用SMTP类来处理邮件的发送,客户反映QQ邮件发送不成功的问题就特别突出,但是当时不知道如何处理这个问题,晚上找了很多资料,问题依旧,甚是头痛。先看看我这个邮件发送软件的界面先。

C#开发基于ESMTP协议的邮件发送系统经验总结

图片看不清楚?请点击这里查看原图(大图)。

这个软件目前已经实现了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
            {
                ReturnValue = Encoding.Default.GetString(ReadBuffer).Substring(0, StreamSize).Trim(); ;
                //logs+=ReturnValue;
                return ReturnValue;
            }
        }

1 2  下一页

Tags:开发 基于 ESMTP

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接