Is there an easy (consistent) way to extract only the last message from the mail body and not all previous replies/forwards/etc.
It depends on whether the structure has been maintained in the MIME source of the email. The email.Body property will return the first plain-text or HTML body encountered in the email. If the previous replies/forwards are maintained in the MIME as separate MIME parts, then the Body property will return only the last message. However, some email programs glob them together in a single MIME part. For example, have a look at this MIME:
Subject: RE: This is a test email
X-MimeOLE: Produced By Microsoft Exchange V6.5.6944.0
Date: Tue, 4 Dec 2007 14:02:05 -0000
Thread-Topic: This is a test email
From: "Test Support" <email@example.com>
To: "Chilkat" <firstname.lastname@example.org>
This is a multi-part message in MIME format.
The boundary of the first MIME sub-part is —-_=_NextPart_003_01C8367E.40AA7030
The content looks as if it has multiple parts, but the string —–Original=20Message—– is not part of the MIME structure of this message. Therefore the Body property contains all of this text. The original replies have all been globbed into a single MIME part. Therefore, your application will need to parse it — if it so chooses. The reason Chilkat cannot parse it is because there is no way of knowing what separator string may have been used. There is nothing to programmatically indicate that "—–Original=20Message—–" is a separator.