2016-03-30 8 views
1

SMTPクライアントを使用してBCCで電子メールを送信しようとしています。私は.netバージョン4.5を使用しています。以下のコードは、宛先アドレスに電子メールを正常に送信しますが、BCCアドレスは完全に無視され、エラーは発生しません。SmtpClientで送信されたMailMessage - BCCが機能しない

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

私に何かが不足していますか?

+0

checkこのメールをgmailに送信し、そのヘッダーを確認してください。 –

+0

実際のBCCアドレスに送信していますが、それを取得していませんか?コードは正常に見えます。 TOアドレスに送信された電子メールにBCC電子メールが表示されないため、あなたは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()); 
    } 

また、現在のMailAddressCollectionが含まれているかを確認するメッセージオブジェクトを検査するBcc.Add後にブレークポイントを設定することができます。

+0

あなたの答えにはありがたいです。メールボックスの問題であることが判明し、送信された電子メールが大幅に遅延していました。 – user3340627

+1

これは間違いなく時々起こります。テスト中にサードパーティのシステムに頼っていると、ちょっと面倒です。 ただし、明示的なデータ型、または少なくともインタフェースタイプ(該当する場合)を使用することが最良の方法です。また、ブレークポイントの検査については、値の割り当てについて確実ではない場合に役立ちます。 –

+0

それは本当です。私はこの回答をupvoting誰か他の人を助けるかもしれないので – user3340627

0

これはメールボックスの問題であることが判明し、メールの受信が大幅に遅れていました。

関連する問題