我試圖使用TcpClient類連接到smtp.live.com。在這裏有一個很好的連接到Gmail的例子:Testing SMTP server is running via C#使用TcpClient類連接到smtp.live.com
不幸的是,當更新這個工作與smtp.live.com,我得到一個「IOException:由於意外的數據包格式握手失敗」 AuthenticateAsClient方法被調用。
我該如何解決這個問題?
class Program
{
static void Main(string[] args)
{
using (var client = new TcpClient())
{
var server = "smtp.live.com";
var port = 25;
client.Connect(server, port);
using (var stream = client.GetStream())
using (var sslStream = new SslStream(stream))
{
// Getting an IOException here
sslStream.AuthenticateAsClient(server);
using (var writer = new StreamWriter(sslStream))
using (var reader = new StreamReader(sslStream))
{
writer.WriteLine("EHLO " + server);
writer.Flush();
Console.WriteLine(reader.ReadLine());
}
}
}
Console.WriteLine("Press Enter to exit...");
Console.ReadLine();
}
}
我試過在AuthenticateAsClient中指定SslProtocol。 Tls或Ssl3都沒有工作。
還試圖提供RemoteCertificateValidation的回調,一直返回true,以防萬一服務器證書無效。那也行不通。
注意:請不要建議我使用SmtpClient;我需要比它提供的更多的控制。
你需要什麼樣的控制是'SmtpClient'不提供? – jgauffin 2011-06-07 18:51:38
我正在創建一個SMTP代理,它將支持來自我們內部不支持TLS/SSL的一些程序的未加密連接。 SMTP代理服務器將接受來自這些程序的連接,並將信息轉發到需要TLS/SSL的smtp.live.com服務器。 – 2011-06-08 12:42:14
爲什麼你不能使用SmtpClient進行出站連接?聽起來只有代理中的inbount連接需要定製。 – jgauffin 2011-06-08 12:55:49