Basically, just read the file record-by-record searching for the matching header strings and when find a section header, then read that section type data until run out of those. At that point, check for which section header string it is that you just found to handle those.
Issues are if sections are all there, but aren't necessarily in same order or if the file can/does contain multiple email messages that encompass more than one dataset so you can have the same header multiple times and in different orders. Not enough info provided to know just how complicated your search logic must be.
If the files aren't too big, probably the easiest way will be to suck the whole thing up into a cellstr() or string() array and use ismember and/or contains to find the header positions globally first and then iterate through those indices to handle each section in turn.
Obviously the sample file also isn't complete enough to have any information about the actual data so how to parse it iwhen do locate it is yet to be resolved as well...
More questions yet than answers, but the general idea is "just search for the needle in the haystack" Sometimes it's a silver needle, sometimes gold.