我想通过SMTP服务器发送电子邮件,但不想使用内置的SmtpClient
类,因为它无法控制电子邮件标头。
我发现an example of sending SMTP mail in .NET基本上归结为:
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连接进行此类交换的直接方式,例如使用STARTTLS
SMTP命令?我不太了解SSL协议,当然也不想陷入困境,试图编写自己的实现。我希望有一种方法可以使用SslStream
类或其他东西来发送数据。