public static bool TryParse(string s, out SpfRecord value) { if (String.IsNullOrEmpty(s) || !s.StartsWith("v=spf1 ")) { value = null; return false; } string[] terms = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); value = new SpfRecord { Terms = new List<SpfTerm>() }; for (int i = 1; i < terms.Length; i++) { SpfTerm term; if (SpfTerm.TryParse(terms[i], out term)) { value.Terms.Add(term); } else { value = null; return false; } } return true; }
private IEnumerable <Message> GetMessages(SpfRecord record) { List <Message> messages = new List <Message>(); if (record != null) { foreach (Term term in record?.Terms) { if (term is Include include) { if (include.Records?.Messages != null) { messages.AddRange(include.Records?.Messages); } List <SpfRecord> childRecords = include.Records?.Records; List <Message> childMessages = new List <Message>(); if (childRecords != null && childRecords.Count > 0) { foreach (SpfRecord childRecord in childRecords) { IEnumerable <Message> childRecordMessages = GetMessages(childRecord); if (childRecordMessages != null) { childMessages.AddRange(childRecordMessages); } } } messages.AddRange(childMessages); } } } return(messages); }
public DomainSpfRecord(string domain, SpfRecord record) { Domain = domain; Record = record; }