在Visual Studio中用SMTP配置CC/BCC失败:收件人未收到邮件求助
解决SMTP抄送(CC)/密送(BCC)未收到邮件的问题
先看你贴的代码,我发现了几个直接影响邮件发送的关键点:
- 你虽然定义了
CC和Bcc这两个MailAddress对象,但完全没把它们添加到myMessage对应的CC/BCC集合里——就像你注释掉的那行myMessage.CC.Add(...),这才是让抄送生效的关键步骤,BCC也需要同样的操作。 - 另外你把发件人设为
user_email,很多SMTP服务器会严格验证发件人是否属于该服务器授权的账户,这种“借用”用户邮箱发件的操作很容易被拦截。
修正后的可运行代码示例
' 先初始化邮件对象 Dim myMessage As New MailMessage() ' 发件人建议用SMTP服务器授权的官方邮箱,比如你的平台邮箱 myMessage.From = New MailAddress("official@mypage.com") ' 添加主收件人(网站管理员) myMessage.To.Add(New MailAddress("info@mypage.com")) ' 正式添加抄送地址 Dim ccAddr As New MailAddress("assistant@mypage.com") myMessage.CC.Add(ccAddr) ' 正式添加密送地址 Dim bccAddr As New MailAddress(user_email) myMessage.Bcc.Add(bccAddr) ' 配置SMTP客户端并发送(根据你的服务器信息调整) Using smtpClient As New SmtpClient("your-smtp-server.com") smtpClient.Port = 587 ' 常用SSL端口,也可能是465或25,看服务器要求 smtpClient.Credentials = New System.Net.NetworkCredential("smtp-username", "smtp-password") smtpClient.EnableSsl = True ' 大多数现代SMTP服务器要求SSL Try smtpClient.Send(myMessage) Catch ex As SmtpException ' 捕获错误方便调试,比如输出到日志或控制台 Console.WriteLine($"邮件发送失败:{ex.Message}") End Try End Using
额外排查方向
- 检查垃圾邮件文件夹: 很多时候CC/BCC邮件会被收件方的邮箱系统误判为垃圾邮件,先让收件人去垃圾箱看看。
- SMTP服务器权限: 确认你的SMTP服务器允许发送CC/BCC,并且发件人账号有足够的发送权限,不要随便用用户邮箱当发件人。
- 调试错误信息: 一定要捕获
SmtpException,里面会包含服务器返回的具体错误(比如认证失败、中继被拒绝),这比瞎试写法有用多了。
内容的提问来源于stack exchange,提问作者user2825094
相关产品推荐
相关产品推荐

