Библиотека Papercut не сможет упростить поведение, которое вы ищете, потому что каждый раз, когда вы вызываете Send
, оно разрывает текущее соединение, устанавливает другое соединение с сервером и в любом случае выполняет рукопожатие. Вот источник из их хранилища CodePlex:
public void Send()
{
string response;
Connect(session.Sender, 25);
response = Response();
if (response.Substring(0, 3) != "220")
throw new SmtpException(response);
Write("HELO {0}\r\n", Util.GetIPAddress());
response = Response();
if (response.Substring(0, 3) != "250")
throw new SmtpException(response);
Write("MAIL FROM:<{0}>\r\n", session.MailFrom);
response = Response();
if (response.Substring(0, 3) != "250")
throw new SmtpException(response);
session.Recipients.ForEach(address =>
{
Write("RCPT TO:<{0}>\r\n", address);
response = Response();
if (response.Substring(0, 3) != "250")
throw new SmtpException(response);
});
Write("DATA\r\n");
response = Response();
if (response.Substring(0, 3) != "354")
throw new SmtpException(response);
NetworkStream stream = GetStream();
stream.Write(session.Message, 0, session.Message.Length);
Write("\r\n.\r\n");
response = Response();
if (response.Substring(0, 3) != "250")
throw new SmtpException(response);
Write("QUIT\r\n");
response = Response();
if (response.IndexOf("221") == -1)
throw new SmtpException(response);
}
Конечно, вы можете изменить источник, чтобы сделать то, что вы есть, считая его открытым исходным кодом.