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
}
ただし、GmailのSMTPサーバーのように、TLSを必要とする接続ではおそらく機能しません。
STARTTLS
SMTPコマンドを使用するなど、明示的なSSL接続を介してこの種の交換を行う簡単な方法はありますか?私はSSLプロトコルについてあまり知りませんし、自分の実装を書き込もうとして行き詰まりたくないのは確かです。クラスなどを使ってSslStream
データを送信する方法があるといいのですが。