【问题标题】:SMTP Connect with Socket and SSL使用 Socket 和 SSL 的 SMTP 连接
【发布时间】:2013-09-21 06:25:46
【问题描述】:

我正在尝试使用 C# 中的套接字创建一个简单的 SMTP 客户端,这就是我所拥有的:

 static void Main(string[] args)
    {
        try
        {
            Socket socket;
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // connect to the SMTP server
            socket.Connect(new IPEndPoint(Dns.GetHostEntry("smtp.gmail.com").AddressList[0], int.Parse("587")));
            PrintRecv(socket);
            SendCommand(socket, string.Format("HELO {0}\r\n", Dns.GetHostName()));
            SendCommand(socket, "STARTTLS\r\n");
            Console.WriteLine("Done");

        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        Console.ReadKey();
    }
    static void SendCommand(Socket socket, string com)
    {
        Console.WriteLine(">>>" + com);
        socket.Send(Encoding.UTF8.GetBytes(com));
        PrintRecv(socket);
    }
    static void PrintRecv(Socket socket)
    {
        byte[] buffer = new byte[500];
        socket.Receive(buffer);
        Console.WriteLine("<<<" + Encoding.UTF8.GetString(buffer, 0, buffer.Length));
    }

如您所见,我正在使用 GMAIL,它需要使用 SSL...我的问题是当我尝试像这样使用 SSLStream 时:

Stream s = GenerateStreamFromString("quit\r\n");
            SslStream ssl = new SslStream(s); //All OK until here
            ssl.AuthenticateAsClient(System.Environment.MachineName);// <<< MY PROBLEM

我想我并不完全理解这个 SslStream,我搜索了很多(在 MSDN 上看到了那些例子)...... 简单来说,我需要知道如何设置这个 SslStream 以在 SMTP 上使用。

【问题讨论】:

  • 您没有为此利用内置类有什么特别的原因吗?
  • 我使用套接字这样做的主要原因是为了充分了解 SMTP 的工作原理
  • 您可以做到这一点,而无需了解 SSL 的工作原理。最好专注于目标而不是所有可能性。
  • 这只是因为我从 gmail 开始,并且它没有非 SSL SMTP
  • 坚持目标,另一种电子邮件服务可能会使学习变得更容易。但如果这不是您所追求的,RFC 可能会很有帮助。

标签: c# .net sockets ssl smtp


【解决方案1】:

当您尝试进行身份验证时,您尚未指定共享 SslStream 的服务器。您将其保留为您的机器名称。

解决方案看起来像这样

SslStream secureStream = new SslStream(new NetworkStream(ClientSocket));
secureStream.AuthenticateAsClient("smtp.gmail.com");

如果它工作正常,您应该能够使用流重新发送 HELO 并接收如下输出: 250-smtp.gmail.com at your service

【讨论】:

    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2014-01-21
    • 2020-06-24
    相关资源
    最近更新 更多