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); }
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); } }