public override void Parse(ref IList <MIMER.RFC822.Field> fields, ref string fieldString) { if (fields.Count == 0) { DecoratedFieldParser.Parse(ref fields, ref fieldString); } IList <RFC822.Field> tmpFields = new List <RFC822.Field>(); foreach (RFC822.Field field in fields) { if (field.Name.Equals("Content-Disposition")) { Match typeMatch, tmpMatch; string key, val; typeMatch = m_DispositionTypePattern.RegularExpression.Match(field.Body); MatchCollection parameterMatches = m_DispositionPattern.RegularExpression.Matches(field.Body); ContentDispositionField dispositionField = new ContentDispositionField(); dispositionField.Name = field.Name; dispositionField.Body = field.Body; dispositionField.Disposition = typeMatch.Value; foreach (Match parameterMatch in parameterMatches) { tmpMatch = Regex.Match(parameterMatch.Value, m_TokenPattern.TextPattern + "="); key = tmpMatch.Value.TrimEnd(new char[] { '=' }); tmpMatch = Regex.Match(parameterMatch.Value, "(?<==)" + m_ValuePattern.TextPattern); val = tmpMatch.Value.Trim(new char[] { '\\', '"' }); dispositionField.Parameters.Add(key, val); } tmpFields.Add(dispositionField); } } foreach (RFC822.Field field in tmpFields) { fields.Add(field); } }
public static bool IsInline(this ContentDispositionField field) { return(field.Disposition.ToLower().Equals("inline")); }
public static bool IsAttachment(this ContentDispositionField field) { return(field.Disposition.ToLower().Equals("attachment")); }