Esempio n. 1
0
        public void Do(Session session)
        {
            session.Message = new MailMessage();

            session.Message.From = new MailAddress(SmtpMailVerbUtils.ParseValue(session.Commands.Last()));

            session.Socket.SendString(SmtpCommandUtils.SV_OK);
        }
Esempio n. 2
0
        public void Do(Session session)
        {
            // for readability
            var socket = session.Socket;

            socket.SendString(SmtpCommandUtils.SV_DATA_OK);
            
            socket.CommandSeperator = "\r\n.\r\n";
            string rawMessage = socket.GetNextCommand();
            socket.CommandSeperator = "\r\n";

            string encoding = SmtpMailVerbUtils.ParseMessageValue(rawMessage, "Content-Transfer-Encoding");
            string subject = SmtpMailVerbUtils.ParseMessageValue(rawMessage, "Subject");
            string body = SmtpMailVerbUtils.ParseMessageBody(rawMessage);

            if (string.IsNullOrEmpty(body) || string.IsNullOrEmpty(subject))
            {
                socket.SendString(SmtpCommandUtils.SV_UNKNOWN);
            }
            else
            {
                session.Message.Body = body;
                session.Message.Subject = subject;

                // adjust for encoding

                if (encoding == "quoted-printable")
                {
                    // hack for quoted-printable decoding
                    // only does white space
                    session.Message.Body = session.Message.Body.Replace("=0A", "\n");
                    session.Message.Body = session.Message.Body.Replace("=0D", "\r");
                }


                // all done with getting the data
                session.TriggerMessage(session.Message);

                socket.SendString(SmtpCommandUtils.SV_OK);
            }
        }