2

我想通过 SMTP 服务器发送电子邮件,但不想使用内置SmtpClient类,因为它不能对电子邮件标头提供太多控制。

我发现了一个在 .NET 中发送 SMTP 邮件的示例,基本上可以归结为:

string server = "smtp.server.com";
int port = 25;

IPHostEntry host = Dns.GetHostEntry(server);
IPEndPoint endPt = new IPEndPoint(host.AddressList[0], port);

using (Socket s = new Socket(endPt.AddressFamily, SocketType.Stream, ProtocolType.Tcp)) {
    s.Connect(endPt);

    Action<string> Senddata = (string msg) => {
        byte[] _msg = Encoding.ASCII.GetBytes(msg);
        s.Send(_msg, 0, _msg.Length, SocketFlags.None);
    };

    Senddata("HELO " + server);
    // Rest of email data elided
}

但大概这不适用于需要 TLS 的连接,例如 Gmail 的 SMTP 服务器。

有没有一种直接的方法可以通过显式 SSL 连接进行这种交换,例如使用STARTTLSSMTP 命令?我对 SSL 协议了解不多,当然也不想陷入尝试编写自己的实现的困境。我希望有一种方法可以使用SslStream类或其他东西来发送数据。

4

0 回答 0