Unfortunately, it seems the Gmail reformat the whole message when it is sent from Draft. So some headers are removed, Message-Id header is changed, BodyHtml is reformatted.
The only place where to persist some kind of Guid to identify the message later seems to be Subject, Body and Attachments.
The following code finds the mail sent from Drafts:
// generate Guid to identify the message
string guid = Guid.NewGuid().ToString();
// prepare new draft
MailMessage mail = new MailMessage();
mail.To = "some@domain";
mail.Subject = "Test mail";
mail.BodyHtml = string.Format("This is a test <div style=color:white>{0}</div>", guid);
// store draft in Gmail Drafts
imap.StoreMessage("[Gmail]/Drafts", mail);
// do some other work, or persist the guid somewhere
// in the meantime, message is sent from [Gmail]/Drafts and moved to [Gmail]/Sent Mail
// search for the message identified with the Guid in Gmail Sent mails
imap.SelectFolder("[Gmail]/Sent Mail");
ImapMessageCollection col = imap.Search(ImapSearchParameter.Body(guid));
foreach (ImapMessageInfo item in col)
{
Console.WriteLine(item.Subject);
}
Regarding tools like SpamAssassin, I don't think that one Guid within the Body will lead to flagging your mail as a spam. But it is possible that using white text on white background will be suspicious for SpamAssassin.