在POP3上收邮件问题。 System.Text.Encoding.Default改成System.Text.Encoding..GetEncoding("gb2312")试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像是不行呀。public class POP3 { string POPServer; string user; string pwd; NetworkStream ns; StreamReader sr; public POP3(){} public POP3(string server, string _user, string _pwd) { POPServer = server; user = _user; pwd = _pwd; } private void Connect() { TcpClient sender = new TcpClient(POPServer,110); byte[] outbytes; string input; try { ns = sender.GetStream(); //sr = new StreamReader(ns); sr = new StreamReader(ns,System.Text.Encoding.GetEncoding("gb2312"));//好像光这样不行。能不能全部用ascii读出来后转成gb sr.ReadLine(); //Console.WriteLine(sr.ReadLine() ); input = "user " + user + "\r\n"; outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray()); ns.Write(outbytes,0,outbytes.Length) ; sr.ReadLine(); //Console.WriteLine(sr.ReadLine() ); input = "pass " + pwd + "\r\n"; outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray()); ns.Write(outbytes,0,outbytes.Length) ; sr.ReadLine(); //Console.WriteLine(sr.ReadLine() ); } catch(InvalidOperationException ioe) { Console.WriteLine("Could not connect to mail server"); } } private void Disconnect() { string input = "quit" + "\r\n"; byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray()); ns.Write(outbytes,0,outbytes.Length); //Console.WriteLine(sr.ReadLine() ); ns.Close(); } public int GetNumberOfNewMessages() { byte[] outbytes; string input; try { Connect(); input = "stat" + "\r\n"; outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray()); ns.Write(outbytes,0,outbytes.Length); string resp = sr.ReadLine(); //Console.WriteLine(resp); string[] tokens = resp.Split(new Char[] {' '}); Disconnect(); return Convert.ToInt32(tokens[1]); } catch(InvalidOperationException ioe) { Console.WriteLine("Could not connect to mail server"); return 0; } } public ArrayList GetNewsMessageSubject() { int newcount; ArrayList sub=new ArrayList(); try { newcount = GetNumberOfNewMessages(); Connect(); for(int n=1; n<newcount+1; n++) { ArrayList msglines = GetRawMessage(n); string msgsubj = GetMessageSubject(msglines); sub.Add(msgsubj); } Disconnect(); return sub; } catch(Exception e) { Console.WriteLine(e.ToString() ); Console.ReadLine(); return sub; } } private ArrayList GetRawMessage (int messagenumber) { byte[] outbytes; string input; string line = ""; input = "retr " + messagenumber.ToString() + "\r\n"; outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray()); ns.Write(outbytes,0,outbytes.Length); ArrayList msglines = new ArrayList(); do { line = sr.ReadLine(); msglines.Add(line); } while (line != "."); msglines.RemoveAt(msglines.Count-1); return msglines; } private string GetMessageSubject(ArrayList msglines) { string[] tokens; IEnumerator msgenum = msglines.GetEnumerator(); while (msgenum.MoveNext() ) { string line = (string)msgenum.Current; if(line.StartsWith("Subject:") ) { tokens = line.Split(new Char[] {' '}); return tokens[1].Trim(); } } return "None"; } private string GetMessageFrom (ArrayList msglines) { string[] tokens; IEnumerator msgenum = msglines.GetEnumerator(); while (msgenum.MoveNext() ) { string line = (string)msgenum.Current; if(line.StartsWith("Return-Path:") ) { tokens = line.Split(new Char[] {'<'}); return tokens[1].Trim(new Char[] {'<','>'}); } } return "None"; } } treeView1窗体控件问题 超简单的问题100分奉上,如不够再加100。请大家帮帮忙! 求:动态生成各种验证码的C#代码 运算符“==”无法应用于“string”和“int”类型的操作数 初学C#问个简单的问题 WinForm中DataGrid如何锁定列? 高手相助!! c#查询分页,手头有一个Sqlserver的方法,谁帮我写一个Oracle版的呗,谢谢~~! 第一次用C# 怎么取当前目录的上一层目录呀 .NET开发工具选择:Visio studio.net 还是C# Builder好些?请同行们指点 求winform简捷美观的界面原码,有菜单栏和工具栏
public class POP3
{
string POPServer;
string user;
string pwd;
NetworkStream ns;
StreamReader sr; public POP3(){} public POP3(string server, string _user, string _pwd)
{
POPServer = server;
user = _user;
pwd = _pwd;
} private void Connect()
{
TcpClient sender = new TcpClient(POPServer,110);
byte[] outbytes;
string input; try
{
ns = sender.GetStream();
//sr = new StreamReader(ns);
sr = new StreamReader(ns,System.Text.Encoding.GetEncoding("gb2312"));//好像光这样不行。能不能全部用ascii读出来后转成gb sr.ReadLine();
//Console.WriteLine(sr.ReadLine() ); input = "user " + user + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length) ;
sr.ReadLine();
//Console.WriteLine(sr.ReadLine() ); input = "pass " + pwd + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length) ;
sr.ReadLine();
//Console.WriteLine(sr.ReadLine() );
}
catch(InvalidOperationException ioe)
{
Console.WriteLine("Could not connect to mail server");
}
} private void Disconnect()
{
string input = "quit" + "\r\n";
byte[] outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);
//Console.WriteLine(sr.ReadLine() );
ns.Close();
} public int GetNumberOfNewMessages()
{
byte[] outbytes;
string input; try
{
Connect(); input = "stat" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length);
string resp = sr.ReadLine();
//Console.WriteLine(resp);
string[] tokens = resp.Split(new Char[] {' '}); Disconnect(); return Convert.ToInt32(tokens[1]);
}
catch(InvalidOperationException ioe)
{
Console.WriteLine("Could not connect to mail server");
return 0;
}
} public ArrayList GetNewsMessageSubject()
{
int newcount;
ArrayList sub=new ArrayList();
try
{
newcount = GetNumberOfNewMessages();
Connect();
for(int n=1; n<newcount+1; n++)
{
ArrayList msglines = GetRawMessage(n);
string msgsubj = GetMessageSubject(msglines);
sub.Add(msgsubj);
}
Disconnect();
return sub;
}
catch(Exception e)
{
Console.WriteLine(e.ToString() );
Console.ReadLine();
return sub;
}
} private ArrayList GetRawMessage (int messagenumber)
{
byte[] outbytes;
string input;
string line = ""; input = "retr " + messagenumber.ToString() + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes,0,outbytes.Length); ArrayList msglines = new ArrayList();
do
{
line = sr.ReadLine();
msglines.Add(line);
} while (line != ".");
msglines.RemoveAt(msglines.Count-1); return msglines;
}
private string GetMessageSubject(ArrayList msglines)
{
string[] tokens;
IEnumerator msgenum = msglines.GetEnumerator();
while (msgenum.MoveNext() )
{
string line = (string)msgenum.Current;
if(line.StartsWith("Subject:") )
{
tokens = line.Split(new Char[] {' '});
return tokens[1].Trim();
}
}
return "None";
}
private string GetMessageFrom (ArrayList msglines)
{
string[] tokens;
IEnumerator msgenum = msglines.GetEnumerator();
while (msgenum.MoveNext() )
{
string line = (string)msgenum.Current;
if(line.StartsWith("Return-Path:") )
{
tokens = line.Split(new Char[] {'<'});
return tokens[1].Trim(new Char[] {'<','>'});
}
}
return "None";
}
}