项目中后台通过exchange online 自动发送邮件。代码如下:
using system.net.mail
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress("a@abc.com.cn"));
msg.From = new MailAddress("a@abc.com.cn");
msg.Subject = "自动推送";
msg.Body = "自动推送内容";
msg.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = false;
client.Credentials = new System.Net.NetworkCredential("c@abc.com.cn", "xxxxxxx");
client.Port = 587;
client.Host = "smtp.partner.outlook.cn";
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.EnableSsl = true;
client.Send(msg);
以上开发环境下 win7+vs2010+.net 4.0 测试通过 没有任何问题。
但是 项目发布后(win2003 + iis6 + .net 4),运行报错:

调试了下 发现错误代码是发生在client.Send(msg) 这一句。结合出错信息,网上搜索了下大概意思是协议出错。说需要升级到4.5。2以上版本支持tsl 协议。 4.0/4.5版本的只是支持ssl和tls1.0 要升级到4.5以上的版本 才支持tls 1.2或更高
但是我调试了下邮件服务器。对方使用的安全协议为 starttls,应该是ssl和tls 都支持 的 但我不知道邮件服务器安全协议的具体版本
我的开发环境。net版本和发布后的web服务器。net都是4.0 为什么开发环境测试通过 发布环境就不行?
nn