.NET 关于TcpClient,StreamReader,NetworkStream和SMTP的问题?

hwj383 2010-03-31 07:19:05
目前在做一个关于使用TcpClinet和StreamReader,NetworkStream来发送邮件的功能(非.net自带的SmtpClient)
遇到了StreamReader.Peek()总是返回-1的问题.代码如下

 TcpClient tc = new TcpClient(host, port.HasValue ? port.Value : 25);
NetworkStream ns = tc.GetStream();
StreamReader sr = new StreamReader(ns);
string sendData = "EHLO " + host + "\r\n";//打招呼
byte[] sendByte = System.Text.Encoding.Default.GetBytes(sendData);
ns.Write(sendByte, 0, sendByte.Length);
while(sr.Peek()!=-1)//此处总是返回 -1
{
sr.ReadLine();//是可以读取到数据的.
}


如果使用sr.ReadToEnd()方法,则会停止响应似乎是在等待邮件服务器返回数据
采用 sr.EndOfStream ,ns.DataAvailable做为while也不行.

还是这种方法根本就有问题

下面是Telnet服务器返回:
220 163.com Anti-spam GT for Coremail System (163com[20090903])
EHLO smtp.163.com //打招呼
250-mail //实际上我想通过某种方式把下面6(不同Smtp服务器行数不同)行通过某种方式读取出来,然后判断返码,进行下一步操作
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFaxbCUUCa0xDr
UUUUj
250 8BITMIME
...全文
353 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
alaigo 2010-04-01
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100331/14/b33090a1-c062-42d1-bd2e-9e5298ace07a.html


谁顶下我的贴。我把分散了得了。不想无满意结贴~~~>_<~~~~
「已注销」 2010-04-01
  • 打赏
  • 举报
回复
我也顶顶顶....
wuyq11 2010-03-31
  • 打赏
  • 举报
回复
byte[] buffer = new byte[2];
int count = 0;
string str = "";
count = ns.Read(buffer, 0, buffer.Length);
str+= System.Text.Encoding.Default.GetString(buffer, 0, count);
while (count != 0 && ns.DataAvailable)
{
count = ns.Read(buffer, 0, buffer.Length);
}
  • 打赏
  • 举报
回复
 while(ns.DataAvailable)
{
sr.ReadLine();//是可以读取到数据的.
zhouzangood 2010-03-31
  • 打赏
  • 举报
回复
顶顶顶

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧