测试smtp连接是否正常
private bool CheckSmtp(string smtpServer, int port, string username, string password)
{
TcpClient tcpClient = new TcpClient(smtpServer, port);
NetworkStream stream = tcpClient.GetStream();
if (!WaiteFor(stream, "220")) return false;
SendCommand(stream, "HELO 211.152.50.xxx\r\n");
if (!WaiteFor(stream, "250")) return false;
SendCommand(stream, "AUTH LOGIN\r\n");
if (!WaiteFor(stream, "334")) return false;
SendCommand(stream, Base64Encode(username) + "\r\n");
if (!WaiteFor(stream, "334")) return false;
SendCommand(stream, Base64Encode(password) + "\r\n");
if (!WaiteFor(stream, "235")) return false;
return true;
}
private bool WaiteFor(NetworkStream stream, string strCode)
{
int StreamSize;
byte[] ReadBuffer = new byte[1024];
StreamSize = stream.Read(ReadBuffer, 0, ReadBuffer.Length);
string Returnvalue = Encoding.Default.GetString(ReadBuffer).Substring(0, StreamSize);
Console.WriteLine(Returnvalue);
return Returnvalue.Substring(0, 3).Equals(strCode);
}
private void SendCommand(NetworkStream stream, string strCmd)
{
byte[] WriteBuffer;
WriteBuffer = Encoding.Default.GetBytes(strCmd);
stream.Write(WriteBuffer, 0, WriteBuffer.Length);
}
private string Base64Encode(string str)
{
byte[] barray;
barray = Encoding.Default.GetBytes(str);
return Convert.ToBase64String(barray);
}