2016-03-30 9 views
1

Я пытаюсь отправить электронное письмо с BCC с помощью SMTP-клиента. Я использую версию .net 4.5. Код ниже успешно отправляет электронное письмо на адрес, но адрес BCC полностью игнорируется без ошибок.MailMessage отправлен с SmtpClient - BCC не работает

 var fromAddress = new MailAddress("[email protected]"); 
     var bccAddress = new MailAddress("[email protected]mail.com"); 

     var toAddress = new MailAddress("[email protected]"); 
     const string fromPassword = "mypass"; 

     var smtp = new SmtpClient 
     { 

      Host = "smtp.office365.com", 
      Port = 587, 
      EnableSsl = true, 
      DeliveryMethod = SmtpDeliveryMethod.Network, 
      UseDefaultCredentials = false, 
      Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
     }; 

     var message = new MailMessage(fromAddress, toAddress); 
     message.IsBodyHtml = true; 
     message.Subject = email.EmailSubject; 
     message.Body = email.EmailBody; 
     message.Bcc.Add(bccAddress); 

     smtp.Send(message); 

Я что-то упустил?

+0

проверить почтовый заголовок, как отправить это письмо в gmail и проверить его заголовки –

+0

вы отправляете фактический адрес BCC, и вы его не получили? код выглядит отлично. как вы думаете, вы не отправили BCC, потому что письмо, отправленное на адрес TO, не отображает сообщение BCC? – workabyte

+0

@RaviSharma Я сделал это, но ничего не выглядит необычным, поскольку BCC по умолчанию не отображается в заголовке. – user3340627

ответ

1

Я заметил, что все ваши переменные объявлены как «var», а не их типы данных. Что происходит, когда вы делаете это явным?

MailAddress fromAddress = new MailAddress("[email protected]"); 
    MailAddress bccAddress = new MailAddress("[email protected]"); 

    MailAddress toAddress = new MailAddress("[email protected]"); 
    const string fromPassword = "mypass"; 

    SmtpClient smtp = new SmtpClient 
    { 

     Host = "smtp.office365.com", 
     Port = 587, 
     EnableSsl = true, 
     DeliveryMethod = SmtpDeliveryMethod.Network, 
     UseDefaultCredentials = false, 
     Credentials = new NetworkCredential(fromAddress.Address, fromPassword) 
    }; 

    MailMessage message = new MailMessage(fromAddress, toAddress); 
    message.IsBodyHtml = true; 
    message.Subject = email.EmailSubject; 
    message.Body = email.EmailBody; 
    message.Bcc.Add(bccAddress); 

    try 
    { 
     smtp.Send(message); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error sending: " + ex.ToString()); 
    } 

Вы также можете установить точку останова после Bcc.Add для проверки объекта сообщения, чтобы увидеть, что текущий MailAddressCollection содержит.

+0

Большое спасибо за ваш ответ. Это оказалось проблемой почтового ящика, что значительно задерживало отправленное письмо. – user3340627

+1

Это определенно бывает иногда. Это немного раздражает, когда вы полагаетесь на стороннюю систему во время тестирования. Однако по-прежнему лучше использовать явные типы данных или, по крайней мере, типы интерфейсов (если применимо). Кроме того, часть об осмотре на контрольных точках помогает, если вы не уверены в присвоении значений. –

+0

Это правда. Я поддерживаю этот ответ, потому что он может помочь кому-то другому – user3340627

0

Оказалось, что проблема с почтовым ящиком значительно задерживает получение электронной почты.