public bool Mime4NeParsert()
        {
            var parser = new MimeKit.MimeParser(Stream.Null);

            foreach (var stream in _streams)
            {
                var message = new NI.Email.Mime.Message.MimeMessage(stream, false);
                stream.Position = 0;
            }
            return(true);
        }
        public bool MimeKitParser()
        {
            var parser = new MimeKit.MimeParser(Stream.Null);

            foreach (var stream in _streams)
            {
                parser.SetStream(stream, true);
                parser.ParseMessage();
                stream.Position = 0;
            }
            return(true);
        }
Example #3
0
        static TimeSpan MeasureMimeKit(Stream stream, int count)
        {
            var parser    = new MimeKit.MimeParser(Stream.Null);
            var stopwatch = new Stopwatch();

            stopwatch.Start();
            for (int i = 0; i < count; i++)
            {
                parser.SetStream(stream, true);
                parser.ParseMessage();
                stream.Position = 0;
            }
            stopwatch.Stop();

            return(stopwatch.Elapsed);
        }
        private async Task DATAAsync(string line)
        {
            if (this._session.Recipients.Count == 0)
            {
                await this.SendAsync(GeneralBadSequenceOfCommands);

                return;
            }
            if (!this._inData)
            {
                await this.SendAsync("354 Start mail input; end with <CRLF>.<CRLF>");

                this._inData = true;
                return;
            }
            if (line == ".")
            {
                this._inData = false;
                //parse the message here
                var bytes = Encoding.UTF8.GetBytes(string.Join("\r\n", this._session.Data));
                using (var stream = new MemoryStream(bytes))
                {
                    var x       = new MimeKit.MimeParser(stream);
                    var headers = await x.ParseHeadersAsync();

                    var subject = headers[MimeKit.HeaderId.Subject];
                    this.Logger.LogInformation("Message received: From={from} To={to} Subject={subject}", this._session.MailFrom, string.Join(",", this._session.Recipients), subject);
                    this._session.Subject = subject ?? string.Empty;
                }

                await this.SendAsync(GeneralOk);

                this.Logger.LogInformation("Message received!");

                await this._serviceStore.StoreMessageAsync(this._session);
            }
            else
            {
                this._session.Data.Add(line);
            }
        }