public bool Send(string sFrom, List <string> lstRecipients, string sSubject, string sBody) { if (!m_oSocket.Connect(_ipaddress, _port)) { return(false); } // Receive welcome message. string sData = m_oSocket.Receive(); m_oSocket.Send("HELO 127.0.0.1\r\n"); sData = m_oSocket.Receive(); // User m_oSocket.Send("MAIL FROM:<" + sFrom + ">\r\n"); sData = m_oSocket.Receive(); string sCommaSeparatedRecipients = ""; foreach (string sRecipient in lstRecipients) { m_oSocket.Send("RCPT TO:<" + sRecipient + ">\r\n"); sData = m_oSocket.Receive(); if (!sData.StartsWith("250")) { return(false); } if (sCommaSeparatedRecipients.Length > 0) { sCommaSeparatedRecipients += ", "; } sCommaSeparatedRecipients += sRecipient; } // Select inbox m_oSocket.Send("DATA\r\n"); sData = m_oSocket.Receive(); if (sCommaSeparatedRecipients.Length > 5000) { sCommaSeparatedRecipients = sCommaSeparatedRecipients.Substring(0, 5000); } m_oSocket.Send("From: " + sFrom + "\r\n"); m_oSocket.Send("To: " + sCommaSeparatedRecipients + "\r\n"); m_oSocket.Send("Subject: " + sSubject + "\r\n"); m_oSocket.Send("Date: " + Utilities.GetCurrentMIMEDateTime() + "\r\n"); m_oSocket.Send("\r\n"); // Send body m_oSocket.Send(sBody); m_oSocket.Send("\r\n"); m_oSocket.Send(".\r\n"); // Wait for OK. sData = m_oSocket.Receive(); if (sData.Substring(0, 3) != "250") { return(false); } // Quit again m_oSocket.Send("QUIT\r\n"); sData = m_oSocket.Receive(); m_oSocket.Disconnect(); return(true); }