Your code doesn't look right.
To request read receipt you only need to use RequestReadReceipt method on MailBuilder when you create an email:
MailBuilder builder = new MailBuilder();
builder.From.Add(new MailBox("alice@example.com", "Alice"));
builder.To.Add(new MailBox("bob@example.com", "Bob"));
builder.Subject = "Please let me know if you like it";
builder.Html= "("<html>....</html>"";
builder.RequestReadReceipt();
IMail email = builder.Create();
Now you (Alice) should send this message (to Bob).
RequestReadReceipt adds certain headers to the message (Disposition-Notification-To, Return-Receipt-To and X-Confirm-Reading-To).
This way the recipient (Bob's email client) knows, that when message is read (by Bob), it should create a read receipt and send it back to the sender (Alice).
Please note that read receipt requests may not always work. Recipient mail client may not recognize those special headers; it may lack this feature at all or that functionality may be turned off.
Read receipt are also know as MDNs or Message Delivery Notifications.
When you (as Bob) receive a message, you need to check if it contains a read request - use IMail.GetReadReceiptAddresses:
IMail mail = ... // this is the email Alice sent to Bob
List<MailBox> addresses = mail.GetReadReceiptAddresses();
if (addresses.Count > 0)
{
// Read receipt was requested (by Alice)
}
Now you know you want to create read receipt (as Bob) for particular email (received from Alice) - you should use ReadReceiptBuilder class for that:
IMail mail = ... // this is the email Alice sent to Bob
ReadReceiptBuilder mdnBuilder = new ReadReceiptBuilder(mail);
MailBuilder builder = mdnBuilder.WasDisplayed(new MailBox("bob@example.com"));
IMail mdn = builder.Create();
Now you (Bob) should send this read receipt back (to Bob).