首页 > 编程知识 正文

c语言语法大全手册,b级车

时间:2023-05-06 06:56:50 阅读:114834 作者:4102

使用过C#内置SMTP系统的朋友应该知道,用它发送邮件时,有时会出现奇怪的错误,有时发送成功,有时用户帐户验证失败。 设置帐户验证信息不会改变问题。 特别是当你使用QQ邮件地址发送邮件时,基本上不可能使用SMTP对象发送邮件。 然后,我们检查了一些资料,发现QQ的协议似乎是ESMTP协议,也就是增强版的SMTP协议。 不知道是不是,总之很多人都使用QQ邮件,所以发送的问题很突出。 特别是我的软件“QQ号码收集和邮件发送系统”,以前就使用SMTP类处理邮件的发送。 客户的QQ邮件发送不顺利这一问题尤为突出,但当时不知道如何处理这个问题,晚上找了很多资料。 问题仍然是,我非常头痛。 先看看我这个邮件发送软件的接口吧。 该软件现在实现了ESMTP协议的大量发送功能,测试显示163个支持ESMTP协议,许多SMTP提供程序可能支持该接口。 对他们来说,这是一个更安全、垃圾邮件更少的协议,所以似乎有些像我们日常所说的“实名制”规则。 与SMTP类发送邮件不同,ESMTP以流方式向服务器发送TCP/IP命令并获得交互式响应的模式进行。 要连接到SMTP服务器,请首先使用以下代码进行连接: //连接到网络

特里

{

TC=new TCP客户端(邮件服务器,邮件服务器端口);

}

catch (Exceptione )

{

errmsg=e.ToString (;

返回假;

}

ns=tc.GetStream (; ///summary

接收SMTP服务器的响应

////summary

保护性字符串recv响应(

{

int StreamSize;

字符串返回值=' false ';

byte [ ]读取缓冲器=new byte [ 4096 ];

特里

{

stream size=ns.read (读缓冲器,0,读缓冲器. length );

}

广告宣传

{

errmsg='网络连接错误';

返回返回值;

}

if (流大小==0) ) ) )。

{

返回返回值;

}

else

{

return value=encoding.default.getstring (read buffer ).Substring(0) 0,StreamSize ).Trim );

//logs=返回值;

返回返回值;

}

}收到成功响应后,向服务发送请求命令或数据以完成其他操作。 发送命令的函数是以写入网络流的方式通过以下命令实现的///summary

发送SMTP命令

////summaryg

t;     
         protected   bool  SendCommand( string  Command)
        {
             byte [] WriteBuffer;
             if  (Command  ==   null   ||  Command.Trim()  ==   "" )
            {
                 return   true ;
            }
             // logs+=Command;
            WriteBuffer  =  Encoding.Default.GetBytes(Command);
             try
            {
                ns.Write(WriteBuffer,  0 , WriteBuffer.Length);
            }
             catch
            {
                errmsg  =   " 网络连接错误 " ;
                 return   false ;
            }
             return   true ;
        } ESMTP的特点就是需要验证用户,一旦验证用户通过后,用户就可以通过发送各类命令或者数据了,下面简单列出几个命令格式,其他的大家可以查询相关资料进行完成。              // 发件人信息
            SendBufferstr  =   " MAIL FROM:< "   +  From  +   " > "   +  enter;
             if  ( ! Dialog(SendBufferstr,  " 发件人地址错误,或不能为空 " ))
                 return   false ;

             // 收件人列表
            SendBuffer.Clear();
             foreach  (String item  in  Recipient)
            {
                SendBuffer.Add( " RCPT TO:< "   +  item  +   " > "   +  enter);
                RecipientName  =  item; // 这里其实只能支持一个收件人
            }
             if  ( ! Dialog(SendBuffer,  " 收件人地址有误 " ))
                 return   false ; 使用这个发送邮件,连最难对付的QQ邮箱也飞快的接收到了我的邮件了,不过大家不要滥发邮件,毕竟“实名制”的方式就是要对后果负责的。呵呵。 本文转自博客园dddst的博客,原文链接:C#开发基于ESMTP协议的邮件发送系统经验总结,如需转载请自行联系原博主。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。