在当前项目中,我被要求通过“ Helo”的响应来检查与Smtp服务器的连接(“ Ehlo”也可以,实际上,我可以听听任何可以确认连接的建议)。我问Google是否有一些简单的方法可以等效于在C#中键入这两个简单的命令。我在使用TcpClient进行一些编码方面有一点经验,所以我知道如何将字符串作为字节数据发送。

telnet smtp.gmail.com 465
helo localhost


但是.... NET的SmtpClient类似乎没有Stream成员!在这种情况下,如何发送命令?

最佳答案

使用TcpClient连接到远程端口,然后将helo localhost命令作为ASCII字符字符串发送。

        TcpClient client = new TcpClient("smtp.gmail.com", 465);

        var stream = client.GetStream();

        var bytes = Encoding.ASCII.GetBytes("localhost helo");

        stream.Write(bytes, 0, bytes.Length);


但是,我相信端口465用于安全通信,因此您需要使用SSL或端口25。

09-27 13:58