/// <summary> /// Constructor /// </summary> /// <param name="FieldText">Field text</param> public Field(string FieldText) { if (string.IsNullOrEmpty(FieldText)) { throw new ArgumentNullException(); } int Index = FieldText.IndexOf(':'); if (Index != -1) { Name = FieldText.Substring(0, Index); } ++Index; FieldText = FieldText.Substring(Index, FieldText.Length - Index).Trim(); string[] Splitter = { ";" }; string[] Attributes = FieldText.Split(Splitter, StringSplitOptions.RemoveEmptyEntries); foreach (string AttributeText in Attributes) { Code TempCode = CodeManager.Instance[Name]; if (TempCode != null) { string TempText = ""; TempCode.Decode(AttributeText, out TempText); this.Attributes.Add(new Attribute(TempText)); CharacterSet = TempCode.CharacterSet; } else { this.Attributes.Add(new Attribute(AttributeText)); } } }
/// <summary> /// Constructor /// </summary> /// <param name="Input">Body text</param> /// <param name="Header">Header of the message</param> public MIMEBody(string Input, MIMEHeader Header) { if (string.IsNullOrEmpty(Input)) { throw new ArgumentNullException("Input can not be null"); } MediaEnum ContentType; ContentType = GetMediaType(Header); if (MediaEnum.MEDIA_MULTIPART == ContentType) { string CurrentBoundry = GetBoundryMarker(Header); if (string.IsNullOrEmpty(CurrentBoundry)) { return; } CurrentBoundry = CurrentBoundry.Replace("\"", ""); string BoundryStart = "--" + CurrentBoundry; string BoundryEnd = BoundryStart + "--"; int StartIndex = Input.IndexOf(BoundryStart, 0); if (StartIndex == -1) { return; } int EndIndex = Input.IndexOf(BoundryEnd, 0); if (EndIndex == -1) { EndIndex = Input.Length; } Content = Input.Substring(0, StartIndex); while (StartIndex < EndIndex) { StartIndex += BoundryStart.Length + 2; if (StartIndex >= EndIndex) { break; } int TempIndex = Input.IndexOf(BoundryStart, StartIndex); if (TempIndex != -1) { Boundries.Add(new MIMEMessage(Input.Substring(StartIndex, TempIndex - StartIndex))); } else { break; } StartIndex = TempIndex; } } else { Content = Input; } string Encoding = ""; try { Encoding = Header[Constants.TransferEncoding].Attributes[0].Value; } catch { Encoding = Constants.Encoding7Bit; } Code CodeUsing = CodeManager.Instance[Encoding]; CodeUsing.CharacterSet = Header[Constants.ContentType][Constants.Charset]; CodeUsing.Decode(Content, out _Content); }