public void TestSetup() { m_EndOfMessageStrategy = new BasicEndOfMessageStrategy(); m_Reader = new MailReader(); char[] ar = MIMERTests.Strings.MailMessage1.ToCharArray(); byte[] bar = Array.ConvertAll <char, byte>(ar, new Converter <char, byte>( delegate(char input) { return((byte)input); })); m_Stream = new MemoryStream(bar); StringBuilder builder = new StringBuilder(); for (int i = 0; i < 100; i++) { builder.Append(MIMERTests.Strings.MailMessage1); } var multiMessageBytes = from char c in builder.ToString() select Convert.ToByte(c); m_MultiMessageStream = new MemoryStream(multiMessageBytes.ToArray()); m_EmptyStream = new MemoryStream(); IEnumerable <byte> mailMessageWithAttachmentBytes = from char c in Strings.MailMessageWithAttachment select Convert.ToByte(c); m_AttachmentStream = new MemoryStream(mailMessageWithAttachmentBytes.ToArray()); m_EmbeddedMessagaesStream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes( MIMERTests.Strings.MailMessageWithRecursivlyEmbeddedMessage)); m_EmbeddedWithAttachmentsStream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes( MIMERTests.Strings.MailMessageWithEmbeddedWithAttachments)); }
public MailReader() { m_FieldParser = new FieldParser(); m_FieldParser.CompilePattern(); m_Criterias = new List <IEndCriteriaStrategy>(); m_EndOfLineStrategy = new EndOfLineStrategy(); m_NullLineStrategy = new NullLineStrategy(); }
public IMimeMailMessage ReadMimeMessage(ref Stream dataStream, IEndCriteriaStrategy endOfMessageCriteria) { m_EndOfMessageStrategy = endOfMessageCriteria; if (dataStream == null) { throw new ArgumentNullException("dataStream"); } m_BytesRead = 0; m_Source = new StringBuilder(); IList <RFC822.Field> fields; // 读消息头 int cause = ParseFields(ref dataStream, out fields); if (fields.Count == 0) { return(new NullMessage()); } Message m = new Message(); m.Fields = fields; if (cause < 1) { return(m); } // 判断是文本邮件还是多媒体邮件 if (isMIME(ref fields)) { string delimiter = ParseMessage(ref dataStream, ref m, fields); } else { IMailMessage im = m as IMailMessage; base.ReadBody(ref dataStream, ref im); } m.Source = m_Source.ToString(); m_Source = null; return(m as IMimeMailMessage); }
public IMailMessage Read(ref Stream dataStream, IEndCriteriaStrategy endOfMessageCriteria) { m_BytesRead = 0; m_EndOfMessageStrategy = endOfMessageCriteria; Message m = new Message(); IMailMessage im = m as IMailMessage; m_Source = new StringBuilder(); IList <RFC822.Field> fields; int cause = ParseFields(ref dataStream, out fields); m.Fields = fields; if (cause > 0) { ReadBody(ref dataStream, ref im); } m.Source = m_Source.ToString(); return(m); }
public IMailMessage Read(ref System.IO.Stream dataStream, IEndCriteriaStrategy endOfMessageCriteria) { m_EndOfMessageCriteria = endOfMessageCriteria; m_BytesRead = 0; Message m = new Message(); IMailMessage im = m as IMailMessage; m_Source = new StringBuilder(); var result = m_FieldParser.ParseFields(ref dataStream, new DataReader(endOfMessageCriteria)); m.Fields = result.Data; if (result.FulfilledCritera >= 0) { ReadBody(ref dataStream, ref im); } m.Source = m_Source.ToString(); return(m); }
/// <summary> /// Reads and parses a mail message from the supplied Stream. /// </summary> /// <param name="dataStream">The Stream to read from. </param> /// <param name="endOfMessageCriteria">The refereance to the object which can determine /// the end of a message.</param> /// <returns>A new IMailMessage.</returns> public new IMailMessage Read(ref System.IO.Stream dataStream, IEndCriteriaStrategy endOfMessageCriteria) { return(ReadMimeMessage(ref dataStream, endOfMessageCriteria) as IMailMessage); }
/// <summary> /// Reads and parses a mail message from the supplied Stream. /// </summary> /// <param name="dataStream">The Stream to read from. </param> /// <param name="endOfMessageCriteria">The refereance to the object which can determine /// the end of a message.</param> /// <returns>A new IMimeMailMessage.</returns> public IMimeMailMessage ReadMimeMessage(ref System.IO.Stream dataStream, IEndCriteriaStrategy endOfMessageCriteria) { m_EndOfMessageCriteria = endOfMessageCriteria; if (dataStream == null) throw new ArgumentNullException("dataStream"); m_BytesRead = 0; m_Source = new StringBuilder(); IList<MIMER.RFC822.Field> fields; int cause = ParseFields(ref dataStream, out fields); if (fields.Count == 0) return new NullMessage(); Message m = new Message(); m.Fields = fields; if (cause < 0) { return m as IMimeMailMessage; } if (isMIME(ref fields)) { string delimiter = ParseMessage(ref dataStream, ref m, fields); } else { IMailMessage im = m as IMailMessage; base.ReadBody(ref dataStream, ref im); } m.Source = m_Source.ToString(); m_Source = null; return m as IMimeMailMessage; }
/// <summary> /// Reads and parses a mail message from the supplied Stream. /// </summary> /// <param name="dataStream">The Stream to read from. </param> /// <param name="endOfMessageCriteria">The refereance to the object which can determine /// the end of a message.</param> /// <returns>A new IMailMessage.</returns> public new IMailMessage Read(ref System.IO.Stream dataStream, IEndCriteriaStrategy endOfMessageCriteria) { return ReadMimeMessage(ref dataStream, endOfMessageCriteria) as IMailMessage; }
public void TestSetup() { m_EndOfMessageStrategy = new BasicEndOfMessageStrategy(); m_Reader = new MailReader(); char[] ar = MIMERTests.Strings.MailMessage1.ToCharArray(); byte[] bar = Array.ConvertAll<char, byte>(ar, new Converter<char, byte>( delegate(char input) { return (byte)input; })); m_Stream = new MemoryStream(bar); StringBuilder builder = new StringBuilder(); for (int i = 0; i < 100; i++) { builder.Append(MIMERTests.Strings.MailMessage1); } var multiMessageBytes = from char c in builder.ToString() select Convert.ToByte(c); m_MultiMessageStream = new MemoryStream(multiMessageBytes.ToArray()); m_EmptyStream = new MemoryStream(); IEnumerable<byte> mailMessageWithAttachmentBytes = from char c in Strings.MailMessageWithAttachment select Convert.ToByte(c); m_AttachmentStream = new MemoryStream(mailMessageWithAttachmentBytes.ToArray()); m_EmbeddedMessagaesStream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes( MIMERTests.Strings.MailMessageWithRecursivlyEmbeddedMessage)); m_EmbeddedWithAttachmentsStream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes( MIMERTests.Strings.MailMessageWithEmbeddedWithAttachments)); }