I created a test application and ran SmptForDev to capture any emails coming out of my local IIS. I used the code below and it works great. All I really did with your code is order, and everything works fine. I also decompiled System.Net.Mail.SmtpClient to see what it does under the hood, the addresses of the address and Bcc are all in the same collection, if one address sends this well, to assume that they are all there.
public void SendEmailMessage(string fromAddress, string toAddress, string subject, string body, IEnumerable<string> ccAddress, IEnumerable<string> bccAddress, string filepath) { using (var mailClient = new SmtpClient()) { var mailMessage = new MailMessage(fromAddress, toAddress); foreach (var email in ccAddress) { mailMessage.CC.Add(new MailAddress(email)); } foreach (var email in bccAddress) { mailMessage.Bcc.Add(new MailAddress(email,"Matty Boy")); } mailMessage.Priority = MailPriority.Normal; mailMessage.Subject = subject; if (!string.IsNullOrEmpty(filepath)) { var attachment = new Attachment(filepath, MediaTypeNames.Application.Octet); mailMessage.Attachments.Add(attachment); } var plainTextView = AlternateView.CreateAlternateViewFromString(GetTextonly(body), null, "text/plain"); var htmlView = AlternateView.CreateAlternateViewFromString(body, null, "text/html"); mailMessage.AlternateViews.Add(plainTextView); mailMessage.AlternateViews.Add(htmlView); mailClient.Send(mailMessage); } }

source share