Hello,
1) removing the signature is possible with the code below:
MailMessage mail = new MailMessage();
// load mail
mail.Load(@"C:\temp\mail.eml");
if (mail.IsSigned)
mail.RemoveSignature();
2) Actually when replying to an email, there are many possibilities on how to include the previous email into the reply (e.g. various possible formattings). Different email clients can use different formattings. Also imagine the old-school style - writing the reply into the previous email answering individual questions one by one - this is also perfectly legitimate and still used by some people. So the task to understand the email chain history is equal to the task of automating text comprehension which is not something that we would like to build into the Rebex Secure Mail library which is a component library for sending, receiving and parsing emails on "lower" level.
Modern email clients like Gmail try to chain the messages (we guess that they implement rules to parse the most common types of replies), however, they might have problems with unusual types of replies. This is not such a big problem because the human user can clearly see that something went wrong with the recognition and they can revert to the plain email body and ignore the failing recognition. But what would happen in a component library? No one is there to differentiate between a good and bad output.
So that is why there is no direct support for the history funcionality and we also do not plan to add this feature.
I guess you already asked us once at the forum, so to sum it up we currently do not have such feature and the task has to be programmed on top of Rebex Secure Mail by you, please see the link to the stack overflow forum post on how to implement this functionality yourself. Sorry!
3) Received headers of the email could be used to determine the orifinating server. When email gets sent every SMTP server along the way should add a Received header with information about itself. So in the last Received header you can find the first SMTP server. The only trouble I can think of is how to determine the difference between the email being sent from a browser Gmail versus email which was sent via Gmail SMTP from an SMTP client, like Rebex SMTP.
Here is the code which lists all the Received header of an incoming email. The originating server's header is the last one in the list:
var message = imap.GetMailMessage(sequenceNumber);
foreach (MimeHeader header in message.Headers)
{
if (header.Name == "Received")
Console.WriteLine(header);
}
Another header which you could take into account when determining the originating server is the "DKIM-Signature" header which is basically a signature used to verify that the email was actually sent by the server as is, and not by someone else.