【发布时间】:2015-03-18 03:25:31
【问题描述】:
我尝试为不支持 SSL 的旧应用程序编写一个“Mailbridge”(我知道缓冲区对于完整邮件来说太小了)。 (应用程序连接到“localhost”/我的服务器,我的服务器连接到真正的 SSL 邮件服务器)我的问题:
{
TcpClient tcpClient = (TcpClient)client;
NetworkStream clientStream = tcpClient.GetStream();
TcpClient sslmail = new TcpClient();
SslStream sslStream;
sslmail.Connect(server, sslport);
sslStream = new SslStream(sslmail.GetStream());
sslStream.AuthenticateAsClient(server);
byte[] buffer = new byte[4096];
int bytes=0;
while((sslmail.Connected) && (tcpClient.Connected))
{
try
{
Array.Clear(buffer, 0, buffer.Length);
bytes=sslStream.Read(buffer, 0, buffer.Length);
MessageBox.Show("To Client: "+Encoding.ASCII.GetString(buffer, 0, bytes));
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
Array.Clear(buffer, 0, buffer.Length);
bytes=clientStream.Read(buffer, 0, buffer.Length);
MessageBox.Show("To Server: "+Encoding.ASCII.GetString(buffer, 0, bytes));
sslStream.Write(buffer, 0, buffer.Length);
sslStream.Flush();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
/////////////////////////////////////
}
sslmail.Close();
tcpClient.Close();
}
连接有效:
To Client: +OK POP server ready H migmx018 0LaT8c-1ZFbyb06RD-00m4N0
To Server: USER xxxxxx
To Client: +OK password required for user "xxxxxx"
就是这样,现在它“挂”在
bytes=clientStream.Read(buffer, 0, buffer.Length);
testet 与 Windows Live Mail,然后我使用了自己的简单邮件应用程序,但如果我发送“PASS mypass”,服务器返回“-ERR 未知命令”(使用服务器:pop.gmx.net) (使用 Windows Livemail 直接连接到服务器没有问题)
【问题讨论】: