From 0dc6b2be3c2148c20ef6802782bc4b95f8e490f8 Mon Sep 17 00:00:00 2001 From: Fabien Bondi Date: Mon, 30 Jul 2018 17:47:58 +0700 Subject: [PATCH 1/2] Enhance Fetch to support fetch of all headers. --- MailKit/Net/Imap/ImapFolderFetch.cs | 57 +++++++++++++++++------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/MailKit/Net/Imap/ImapFolderFetch.cs b/MailKit/Net/Imap/ImapFolderFetch.cs index acaa4a4f7e..3c4e532f82 100644 --- a/MailKit/Net/Imap/ImapFolderFetch.cs +++ b/MailKit/Net/Imap/ImapFolderFetch.cs @@ -443,28 +443,37 @@ string FormatSummaryItems (ref MessageSummaryItems items, HashSet fields } if ((items & MessageSummaryItems.References) != 0 || fields != null) { - var headers = new StringBuilder ("BODY.PEEK[HEADER.FIELDS ("); - bool references = false; - - if (fields != null) { - foreach (var field in fields) { - var name = field.ToUpperInvariant (); - - if (name == "REFERENCES") - references = true; - - headers.Append (name); - headers.Append (' '); - } - } - - if ((items & MessageSummaryItems.References) != 0 && !references) - headers.Append ("REFERENCES "); - - headers[headers.Length - 1] = ')'; - headers.Append (']'); - - tokens.Add (headers.ToString ()); + if (fields?.Count == 0) + { + tokens.Add("BODY.PEEK[HEADER]"); + } + else + { + var headers = new StringBuilder("BODY.PEEK[HEADER.FIELDS ("); + bool references = false; + + if (fields != null) + { + foreach (var field in fields) + { + var name = field.ToUpperInvariant(); + + if (name == "REFERENCES") + references = true; + + headers.Append(name); + headers.Append(' '); + } + } + + if ((items & MessageSummaryItems.References) != 0 && !references) + headers.Append("REFERENCES "); + + headers[headers.Length - 1] = ')'; + headers.Append(']'); + + tokens.Add(headers.ToString()); + } } if (tokens.Count == 1) @@ -672,8 +681,8 @@ async Task> FetchAsync (IList uids, MessageSumm if (fields == null) throw new ArgumentNullException (nameof (fields)); - if (fields.Count == 0) - throw new ArgumentException ("The set of header fields cannot be empty.", nameof (fields)); + //if (fields.Count == 0) + // throw new ArgumentException ("The set of header fields cannot be empty.", nameof (fields)); CheckState (true, false); From 801096c9f5e0eab989cf0308bfae2216edf2bfb9 Mon Sep 17 00:00:00 2001 From: Fabien Bondi Date: Mon, 30 Jul 2018 18:02:36 +0700 Subject: [PATCH 2/2] Fix CodingStyle --- MailKit/Net/Imap/ImapFolderFetch.cs | 59 +++++++++++++---------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/MailKit/Net/Imap/ImapFolderFetch.cs b/MailKit/Net/Imap/ImapFolderFetch.cs index 3c4e532f82..b9e593e238 100644 --- a/MailKit/Net/Imap/ImapFolderFetch.cs +++ b/MailKit/Net/Imap/ImapFolderFetch.cs @@ -443,37 +443,32 @@ string FormatSummaryItems (ref MessageSummaryItems items, HashSet fields } if ((items & MessageSummaryItems.References) != 0 || fields != null) { - if (fields?.Count == 0) - { - tokens.Add("BODY.PEEK[HEADER]"); - } - else - { - var headers = new StringBuilder("BODY.PEEK[HEADER.FIELDS ("); - bool references = false; - - if (fields != null) - { - foreach (var field in fields) - { - var name = field.ToUpperInvariant(); - - if (name == "REFERENCES") - references = true; - - headers.Append(name); - headers.Append(' '); - } - } - - if ((items & MessageSummaryItems.References) != 0 && !references) - headers.Append("REFERENCES "); - - headers[headers.Length - 1] = ')'; - headers.Append(']'); - - tokens.Add(headers.ToString()); - } + if (fields?.Count == 0) + tokens.Add ("BODY.PEEK[HEADER]"); + else { + var headers = new StringBuilder ("BODY.PEEK[HEADER.FIELDS ("); + bool references = false; + + if (fields != null) { + foreach (var field in fields) { + var name = field.ToUpperInvariant (); + + if (name == "REFERENCES") + references = true; + + headers.Append (name); + headers.Append (' '); + } + } + + if ((items & MessageSummaryItems.References) != 0 && !references) + headers.Append ("REFERENCES "); + + headers[headers.Length - 1] = ')'; + headers.Append (']'); + + tokens.Add (headers.ToString ()); + } } if (tokens.Count == 1) @@ -681,8 +676,6 @@ async Task> FetchAsync (IList uids, MessageSumm if (fields == null) throw new ArgumentNullException (nameof (fields)); - //if (fields.Count == 0) - // throw new ArgumentException ("The set of header fields cannot be empty.", nameof (fields)); CheckState (true, false);