I just spent 5 hours debugging a similar problem, and the solution I found may be the solution to this problem also. Since no one has posted any other solutions I will contribute my findings.
There seem to be a subtle bug in the .NET2.0 Mail API which causes encoding of Recipient names in the mail headers to fail. This occurs if the To property (and possibly others) of the MailMessage instance is accessed before the message is sent.
The following example will cause the To header to be sent without encoding, causing at least my mail client to display the name as "??????...":
MailMessage message = new MailMessage();
message.To.Add(new MailAddress("[email protected]", "ÆØÅ Unicode Name"));
message.Subject = "Subject";
message.Body = "Body";
Console.WriteLine(message.To[0]);
smtpClient.Send(message);
However moving the WriteLine below the send line, causes the To header to be correctly encoded:
MailMessage message = new MailMessage();
message.To.Add(new MailAddress("[email protected]", "ÆØÅ Unicode Name"));
message.Subject = "Subject";
message.Body = "Body";
smtpClient.Send(message);
Console.WriteLine(message.To[0]);
I assume this bug will occur on the Cc and Bcc properties as well, so beware of this.
Hope anyone finds this useful.