2016-03-30 4 views
1

Ich versuche, eine E-Mail mit BCC mit SMTP-Client zu senden. Ich benutze .net Version 4.5. Der folgende Code sendet die E-Mail erfolgreich an die Adresse, aber die BCC-Adresse wird vollständig ohne Fehler ignoriert.MailMessage mit SmtpClient gesendet - BCC funktioniert nicht

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

     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); 

Fehle ich etwas?

+0

check E-Mail-Header wie diese E-Mail an Gmail senden und überprüfen Sie die Header –

+0

Sie senden an eine tatsächliche BCC-Adresse und Sie haben es nicht bekommen? Der Code sieht gut aus. Denken Sie, dass Sie nicht an BCC gesendet haben, weil die E-Mail, die an die Adresse gesendet wurde, die BCC-E-Mail nicht anzeigt? – workabyte

+0

@RaviSharma Ich tat es, aber nichts sieht ungewöhnlich aus, da das BCC nicht standardmäßig im Header angezeigt wird. – user3340627

Antwort

1

Ich habe festgestellt, dass alle Ihre Variablen als "var" anstelle ihrer Datentypen deklariert sind. Was passiert, wenn Sie es explizit machen?

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()); 
    } 

Sie können auch einen Haltepunkt nach dem Bcc.Add stellen Sie die Nachricht Objekt zu untersuchen, um zu sehen, was die aktuelle MailAddressCollection enthält.

+0

Vielen Dank für Ihre Antwort. Es stellte sich heraus, dass es sich um ein Mailbox-Problem handelte, das die gesendete E-Mail erheblich verzögerte. – user3340627

+1

Das passiert manchmal manchmal. Es ist ein bisschen ärgerlich, wenn man sich beim Testen auf ein System eines Drittanbieters verlässt. Es ist jedoch immer noch die beste Methode, explizite Datentypen oder zumindest Schnittstellentypen (falls zutreffend) zu verwenden. Auch der Teil über die Inspektion an Haltepunkten hilft sehr, wenn Sie sich über die Wertzuweisung nicht sicher sind. –

+0

Das stimmt. Ich bin diese Antwort upvoting, weil es jemand anderen helfen kann – user3340627

0

Es stellte sich heraus, dass es sich um ein Postfachproblem handelte, das den Empfang der E-Mail erheblich verzögerte.

Verwandte Themen