private string GetFileNameFromSessionInfo(SmtpSessionInfo sessionInfo)
        {
            var fileName = sessionInfo.CreatedTimestamp.ToString("yyyy-MM-dd_HHmmss_fff") + ".eml";
            var fullName = Path.Combine(_mailDir, fileName);

            return(fullName);
        }
        public override SmtpResponse DataEnd(SmtpSessionInfo sessionInfo)
        {
            var fileName = GetFileNameFromSessionInfo(sessionInfo);
            var size     = GetFileSize(fileName);

            Console.WriteLine("Mail received ({0} bytes): {1}", size, fileName);

            var successMessage = String.Format("{0} bytes received", size);
            var response       = SmtpResponse.OK.CloneAndChange(successMessage);

            return(response);
        }
        public override SmtpResponse DataLine(SmtpSessionInfo sessionInfo, byte[] lineBuf)
        {
            var fileName = GetFileNameFromSessionInfo(sessionInfo);

            Console.WriteLine("{0} <<< {1}", fileName, Encoding.UTF8.GetString(lineBuf));

            using (var stream = File.OpenWrite(fileName))
            {
                stream.Seek(0, SeekOrigin.End);
                stream.Write(lineBuf, 0, lineBuf.Length);

                stream.WriteByte(13);
                stream.WriteByte(10);
            }

            return(SmtpResponse.None);
        }
 public SmtpResponse DataEnd(SmtpSessionInfo sessionInfo)
 {
     return(SmtpResponse.OK);
 }
 public SmtpResponse DataLine(SmtpSessionInfo sessionInfo, byte[] lineBuf)
 {
     _mailData.AppendLine(Encoding.UTF8.GetString(lineBuf));
     return(SmtpResponse.None);
 }
 public SmtpResponse DataStart(SmtpSessionInfo sessionInfo)
 {
     return(SmtpResponse.DataStart);
 }
 public override SmtpResponse DataStart(SmtpSessionInfo sessionInfo)
 {
     Console.WriteLine("Start receiving mail: {0}", GetFileNameFromSessionInfo(sessionInfo));
     return(SmtpResponse.DataStart);
 }