string strServerName = "";//邮件服务器名
string strUserName = "";//用户名
string strPassWord = ""; //密码
StringBuilder strBuildeMailMessage = new StringBuilder();
int numberOfBytesRead = 0;
int length = 1024 * 10;
byte[] buttfer = new byte[length];
TcpClient tp = new TcpClient(strServerName, 110);
tp.ReceiveTimeout = 1000 * 300;
NetworkStream ns = tp.GetStream();
ns.ReadTimeout = 1000 * 300;
ns.Read(buttfer, 0, buttfer.Length); byte[] outbytes = System.Text.Encoding.ASCII.GetBytes("user " + strUserName + "\r\n");
ns.Write(outbytes, 0, outbytes.Length);
numberOfBytesRead = ns.Read(buttfer, 0, buttfer.Length);
strBuildeMailMessage.Append(System.Text.Encoding.ASCII.GetString(buttfer, 0, numberOfBytesRead)); strBuildeMailMessage = new StringBuilder();
outbytes = System.Text.Encoding.ASCII.GetBytes("pass " + strPassWord + "\r\n");
ns.Write(outbytes, 0, outbytes.Length);
numberOfBytesRead = ns.Read(buttfer, 0, buttfer.Length);
strBuildeMailMessage.Append(System.Text.Encoding.ASCII.GetString(buttfer, 0, numberOfBytesRead));
Regex re = new Regex(@"(?<=has\s+)[\d]+(?=\s+messages)");
int num = int.Parse(re.Match(strBuildeMailMessage.ToString()).Value.Trim());
List<string> emailList = new List<string>();
for (int i = 1; i <= num; i++)
{
strBuildeMailMessage = new StringBuilder();
outbytes = System.Text.Encoding.ASCII.GetBytes("retr " + i.ToString() + "\r\n");
ns.Write(outbytes, 0, outbytes.Length);
Thread.Sleep(800);
while (ns.DataAvailable)
{
numberOfBytesRead = ns.Read(buttfer, 0, buttfer.Length);
strBuildeMailMessage.Append(System.Text.Encoding.ASCII.GetString(buttfer, 0, numberOfBytesRead));
}
emailList.Add(strBuildeMailMessage.ToString());
}
outbytes = System.Text.Encoding.ASCII.GetBytes("quit\r\n");
ns.Write(outbytes, 0, outbytes.Length);
TcpClient tcp=new TcpClient("pop.gmail.com",110);//这句异常
异常内容:(我哪里是不是写错了)
由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。 74.125.155.109:110
tcp.Connected的值是false,没有连接上啊...该怎么解决啊
string strUserName = "";//用户名
string strPassWord = ""; //密码
StringBuilder strBuildeMailMessage = new StringBuilder();
int numberOfBytesRead = 0;
int length = 1024 * 10;
byte[] buttfer = new byte[length];
TcpClient tp = new TcpClient(strServerName, 995);
tp.ReceiveTimeout = 1000 * 300;
NetworkStream ns = tp.GetStream();
ns.ReadTimeout = 1000 * 300;
ns.Read(buttfer, 0, buttfer.Length);将端口修改为995,测试连接状态为true你试试
NetWorkStream nwStream=tcp.GetStream();//这一句有异常
异常内容是:
不允许对非连接的套接字执行此操作。
请赐教!
EnableBroadcast “tcp.Client.EnableBroadcast”引发了“System.Net.Sockets.SocketException”类型的异常 bool {System.Net.Sockets.SocketException}
能不能写些代码看看啊,
strBuilderMailMessage.ToString() 的值是""空啊
smtp/pop3/imap 都是用 ssl 协议的,端口分别为:465
995
993建立 tcp 连接后, 要立马进行 ssl 协商, 获得一个 ssl stream, 才开始正常通讯
if (m_useSSL)
{
// Create an SSL stream that will close the client's stream.
SslStream sslStream = new SslStream(
networkStream,
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
null
);
try
{
if (null != _proxy)
sslStream.AuthenticateAsClient(_proxy.TargetHost);
else
sslStream.AuthenticateAsClient(sHost);
}
catch (System.Security.Authentication.AuthenticationException e)
{
string lastError = e.Message;
if (e.InnerException != null)
{
lastError += Environment.NewLine + e.InnerException.Message;
}
OnLog(LogType.ERROR, lastError);
_networkStream.Close();
return ImapResponseEnum.IMAP_FAILURE_RESPONSE;
} _networkStream = sslStream;
}//end of usessl